<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.fetbuk.ru/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://wiki.fetbuk.ru/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.fetbuk.ru/w/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-05-06T13:26:37Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.fetbuk.ru/w/index.php?title=MediaWiki:Common.js&amp;diff=330&amp;oldid=prev</id>
		<title>WerySkok: Новая страница: «/**  * Данный код основан на https://ru.wikipedia.org/wiki/MediaWiki:Common.js  * Код MediaWiki:Common.js безусловно загружа...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.fetbuk.ru/w/index.php?title=MediaWiki:Common.js&amp;diff=330&amp;oldid=prev"/>
		<updated>2022-03-06T17:00:05Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «/**  * Данный код основан на https://ru.wikipedia.org/wiki/MediaWiki:Common.js  * Код MediaWiki:Common.js безусловно загружа...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Данный код основан на https://ru.wikipedia.org/wiki/MediaWiki:Common.js&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 expandCaption, collapseCaption, zeroSectionTip;&lt;br /&gt;
if ( mw.config.get( &amp;#039;wgUserLanguage&amp;#039; ) === &amp;#039;en&amp;#039; ) {&lt;br /&gt;
	expandCaption = &amp;#039;show&amp;#039;;&lt;br /&gt;
	collapseCaption = &amp;#039;hide&amp;#039;;&lt;br /&gt;
	zeroSectionTip = &amp;#039;Edit lead section&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
	expandCaption = &amp;#039;показать&amp;#039;;&lt;br /&gt;
	collapseCaption = &amp;#039;скрыть&amp;#039;;&lt;br /&gt;
	zeroSectionTip = &amp;#039;Править преамбулу&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * [[w:ru:ВП:Сворачиваемые блоки]]&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;
// table.collapsible&lt;br /&gt;
// collapsibleTablesItrIdx - временное решние, чтобы не дублировались id,&lt;br /&gt;
// если во время срабатывания хука &amp;#039;wikipage.content&amp;#039; добавляются новые сворачиваемые блоки&lt;br /&gt;
var collapsibleTablesItrIdx = 0;&lt;br /&gt;
	&lt;br /&gt;
function collapsibleTables( $content ) {&lt;br /&gt;
	var $btn,&lt;br /&gt;
		$a,&lt;br /&gt;
		tblIdx = collapsibleTablesItrIdx,&lt;br /&gt;
		navboxCount = 0,&lt;br /&gt;
		notNavboxCount = 0,&lt;br /&gt;
		colTables = [],&lt;br /&gt;
		$Tables = $content.find( &amp;#039;table&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
	$Tables.each( function ( i, table ) {&lt;br /&gt;
		if ( $( table ).hasClass( &amp;#039;collapsible&amp;#039; ) ) {&lt;br /&gt;
			var $table = $( this ),&lt;br /&gt;
				$row = $table.find( &amp;#039;tr&amp;#039; ).first(),&lt;br /&gt;
				$cell = $row.find( &amp;#039;th&amp;#039; ).first();&lt;br /&gt;
			if ( !$cell.length ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			$table.attr( &amp;#039;id&amp;#039;, &amp;#039;collapsibleTable&amp;#039; + tblIdx );&lt;br /&gt;
			$btn = $( &amp;#039;&amp;lt;span&amp;gt;&amp;#039; ).addClass( &amp;#039;collapseButton&amp;#039; );&lt;br /&gt;
			$a = $( &amp;#039;&amp;lt;a&amp;gt;&amp;#039; )&lt;br /&gt;
				.attr( &amp;#039;id&amp;#039;, &amp;#039;collapseButton&amp;#039; + tblIdx )&lt;br /&gt;
				.attr( &amp;#039;href&amp;#039;, &amp;#039;javascript:collapseTable(&amp;#039; + tblIdx + &amp;#039;);&amp;#039; )&lt;br /&gt;
				// Изменяем цвет ссылки, только если цвет текста в навбоксе нестандартный&lt;br /&gt;
				.css( &amp;#039;color&amp;#039;, $cell.css( &amp;#039;color&amp;#039; ) === $( &amp;#039;.mw-body&amp;#039; ).css( &amp;#039;color&amp;#039; ) ? &amp;#039;auto&amp;#039; :&lt;br /&gt;
					$cell.css( &amp;#039;color&amp;#039; ) )&lt;br /&gt;
				.text( collapseCaption );&lt;br /&gt;
			$btn&lt;br /&gt;
				.append( &amp;#039;[&amp;#039; )&lt;br /&gt;
				.append( $a )&lt;br /&gt;
				.append( &amp;#039;]&amp;#039; );&lt;br /&gt;
			if ( $cell.contents().length ) {&lt;br /&gt;
				$btn.insertBefore( $cell.contents().first() );&lt;br /&gt;
			} else {&lt;br /&gt;
				$btn.appendTo( $cell );&lt;br /&gt;
			}&lt;br /&gt;
			// hasClass( &amp;#039;navbox&amp;#039; ) — временное решение для навшаблонов, ещё не переведённых&lt;br /&gt;
			// на {{Навигационная таблица}} (также ниже)&lt;br /&gt;
			if ( $table.hasClass( &amp;#039;navbox-inner&amp;#039; ) || $table.hasClass( &amp;#039;navbox&amp;#039; ) ) {&lt;br /&gt;
				navboxCount++;&lt;br /&gt;
			} else {&lt;br /&gt;
				notNavboxCount++;&lt;br /&gt;
			}&lt;br /&gt;
			colTables[tblIdx++] = $table;&lt;br /&gt;
		}&lt;br /&gt;
	} );&lt;br /&gt;
	for ( var i = collapsibleTablesItrIdx; i &amp;lt; tblIdx; i++ ) {&lt;br /&gt;
		if ( colTables[i].hasClass( &amp;#039;collapsed&amp;#039; ) ||&lt;br /&gt;
			( colTables[i].hasClass( &amp;#039;autocollapse&amp;#039; ) &amp;amp;&amp;amp;&lt;br /&gt;
				( ( ( colTables[i].hasClass( &amp;#039;navbox-inner&amp;#039; ) || colTables[i].hasClass( &amp;#039;navbox&amp;#039; ) ) &amp;amp;&amp;amp;&lt;br /&gt;
						navboxCount &amp;gt; NavigationBarShowDefault ) ||&lt;br /&gt;
					( !( colTables[i].hasClass( &amp;#039;navbox-inner&amp;#039; ) || colTables[i].hasClass( &amp;#039;navbox&amp;#039; ) ) &amp;amp;&amp;amp;&lt;br /&gt;
						notNavboxCount &amp;gt; NavigationBarShowDefault ) ) ) )&lt;br /&gt;
		{&lt;br /&gt;
			collapseTable( i );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	collapsibleTablesItrIdx = tblIdx;&lt;br /&gt;
	// Нужно переписать код на &amp;quot;mw-collapsible&amp;quot;, и заменить использование хука на &amp;quot;wikipage.collapsibleContent&amp;quot;&lt;br /&gt;
	mw.hook( &amp;#039;common.collapsibleContent&amp;#039; ).fire( colTables );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( collapsibleTables );&lt;br /&gt;
&lt;br /&gt;
function collapseTable( idx ) {&lt;br /&gt;
	var $table = $( &amp;#039;#collapsibleTable&amp;#039; + idx ),&lt;br /&gt;
		$rows = $table.children().children( &amp;#039;tr&amp;#039; ),&lt;br /&gt;
		$btn = $( &amp;#039;#collapseButton&amp;#039; + idx );&lt;br /&gt;
	if ( !$table.length || !$rows.length || !$btn.length ) {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var isExpanded = ( $btn.text() === collapseCaption ),&lt;br /&gt;
		cssDisplay = isExpanded ? &amp;#039;none&amp;#039; : $rows.first().css( &amp;#039;display&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
	$btn.text( isExpanded ? expandCaption : collapseCaption );&lt;br /&gt;
	$rows.slice( 1 ).each( function () {&lt;br /&gt;
		$( this ).css( &amp;#039;display&amp;#039;, cssDisplay );&lt;br /&gt;
	} );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// div.NavFrame&lt;br /&gt;
var navFrameExpandCaption = &amp;#039;[&amp;#039; + expandCaption + &amp;#039;]&amp;#039;,&lt;br /&gt;
	navFrameCollapseCaption = &amp;#039;[&amp;#039; + collapseCaption + &amp;#039;]&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Изолируем код из глобальной области видимости&lt;br /&gt;
( function () {&lt;br /&gt;
	function collapsibleDivs( $content ) {&lt;br /&gt;
		var navFrameIndex = 0,&lt;br /&gt;
			navFrames = [],&lt;br /&gt;
			i;&lt;br /&gt;
&lt;br /&gt;
		$content.find( &amp;#039;div&amp;#039; ).each( function () {&lt;br /&gt;
			var $div = $( this );&lt;br /&gt;
			if ( $div.hasClass( &amp;#039;NavFrame&amp;#039; ) ) {&lt;br /&gt;
				var $btn = $( &amp;#039;&amp;lt;a&amp;gt;&amp;#039; )&lt;br /&gt;
					.addClass( &amp;#039;NavToggle&amp;#039; )&lt;br /&gt;
					.attr( &amp;#039;href&amp;#039;, &amp;#039;javascript:&amp;#039; )&lt;br /&gt;
					.text( navFrameCollapseCaption )&lt;br /&gt;
					.click( navToggleClickHandler );&lt;br /&gt;
				$div.children( &amp;#039;.NavHead&amp;#039; ).append( $btn );&lt;br /&gt;
				navFrames[ navFrameIndex++ ] = $div;&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		for ( i = 0; i &amp;lt; navFrameIndex; i++ ) {&lt;br /&gt;
			if ( navFrames[ i ].hasClass( &amp;#039;collapsed&amp;#039; ) ||&lt;br /&gt;
				( navFrameIndex &amp;gt; NavigationBarShowDefault &amp;amp;&amp;amp;&lt;br /&gt;
					!navFrames[ i ].hasClass( &amp;#039;expanded&amp;#039; )&lt;br /&gt;
				)&lt;br /&gt;
			) {&lt;br /&gt;
				toggleDiv( navFrames[ i ] );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( collapsibleDivs );&lt;br /&gt;
&lt;br /&gt;
	function navToggleClickHandler() {&lt;br /&gt;
		var $btn = $( this );&lt;br /&gt;
		toggleDiv( $btn.closest( &amp;#039;.NavFrame&amp;#039; ), $btn );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function toggleDiv( $div, $btn ) {&lt;br /&gt;
		$btn = $btn || $div.find( &amp;#039;.NavToggle&amp;#039; ).first();&lt;br /&gt;
		if ( !$div.length || !$btn.length ) return false;&lt;br /&gt;
		var isExpanded = ( $btn.text() === navFrameCollapseCaption );&lt;br /&gt;
		$btn.text( isExpanded ? navFrameExpandCaption : navFrameCollapseCaption );&lt;br /&gt;
		$div.children( &amp;#039;.NavContent, .NavPic&amp;#039; ).each( function () {&lt;br /&gt;
			$( this ).css( &amp;#039;display&amp;#039;, isExpanded ? &amp;#039;none&amp;#039; : &amp;#039;block&amp;#039; );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WerySkok</name></author>
	</entry>
</feed>