MediaViki:Gadget-markAdmins.js

Qeyd:Yaddaşa verdikdən sonra dəyişikliklərin görsənməsi üçün brouzerinizin cache-indən yan keçilməsi lazım ola bilər. Mozilla / Firefox / Safari: Reload düyməsini basarkən eyni vaxtda Shift-i basılı tutun və ya Ctrl-Shift-R-a basın. (Apple Mac-da Cmd-Shift-R). İE: Refresh düyməsini basarkən eyni vaxtda Ctrl-i basılı tutun və ya Ctrl-F5-ə basın. Konqueror: Sadəcə Reload düyməsinə və ya F5-ə basın. Opera brouzeri istifadəçiləri Tools→Preferences-dən cache-lərini tamamilə təmizləməli ola bilərlər.

//***********************************************************************
 // Skript ursprünglich von [[Benutzer:Euku]], 28. Dez. 2005
 // Adaptierung/zusätzliche Markierungen/Fixes: [[Benutzer:PDD]]
 // Aufgeräumt & beschleunigt: [[Benutzer:Littl]]
 // Etwas umgeräumt und potentielle Skinabhängigkeit entfernt: [[Benutzer:Guandalug]]
 // Anpassung an WikiData: [[User:NordNordWest]]
 //***********************************************************************

( function ( mw, $ ) {
	function markAdmins( $content ) {

		// static list
		var admins = [ '*Youngjin', '-revi', 'Abi%C3%A1n', 'Addshore', 'Ajraddatz', 'AmaryllisGardener', 'Andreasmperu', 'Arkanosis', 'Ash_Crow', 'Bencemac', 'Bovlb', 'ChristianKl', 'Conny', 'Csigabi', 'Ebrahim', 'Ep%C3%ACdosis', 'Eurodyne', 'HakanIST', 'Harmonia_Amanda', 'Hoo_man', 'Jared_Preston', 'Jarekt', 'Jasper_Deng', 'Jianhui67', 'Ladsgroup', 'Lakokat', 'Lymantria', 'Mahir256', 'Mat%C4%9Bj_Such%C3%A1nek', 'Mbch331', 'MisterSynergy', 'Multichill', 'Nikki', 'Nikosguard', 'Okkn', 'Pamputt', 'Pasleim', 'Penn_Station', 'Pintoch', 'Putnik', 'Queryzo', 'Rippitippi', 'Romaine', 'Rschen7754', 'Rzuwig', 'Sannita', 'Sjoerddebruin', 'Sotiale', 'Stryn', 'Taketa', 'ValterVB', 'Vogone', 'Ymblanter', 'YMS', '%D7%99%D7%95%D7%A0%D7%94_%D7%91%D7%A0%D7%93%D7%9C%D7%90%D7%A7', '%D8%B9%D9%84%D8%A7%D8%A1' ];
		var admins_str = '|' + admins.join( '|' ) + '|';

		var botadmins = [ 'Dexbot' ];
		var botadmins_str = '|' + botadmins.join( '|' ) + '|';

		var renadmins = [ 'Ebraminio', 'Hym411', '%EB%B6%84%EB%8B%B9%EC%84%A0M'];
		var renadmins_str = '|' + renadmins.join( '|' ) + '|';

		var bureaucrats = [ 'Lymantria', 'Vogone', 'Ymblanter' ];
		var bureaucrats_str = '|' + bureaucrats.join( '|' ) + '|';

		// var checkusers = [ 'Xxx', 'Yyy' ];
		// var checkusers_str = '|' + checkusers.join( '|' ) + '|';

		var oversights = [ 'Ajraddatz', 'Sjoerddebruin' ];
		var oversights_str = '|' + oversights.join( '|' ) + '|';

		// Wikidata staff members from WMDE
		var staff = [ 'Adam_Shorland_(WMDE)', 'Daniel_Kinzler_(WMDE)', 'Jonas_Kress_(WMDE)', 'Katie_Filbert_(WMDE)', 'Lea_Lacroix_(WMDE)', 'Lydia_Pintscher_(WMDE)' ];
		var staff_str = '|' + staff.join( '|' ) + '|';

		// Stewards
		var stewards = [ '-revi', 'Ajraddatz', 'Bsadowski1', 'Defender', 'DerHexer', 'Green Giant', 'HakanIST', 'Hoo_man', 'Jyothis', 'Linedwell', 'MarcoAurelio', 'Mardetanha', 'Masti', 'Matanya', 'Matiia', 'MBisanz', 'Melos', 'Mentifisto', 'MF-Warburg', 'NahidSultan', 'Pmlineditor', 'QuiteUnusual', 'RadiX', 'Ruslik0', 'Rxy', 'Shanmugamp7', 'Sjoerddebruin', 'Stryn', 'Tegel', 'Teles', 'There\'sNoTime', 'Trijnstel', 'Vituzzu', '%D8%B9%D9%84%D8%A7%D8%A1' ];
		var stewards_str = '|' + stewards.join( '|' ) + '|';

		// Ombudsmen
		var ombudsmen = [ 'Billinghurst' , 'Dyolf77' , 'Elmacenderesi' , 'Góngora' , 'Jamie Tubers' , 'Krd' , 'Pajz' , 'Saileshpat' , 'Teles' ];
		var ombudsmen_str = '|' + ombudsmen.join( '|' ) + '|';

		if (
			mw.config.get( 'wgCanonicalNamespace' ) === 'Special' ||
			mw.config.get( 'wgAction' ) === 'history' ||
			mw.config.get( 'wgNamespaceNumber' ) % 2 === 1 ||
			mw.config.get( 'wgCanonicalNamespace' ) === 'User' ||
			mw.config.get( 'wgCanonicalNamespace' ) === 'Project' ||
			mw.config.get( 'wgCanonicalNamespace' ) === 'Help' ||
			mw.util.getParamValue( 'diff' ) !== null
		) {
			var i;
			var aNode;
			var allanchors = $content.get( 0 ).getElementsByTagName( 'A' );
			var searchExp = /.wiki.User.(.+)/;
			var trenn = mw.config.get( 'wgArticlePath' ).replace( '$1', mw.config.get( 'wgFormattedNamespaces' )[ 2 ] );
			var marker;
			var mainpageanchor;
			var href;

			mw.util.addCSS( 'span.adminMark { font-weight: bold; }' );
			for ( i = 0; i < allanchors.length; i++ ) {
				aNode = allanchors[ i ];
				mainpageanchor = true;
				// if it's a link to a user
				if ( ( href = aNode.getAttribute( 'href' ) ) && ( href.indexOf( trenn ) !== -1 ) ) {
					var currUser = searchExp.exec( href )[ 1 ];
					var currUserClean = currUser.replace( /\/.*/, '' );
					if ( currUserClean !== currUser ) {
						mainpageanchor = false;
					}
					currUser= '|' + currUserClean + '|';
					marker = [];

					// is this user an admin?
					if ( admins_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'A' );
					}
					// is this user an adminbot?
					if ( botadmins_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'A-Bot' );
					}
					// is this user a renamed admin?
					if ( renadmins_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'A-Ren' );
					}
					// is this user a bureaucrat?
					if ( bureaucrats_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'B' );
					}
					// is this user a checkuser?
					// if ( checkusers_str.indexOf( currUser ) !== -1 ) { marker.push( 'CU' ) };
					// is this user an oversighter?
					if ( oversights_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'OS' );
					}
					// is this user a staff member?
					if ( staff_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'Staff' );
					}
					// is this user a steward?
					if ( stewards_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'S' );
					}
					// is this user an ombudsman?
					if ( ombudsmen_str.indexOf( currUser ) !== -1 ) {
						marker.push( 'Omb' );
					}

					// don't mark certain pages, except link to user main page
					if ( mainpageanchor &&
						// check finished, now append node
						marker.length > 0
					) {
						// Variante 1 (traditionell)
						// var aMark = document.createElement( 'b' );
						// Variante 2 (vom Erzbschof)
						var aMark = document.createElement( 'span' );
						aMark.className = 'adminMark';

						var aMarkText = document.createTextNode( ' (' + marker.join( '/' ) + ')' );
						aMark.appendChild( aMarkText );
						aNode.appendChild( aMark );
					}
				}
			}
		}
	}

	mw.hook( 'wikipage.content' ).add( markAdmins );

}( mediaWiki, jQuery ) );