MediaWiki:Group-sysop.js

Материал из Викиучебника — открытых книг для открытого мира

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
/* Размещённый здесь код JavaScript будет загружаться только участникам, имеющим статус администраторов (sysops) */
mw.hook('wikipage.content').add( function() {

	//Гаджет для удаления страниц
	if ( mw.config.get( 'wgAction' ) === 'delete' ) {
		mw.loader.load( 'ext.gadget.common-action-delete' );
	}

	//============= Pages =============

	if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 &&
		mw.config.get( 'wgArticleId' )
	) {
		switch ( mw.config.get( 'wgAction' ) ) {
			case 'view':
				//on [[ВП:БУ]] pages append delete reason to delete tab
				var reason = /[ФПОКУС]\d\d?/.exec( $( '#db-reason' ).text() );
				var $del = $( '#ca-delete' );
				if ( reason && $del.length ) {
					var $lnk = $del.find( 'a' );
					$lnk
						.attr( 'href', lnk.attr( 'href' ) + '&dbreason=' + encodeURIComponent( reason[0].replace( /\./, '' ) ) )
						.css( 'background', '#fee' );
					//also move 'delete' tab to the top
					if ( mw.user.options.get( 'skin' ) === 'vector' ) {
						$del.wrapInner( '<span>' ).insertBefore( '#ca-watch' );
					}
				}

				//highlight "closed" sections in TOC
				if ( mw.config.get( 'wgNamespaceNumber' ) === 4 &&
					/( к администраторам| защиты| спам-листа|Технические запросы)$/.test( mw.config.get( 'wgTitle' ) )
				) {
					mw.loader.using( 'mediawiki.util' ).done( function () {
						mw.util.addCSS( 'li.done { background: #eee; }' );
					} );
					$( '#toc li.toclevel-2' ).each( function ( i, li ) {
						if ( $( li ).find( 'span.toctext' ).text() !== 'Итог' ) {
							return;
						}
						$( li ).closest( 'li.toclevel-1' ).addClass( 'done' );
					});
				}

				break;


			case 'protect':
			case 'unprotect': //avoid [move=autoconfirmed] in logs
				$( '#mwProtect-level-edit' ).change( function() {
					if ( !$( '#mwProtectUnchained' ).attr( 'checked' ) &&
						$( '#mwProtect-level-move' ).val() === 'autoconfirmed'
					) {
						$( '#mwProtect-level-move' ).val( '' );
					}
				} );
				break;


			case 'history':
				hideRevDel();
				if ( $.inArray( mw.config.get( 'wgNamespaceNumber' ), [0,6, 10, 14] ) !== -1 ) {
					//stabilization link
					addSysopLink( mw.util.getUrl( 'Special:Stabilization/' + mw.config.get( 'wgPageName' ) ), 'Настройки стабилизации' );
				}
				break;

		}//switch
	}


	//============= Special pages =============

	switch ( mw.config.get( 'wgCanonicalSpecialPageName' ) ) {
		case 'Log':
		case 'Contributions':
			hideRevDel();
			break;

		//case 'Userrights':
		//	importScript( 'MediaWiki:Userrights.js' );
		//	break;

		case 'Block': // temp fix: https://bugzilla.wikimedia.org/show_bug.cgi?id=35893
			if ( mw.loader.getState( 'mediawiki.special.block' ) !== 'ready' ) {
				mw.loader.load( 'mediawiki.special.block' );
			}
			break;
	}


	//=============

	function hideRevDel() { //initially hide RevDel [[ ВП:Удаление правки]] interface
		if (!window.hrdOff) {
			window.hideRevDelCSS = mw.util.addCSS( '\
				#mw-log-deleterevision-submit input[type="checkbox"],\
				button.mw-log-deleterevision-button,\
				#pagehistory input[type="checkbox"],\
				button.mw-history-revisiondelete-button,\
				span.mw-revdelundel-link {\
					display: none;\
				}' );
			window.revisionDelete = function() {
				window.hideRevDelCSS.disabled = !window.hideRevDelCSS.disabled;
				return false;
			};
			addSysopLink( 'javascript:revisionDelete(); void 0', 'Скрытие правок' );
		}
	}


	function addSysopLink ( url, txt ) {
		var $cSub = $( '#contentSub' );
		if ( $cSub.children().last().prop( 'nodeName' ) === 'A' ) {
			$cSub.append( ' · ' );
		}
		$cSub.append( $( '<a href="' + url + '"><img \
	src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f2/\
	Edit-clear.svg/10px-Edit-clear.svg.png">&nbsp;' + txt + '</a>' ) );
	}

} );