<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://massarn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://massarn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://massarn.com/w/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-06-15T21:59:11Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://massarn.com/w/index.php?title=MediaWiki:Common.js&amp;diff=311&amp;oldid=prev</id>
		<title>Buto: Новая страница: «/**  * Код MediaWiki:Common.js безусловно загружается всем пользователям на всех страницах. Во избежание  * отправки лишних запросов по возможности не используйте здесь mw.loader.using с модулями, которые  * не загружаются по умолчанию (см.  * [[Обсуждение MediaWiki:Common.js#Список...»</title>
		<link rel="alternate" type="text/html" href="https://massarn.com/w/index.php?title=MediaWiki:Common.js&amp;diff=311&amp;oldid=prev"/>
		<updated>2024-12-29T23:17:36Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «/**  * Код MediaWiki:Common.js безусловно загружается всем пользователям на всех страницах. Во избежание  * отправки лишних запросов по возможности не используйте здесь mw.loader.using с модулями, которые  * не загружаются по умолчанию (см.  * [[Обсуждение MediaWiki:Common.js#Список...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Код MediaWiki:Common.js безусловно загружается всем пользователям на всех страницах. Во избежание&lt;br /&gt;
 * отправки лишних запросов по возможности не используйте здесь mw.loader.using с модулями, которые&lt;br /&gt;
 * не загружаются по умолчанию (см.&lt;br /&gt;
 * [[Обсуждение MediaWiki:Common.js#Список модулей, загружаемых по умолчанию]]). В таком случае&lt;br /&gt;
 * лучше создать скрытый гаджет, загружаемый по умолчанию, и добавить ему нужные модули в качестве&lt;br /&gt;
 * зависимостей.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Часто те или иные манипуляции со страницей нужно выполнить как можно раньше, но нет гарантии, что&lt;br /&gt;
 * к моменту выполнения кода нужный участок DOM готов, а событие полной загрузки страницы происходит&lt;br /&gt;
 * слишком поздно. В этой функции проверяется наличие элемента $testElement и в случае успеха&lt;br /&gt;
 * функция-колбэк выполняется, иначе же её выполнение поручается другой функции. Если элемент&lt;br /&gt;
 * в $testElement имеет содержимое, правильнее указать следующий за ним элемент, чтобы быть&lt;br /&gt;
 * уверенным, что он загрузился до конца. Имейте в виду, что разные скины часто используют разные&lt;br /&gt;
 * названия классов и идентификаторов.&lt;br /&gt;
 */&lt;br /&gt;
function runAsEarlyAsPossible( callback, $testElement, func ) {&lt;br /&gt;
	func = func || $;&lt;br /&gt;
	$testElement = $testElement || $( &amp;#039;#footer&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
	if ( $testElement.length ) {&lt;br /&gt;
		callback();&lt;br /&gt;
	} else {&lt;br /&gt;
		func( callback );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Настройка обработки «е» и «ё» при сортировке в таблицах&lt;br /&gt;
 */&lt;br /&gt;
mw.config.set( &amp;#039;tableSorterCollation&amp;#039;, { &amp;#039;Ё&amp;#039;: &amp;#039;Е&amp;#039;, &amp;#039;ё&amp;#039;: &amp;#039;е&amp;#039; } );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Строки. Иноязычный интерфейс предположительно включают весьма редко, поэтому раздувать этот&lt;br /&gt;
 * список не стоит. При необходимости добавить много сообщений во много языков можно использовать&lt;br /&gt;
 * механизм системных сообщений (= страниц в пространстве MediaWiki, у которых могут быть суффиксы&lt;br /&gt;
 * типа /en). См., как их получение реализовано в MediaWiki:Gadget-sidebarRelated.js.&lt;br /&gt;
 */&lt;br /&gt;
var zeroSectionTip;&lt;br /&gt;
if ( mw.config.get( &amp;#039;wgUserLanguage&amp;#039; ) === &amp;#039;en&amp;#039; ) {&lt;br /&gt;
	zeroSectionTip = &amp;#039;Edit lead section&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
	zeroSectionTip = &amp;#039;Править преамбулу&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * [[ВП:Сворачиваемые блоки]]&lt;br /&gt;
 */&lt;br /&gt;
// Число раскрытых по умолчанию навигационных (и не только) шаблонов, если им задан параметр&lt;br /&gt;
// autocollapse. Участники могут переопределять это значение в личных JS.&lt;br /&gt;
var NavigationBarShowDefault;&lt;br /&gt;
if ( typeof NavigationBarShowDefault === &amp;#039;undefined&amp;#039; ) {&lt;br /&gt;
	NavigationBarShowDefault = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Изолируем код из глобальной области видимости&lt;br /&gt;
( function () {&lt;br /&gt;
	// table.collapsible&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Collapsible tables; reimplemented with mw-collapsible&lt;br /&gt;
	 * Styling is also in place to avoid FOUC&lt;br /&gt;
	 *&lt;br /&gt;
	 * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].&lt;br /&gt;
	 * @version 3.0.0 (2018-05-20)&lt;br /&gt;
	 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js&lt;br /&gt;
	 * @author [[User:R. Koot]]&lt;br /&gt;
	 * @author [[User:Krinkle]]&lt;br /&gt;
	 * @author [[User:TheDJ]]&lt;br /&gt;
	 * @deprecated Since MediaWiki 1.20: Use class=&amp;quot;mw-collapsible&amp;quot; instead which&lt;br /&gt;
	 * is supported in MediaWiki core. Shimmable since MediaWiki 1.32&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param {jQuery} $content&lt;br /&gt;
	 */&lt;br /&gt;
	function makeCollapsibleMwCollapsible( $content ) {&lt;br /&gt;
		var $tables = $content&lt;br /&gt;
			.find( &amp;#039;table.collapsible:not(.mw-collapsible)&amp;#039; )&lt;br /&gt;
			.addClass( &amp;#039;mw-collapsible&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		$.each( $tables, function ( index, table ) {&lt;br /&gt;
			if ( $( table ).hasClass( &amp;#039;collapsed&amp;#039; ) ) {&lt;br /&gt;
				$( table ).addClass( &amp;#039;mw-collapsed&amp;#039; );&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		if ( $tables.length &amp;gt; 0 ) {&lt;br /&gt;
			mw.loader.using( &amp;#039;jquery.makeCollapsible&amp;#039; ).then( function () {&lt;br /&gt;
				$tables.makeCollapsible();&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( makeCollapsibleMwCollapsible );&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse&lt;br /&gt;
	 *&lt;br /&gt;
	 * Maintainers: TheDJ&lt;br /&gt;
	 */&lt;br /&gt;
	function mwCollapsibleSetup( $collapsibleContent ) {&lt;br /&gt;
		var $element;&lt;br /&gt;
		var $toggle;&lt;br /&gt;
		var autoCollapseThreshold = NavigationBarShowDefault + 1;&lt;br /&gt;
		&lt;br /&gt;
		// Changed for ruwiki: Autocollapse according to the number of navbox elements&lt;br /&gt;
		var $navboxEls = $collapsibleContent.filter( &amp;#039;.navbox-inner&amp;#039; );&lt;br /&gt;
		&lt;br /&gt;
		$.each( $collapsibleContent, function ( index, element ) {&lt;br /&gt;
			$element = $( element );&lt;br /&gt;
			if ( $element.hasClass( &amp;#039;collapsible&amp;#039; ) ) {&lt;br /&gt;
				$element.find( &amp;#039;tr:first &amp;gt; th:first&amp;#039; ).prepend( $element.find( &amp;#039;tr:first &amp;gt; * &amp;gt; .mw-collapsible-toggle&amp;#039; ) );&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if ( $navboxEls.length &amp;gt;= autoCollapseThreshold &amp;amp;&amp;amp; $element.hasClass( &amp;#039;autocollapse&amp;#039; ) ) {&lt;br /&gt;
				$element.data( &amp;#039;mw-collapsible&amp;#039; ).collapse();&lt;br /&gt;
			} else if ( $element.hasClass( &amp;#039;innercollapse&amp;#039; ) ) {&lt;br /&gt;
				if ( $element.parents( &amp;#039;.outercollapse&amp;#039; ).length &amp;gt; 0 ) {&lt;br /&gt;
					$element.data( &amp;#039;mw-collapsible&amp;#039; ).collapse();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// because of colored backgrounds, style the link in the text color&lt;br /&gt;
			// to ensure accessible contrast&lt;br /&gt;
			$toggle = $element.find( &amp;#039;.mw-collapsible-toggle&amp;#039; );&lt;br /&gt;
			if ( $toggle.length ) {&lt;br /&gt;
				// Make the toggle inherit text color (Updated for T333357 2023-04-29)&lt;br /&gt;
				if ( $toggle.parent()[ 0 ].style.color ) {&lt;br /&gt;
					$toggle.css( &amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039; );&lt;br /&gt;
					$toggle.find( &amp;#039;.mw-collapsible-text&amp;#039; ).css( &amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039; );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	mw.hook( &amp;#039;wikipage.collapsibleContent&amp;#039; ).add( mwCollapsibleSetup );&lt;br /&gt;
}() );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Исправление поведения FlaggedRevs в сочетании с визуальным редактором, чтобы&lt;br /&gt;
 * в стабилизированных статьях на правку в визреде открывалась последняя версия, что&lt;br /&gt;
 * соответствует поведению обычного редактора. См. [[phab:T165283]],&lt;br /&gt;
 * [[Википедия:Форум/Архив/Общий/2017/12#Серьёзная проблема с анонимными правками в стабилизированных статьях]].&lt;br /&gt;
 */&lt;br /&gt;
mw.loader.using( &amp;#039;ext.visualEditor.desktopArticleTarget.init&amp;#039; ).then( function () {&lt;br /&gt;
	// По какой-то причине фикс для FlaggedRevs работает только при использовании then(), но не done().&lt;br /&gt;
	runAsEarlyAsPossible( function () {&lt;br /&gt;
		function fixEditLinksForStableRevs( removeClickHandlers ) {&lt;br /&gt;
			if ( $( &amp;#039;#ca-view.selected&amp;#039; ).length ) {&lt;br /&gt;
				// При выходе из визреда (сохранении или переключении) ссылки работают правильно&lt;br /&gt;
				// и убирать обработчики событий нет нужды — только исправить URL’ы на случай&lt;br /&gt;
				// открытия правки в новой вкладке.&lt;br /&gt;
				if ( removeClickHandlers ) {&lt;br /&gt;
					$( &amp;#039;#ca-ve-edit, .mw-editsection-visualeditor&amp;#039; ).off( &amp;#039;click&amp;#039; );&lt;br /&gt;
				}&lt;br /&gt;
				$( &amp;#039;#ca-ve-edit a, .mw-editsection-visualeditor&amp;#039; ).each( function () {&lt;br /&gt;
					var href = $( this ).attr( &amp;#039;href&amp;#039; );&lt;br /&gt;
					if ( !/[?&amp;amp;]stable=0/.test( href ) ) {&lt;br /&gt;
						$( this ).attr( &amp;#039;href&amp;#039;,&lt;br /&gt;
							href&lt;br /&gt;
								.replace( /&amp;amp;veaction=edit/, &amp;#039;&amp;amp;stable=0&amp;amp;veaction=edit&amp;#039; )&lt;br /&gt;
								.replace( /&amp;amp;oldid=\d+/,  &amp;#039;&amp;#039; )&lt;br /&gt;
						);&lt;br /&gt;
					}&lt;br /&gt;
				} );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Не включаем сюда проверку на наличие #ca-view.selected, чтобы не вычёркивать случай,&lt;br /&gt;
		// когда визред открыт без Ajax и по выходу из него нужно заменить URL’ы в ссылках.&lt;br /&gt;
		if ( $( &amp;#039;#ca-current&amp;#039; ).length &amp;amp;&amp;amp; !/[?&amp;amp;](oldid|diff)=\d+/.test( location.search ) ) {&lt;br /&gt;
			fixEditLinksForStableRevs( true );&lt;br /&gt;
		&lt;br /&gt;
			mw.hook( &amp;#039;ve.deactivationComplete&amp;#039; ).add( function () {&lt;br /&gt;
				fixEditLinksForStableRevs( false );&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
mw.hook( &amp;#039;ve.loadModules&amp;#039; ).add( function( addPlugin ) {&lt;br /&gt;
	/**&lt;br /&gt;
	 * Поддержка Викификатора в новом режиме вики-текста aka 2017 wikitext editor&lt;br /&gt;
	 */&lt;br /&gt;
	addPlugin( function () {&lt;br /&gt;
		return mw.loader.using( &amp;#039;ext.gadget.wikificator&amp;#039; );&lt;br /&gt;
	} );&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * [[Шаблон:TOC hidden]]&lt;br /&gt;
 */&lt;br /&gt;
function TOChidden() {&lt;br /&gt;
	var wrapper = document.querySelector( &amp;#039;.tochidden-wrapper&amp;#039; );&lt;br /&gt;
	if ( wrapper === null ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	mw.loader.using( &amp;#039;mediawiki.toc&amp;#039;, () =&amp;gt; {&lt;br /&gt;
		var checkbox = wrapper.querySelector( &amp;#039;#toctogglecheckbox&amp;#039; );&lt;br /&gt;
		// Убирает все ивенты с чекбокса, чтобы от раскрытия/скрытия не менялась куки&lt;br /&gt;
		checkbox.outerHTML = checkbox.outerHTML;&lt;br /&gt;
		checkbox = wrapper.querySelector( &amp;#039;#toctogglecheckbox&amp;#039; );&lt;br /&gt;
		&lt;br /&gt;
		checkbox.checked = true;&lt;br /&gt;
		wrapper.classList.add( &amp;#039;tochidden-done&amp;#039; );&lt;br /&gt;
	} );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
runAsEarlyAsPossible( TOChidden, $( &amp;#039;#toc&amp;#039; ), mw.hook( &amp;#039;wikipage.content&amp;#039; ).add );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Код, выполняемый по событию wikipage.content (его обработчики выполняются раньше колбэков для $,&lt;br /&gt;
 * хотя в глубине это одно и то же событие, просто колбэк, инициирующий wikipage.content, становится&lt;br /&gt;
 * в очередь раньше). Так как wikipage.content инициируется после обновления страницы в результате&lt;br /&gt;
 * Ajax-запросов (например, гаджетом быстрого предпросмотра), не добавляйте сюда коды, которые&lt;br /&gt;
 * должны гарантированно выполниться не более одного раза на странице.&lt;br /&gt;
 */&lt;br /&gt;
mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( function () {&lt;br /&gt;
	/**&lt;br /&gt;
	 * Отключение обтекания раздела примечаний, если в нём есть колонки.&lt;br /&gt;
	 * Короткие (до 15 ссылок, если общее число символов не менее 3000) списки примечаний обтекаются&lt;br /&gt;
	 * только справа.&lt;br /&gt;
	 */&lt;br /&gt;
	$( &amp;#039;.reflist.columns&amp;#039; ).each( function () {&lt;br /&gt;
		var clear = &amp;#039;both&amp;#039;,&lt;br /&gt;
			$refs = $( this ).find( &amp;#039;ol.references &amp;gt; li&amp;#039; );&lt;br /&gt;
		if ( $refs.length &amp;lt;= 10 ) return;&lt;br /&gt;
		if ( $refs.length &amp;lt;= 15 &amp;amp;&amp;amp; $refs.text().length &amp;lt; 3000 ) {&lt;br /&gt;
			clear = &amp;#039;left&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		$( this )&lt;br /&gt;
			.prevUntil( &amp;#039;.mw-heading, h1, h2, h3, h4, h5, h6&amp;#039; )&lt;br /&gt;
			.addBack()&lt;br /&gt;
			.first()&lt;br /&gt;
			.prev()&lt;br /&gt;
			.css( &amp;#039;clear&amp;#039;, clear );&lt;br /&gt;
	} );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Кнопки описания правок для визуального редактора&lt;br /&gt;
 */&lt;br /&gt;
mw.hook( &amp;#039;ve.activationComplete&amp;#039; ).add( function () {&lt;br /&gt;
	mw.loader.load( &amp;#039;ext.gadget.summaryButtons&amp;#039; );&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Buto</name></author>
	</entry>
</feed>