MediaWiki: Common.js - MediaWiki:Common.js

Примечание: После сохранения вам нужно обойти кеш браузера, чтобы увидеть изменения. Гугл Хром, Fire Fox, Microsoft Edge и Сафари: Удерживайте ⇧ Shift ключ и щелкните Перезагрузить кнопка панели инструментов. Подробные сведения и инструкции о других браузерах см. Википедия: Обход кеша.
/** * Сведите код в MediaWiki: Common.js к минимуму, поскольку это безусловно * загружается для всех пользователей на каждой странице вики. Если возможно, создайте гаджет, который * включен по умолчанию, а не здесь (так как гаджеты полностью * оптимизированы модули ResourceLoader с возможностью добавления зависимостей и т. д.) * * Поскольку Common.js не является гаджетом, его негде объявить * зависимости, поэтому мы должны лениво загружать их с помощью mw.loader.using по запросу и * затем выполнить остальное в обратном вызове. В большинстве случаев эти зависимости будут * быть загруженным (или загружающимся) уже, и обратный вызов не будет отложен. В случае если * dependency еще не прибыл, он позаботится о том, чтобы они были загружены до этого. *// * глобальный mw, $ * // * jshint strict: false, browser: true * /mw.грузчик.с помощью( [ 'mediawiki.util' ] ).сделано( функция () {	/ * Начало mw.loader. с использованием обратного вызова * /	/*** Исправления в макете главной страницы	 ** Описание: добавляет дополнительную ссылку к полному списку доступных языков.* Сопровождающие: [[Пользователь: AzaToth]], [[Пользователь: R. Koot]], [[Пользователь: Alex Smotrov]]	 */	если ( mw.config.получать( 'wgPageName' ) === 'Главная страница' || mw.config.получать( 'wgPageName' ) === "Обсуждение: Main_Page" ) {		$( функция () {			mw.утилита.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',				'Полный список', 'интервики-завершитель', 'Полный список Википедий' );		} );	}	/*** Сопоставьте addPortletLink с mw.util* @deprecated: используйте вместо этого mw.util.addPortletLink.	 */	mw.бревно.осуждать( окно, 'addPortletLink', mw.утилита.addPortletLink, 'Используйте вместо этого mw.util.addPortletLink' );	/*** Извлечь параметр URL из текущего URL* @deprecated: используйте mw.util.getParamValue с правильным экранированием	 */	mw.бревно.осуждать( окно, 'getURLParamValue', mw.утилита.getParamValue, 'Используйте вместо этого mw.util.getParamValue' );	/*** Проверить, есть ли у элемента определенный класс* @deprecated: используйте вместо этого $ (element) .hasClass ().	 */	mw.бревно.осуждать( окно, 'hasClass', функция ( элемент, className ) {		возвращаться $( элемент ).hasClass( className );	}, 'Вместо этого используйте jQuery.hasClass ()' );	/*** @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL* @rev 6	 */	вар extraCSS = mw.утилита.getParamValue( 'withCSS' ),		extraJS = mw.утилита.getParamValue( 'withJS' );	если ( extraCSS ) {		если ( extraCSS.матч( /^MediaWiki:[^&<>=%# ]*.css$/ ) ) {			mw.грузчик.нагрузка( '/w/index.php?title=' + extraCSS + '& action = raw & ctype = text / css', 'текст / CSS' );		} еще {			mw.уведомлять( «Разрешены только страницы из пространства имен MediaWiki»., { заглавие: "Недействительное значение withCSS" } );		}	}	если ( extraJS ) {		если ( extraJS.матч( /^MediaWiki:[^&<>=%# ]*.js$/ ) ) {			mw.грузчик.нагрузка( '/w/index.php?title=' + extraJS + '& action = raw & ctype = text / javascript' );		} еще {			mw.уведомлять( «Разрешены только страницы из пространства имен MediaWiki»., { заглавие: 'Недействительное значение withJS' } );		}	}	/*** WikiMiniAtlas	 ** Описание: WikiMiniAtlas - это всплывающая карта мира, которую нужно перетаскивать.* Этот скрипт заставляет все наши координатные ссылки отображать всплывающую кнопку WikiMiniAtlas.* Сам скрипт расположен на мета, потому что он используется многими проектами.* См. [[Meta: WikiMiniAtlas]] для получения дополнительной информации.* Примечание - использование этой службы рекомендуется заменить на mw: Help: Extension: Kartographer	 */	$( функция () {		вар requireWikiminiatlas = $( 'a.external.text [href * = "geohack"]' ).длина || $( 'div.kmldata' ).длина;		если ( requireWikiminiatlas ) {			mw.грузчик.нагрузка( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );		}	} );	/*** Разборные столы; дополнен mw-разборной* Стиль также предусмотрен, чтобы избежать FOUC	 ** Позволяет сворачивать таблицы, показывая только заголовок. См. [[Справка: сворачивание]].* @version 3.0.0 (20.05.2018)* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js* @author [[Пользователь: R. Koot]]* @author [[Пользователь: Krinkle]]* @author [[Пользователь: TheDJ]]* @deprecated Начиная с MediaWiki 1.20: используйте class = "mw-collapsible" вместо* поддерживается ядром MediaWiki. Shimmable, начиная с MediaWiki 1.32	 ** @param {jQuery} $ content	 */	функция makeCollapsibleMwCollapsible( $ content ) {		вар $ столы = $ content			.найти( 'table.collapsible: not (.mw-collapsible)' )			.addClass( 'mw-складной' );		$.каждый( $ столы, функция ( индекс, стол ) {			// mw.log.warn ('На этой странице используется устаревший класс сворачиваемый. Замените его на mw-collapsible.');			если ( $( стол ).hasClass( 'рухнул' ) ) {				$( стол ).addClass( 'mw-collapsed' );				// mw.log.warn ('Эта страница использует свернутый устаревший класс. Пожалуйста, замените его на mw-collapsed.');			}		} );		если ( $ столы.длина > 0 ) {			mw.грузчик.с помощью( 'jquery.makeCollapsible' ).тогда( функция () {				$ столы.makeCollapsible();			} );		}	}	mw.крюк( 'wikipage.content' ).Добавить( makeCollapsibleMwCollapsible );	/*** Добавлена ​​поддержка в mw-collapsible для autocollapse, innercollapse и externalcollapse.	 ** Сопровождающие: TheDJ	 */	функция mwCollapsibleSetup( $ collapsibleContent ) {		вар $ element,			$ toggle,			autoCollapseThreshold = 2;		$.каждый( $ collapsibleContent, функция ( индекс, элемент ) {			$ element = $( элемент );			если ( $ element.hasClass( 'складной' ) ) {				$ element.найти( 'tr: first> th: first' ).добавить( $ element.найти( 'tr: first> *> .mw-collapsible-toggle' ) );			}			если ( $ collapsibleContent.длина >= autoCollapseThreshold && $ element.hasClass( 'autocollapse' ) ) {				$ element.данные( 'mw-складной' ).крах();			} еще если ( $ element.hasClass( 'внутренний коллапс' ) ) {				если ( $ element.родители( '.outercollapse' ).длина > 0 ) {					$ element.данные( 'mw-складной' ).крах();				}			}			// из-за цветного фона стилизуем ссылку в цвет текста			// чтобы обеспечить доступный контраст			$ toggle = $ element.найти( '.mw-сворачиваемый-переключатель' );			если ( $ toggle.длина ) {				// Заставляем переключатель наследовать цвет текста				если ( $ toggle.родитель()[ 0 ].стиль.цвет ) {					$ toggle.найти( 'а' ).css( 'цвет', 'наследовать' );				}			}		} );	}	mw.крюк( 'wikipage.collapsibleContent' ).Добавить( mwCollapsibleSetup );	/*** Динамические панели навигации (экспериментальные)	 ** Описание: см. [[Wikipedia: NavFrame]].* Сопровождающие: НЕ ПОДДЕРЖИВАЕТСЯ	 */	вар collapseCaption = 'Спрятать';	вар expandCaption = 'Показать';	// Настраиваем слова на вашем языке	вар NavigationBarСкрыть = '[' + collapseCaption + ']';	вар navigationBarShow = '[' + expandCaption + ']';	/*** Показывает и скрывает содержимое и изображение (если доступно) панелей навигации.	 ** @param {number} indexNavigationBar Индекс панели навигации, которую нужно переключить* @param {jQuery.Event} событие Объект события* @return {логическое}	 */	функция toggleNavigationBar( indexNavigationBar, мероприятие ) {		вар navToggle = документ.getElementById( 'NavToggle' + indexNavigationBar );		вар navFrame = документ.getElementById( 'NavFrame' + indexNavigationBar );		вар navChild;		если ( !navFrame || !navToggle ) {			возвращаться ложный;		}		// Если отображается сейчас		если ( navToggle.Первый ребенок.данные === NavigationBarСкрыть ) {			за ( navChild = navFrame.Первый ребенок; navChild !== ноль; navChild = navChild.nextSibling ) {				если ( $( navChild ).hasClass( 'NavContent' ) ) {					navChild.стиль.отображать = 'никто';				}			}			navToggle.Первый ребенок.данные = navigationBarShow;		// Если сейчас скрыт		} еще если ( navToggle.Первый ребенок.данные === navigationBarShow ) {			за ( navChild = navFrame.Первый ребенок; navChild !== ноль; navChild = navChild.nextSibling ) {				если ( $( navChild ).hasClass( 'NavContent' ) ) {					navChild.стиль.отображать = 'блокировать';				}			}			navToggle.Первый ребенок.данные = NavigationBarСкрыть;		}		мероприятие.preventDefault();	}	/*** Добавляет кнопку "показать / скрыть" на панели навигации.	 ** @param {jQuery} $ content	 */	функция createNavigationBarToggleButton( $ content ) {		вар j, navChild, navToggle, navToggleText, isCollapsed,			indexNavigationBar = 0;		// Итерация по всем элементам 
вар $ divs = $ content.найти( 'div.NavFrame: not (.mw-сворачиваемый)' ); $ divs.каждый( функция ( я, navFrame ) { indexNavigationBar++; navToggle = документ.createElement( 'а' ); navToggle.className = 'NavToggle'; navToggle.setAttribute( 'я бы', 'NavToggle' + indexNavigationBar ); navToggle.setAttribute( 'href', '#' ); $( navToggle ).на( 'щелкнуть', $.доверенное лицо( toggleNavigationBar, ноль, indexNavigationBar ) ); isCollapsed = $( navFrame ).hasClass( 'рухнул' ); /*** Проверьте, не скрыты ли уже дети. Этот цикл здесь для обратной совместимости:* старый способ сделать запуск NavFrames свернутым заключался в добавлении вручную style = "display: none"* ко всем элементам NavPic / NavContent. Поскольку это было плохо для доступности (невозможно сделать* контент, видимый без поддержки JavaScript), новый рекомендуемый способ - добавить класс* «сворачивался» в сам NavFrame, как и в случае сворачиваемых таблиц. */ за ( navChild = navFrame.Первый ребенок; navChild !== ноль && !isCollapsed; navChild = navChild.nextSibling ) { если ( $( navChild ).hasClass( "NavPic" ) || $( navChild ).hasClass( 'NavContent' ) ) { если ( navChild.стиль.отображать === 'никто' ) { isCollapsed = истинный; } } } если ( isCollapsed ) { за ( navChild = navFrame.Первый ребенок; navChild !== ноль; navChild = navChild.nextSibling ) { если ( $( navChild ).hasClass( "NavPic" ) || $( navChild ).hasClass( 'NavContent' ) ) { navChild.стиль.отображать = 'никто'; } } } navToggleText = документ.createTextNode( isCollapsed ? navigationBarShow : NavigationBarСкрыть ); navToggle.appendChild( navToggleText ); // Находим NavHead и прикрепляем переключаемую ссылку (это должно быть сложно, потому что обработка firstChild в Moz заблокирована) за ( j = 0; j < navFrame.childNodes.длина; j++ ) { если ( $( navFrame.childNodes[ j ] ).hasClass( 'NavHead' ) ) { navToggle.стиль.цвет = navFrame.childNodes[ j ].стиль.цвет; navFrame.childNodes[ j ].appendChild( navToggle ); } } navFrame.setAttribute( 'я бы', 'NavFrame' + indexNavigationBar ); } ); } mw.крюк( 'wikipage.content' ).Добавить( createNavigationBarToggleButton ); /*** Magic editintros ********************************************** ***** ** Описание: Добавляет editintros на страницах значений и страницах BLP.* Сопровождающие: [[Пользователь: RockMFR]] ** @param {строка} имя */ функция addEditIntro( имя ) { $( '.mw-editsection, # ca-edit, # ca-ve-edit' ).найти( 'а' ).каждый( функция ( я, эль ) { эль.href = $( это ).attr( 'href' ) + '& editintro =' + имя; } ); } если ( mw.config.получать( 'wgNamespaceNumber' ) === 0 ) { $( функция () { если ( документ.getElementById( 'disambigbox' ) ) { addEditIntro( 'Шаблон: Disambig_editintro' ); } } ); $( функция () { вар кошки = mw.config.получать( 'wgCategories' ); если ( !кошки ) { возвращаться; } если ( $.inArray( 'Живые люди', кошки ) !== -1 || $.inArray( 'Возможно живые люди', кошки ) !== -1 ) { addEditIntro( 'Шаблон: BLP_editintro' ); } } ); } / * Действия, специфичные для страницы редактирования * / если ( mw.config.получать( 'wgAction' ) === 'редактировать' || mw.config.получать( 'wgAction' ) === 'Разместить' ) { /*** Исправлена ​​ошибка сводки редактирования для отмены ** Исправлен тот факт, что функция отмены совмещена с сообщением «Нет редактирования сводной информации»* жалуется на отсутствие сводки редактирования, если оставить сводку редактирования без изменений.* Добавил [[Пользователь: Deskana]], код - [[Пользователь: Tra]].* См. Также [[phab: T10912]]. */ $( функция () { если ( документ.место расположения.поиск.индекс( 'отменить =' ) !== -1 && документ.getElementsByName( 'wpAutoSummary' )[ 0 ] ) { документ.getElementsByName( 'wpAutoSummary' )[ 0 ].ценить = '1'; } } ); } / * Конец mw.loader. с использованием обратного вызова * /} );/ * НЕ ДОБАВЛЯЙТЕ КОД НИЖЕ ЭТОЙ СТРОКИ * /