_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

MediaWiki:Gadget-markAdmins.js

In questo articolo affronteremo il tema MediaWiki:Gadget-markAdmins.js, che si è distinto per la sua rilevanza in diversi ambiti della vita quotidiana. Dal suo impatto sull'economia alla sua influenza sulla cultura popolare, MediaWiki:Gadget-markAdmins.js ha suscitato l'interesse e l'attenzione di un ampio spettro di individui. Nel corso della storia, MediaWiki:Gadget-markAdmins.js ha giocato un ruolo determinante nella configurazione di contesti e scenari diversi, definendo modelli e tendenze che hanno lasciato il segno nella società. Attraverso un'analisi profonda e dettagliata, verranno esplorate le molteplici sfaccettature di MediaWiki:Gadget-markAdmins.js, svelandone l'importanza e le implicazioni nel mondo di oggi.
/**
 * This script highlights the users in special groups thanks to a JSON that is
 * populated with these data by a bot (in this case, using APIs).
 *
 * This script needs the page ]
 * @FixMe Find a better place to insert abbrs. The huge fantasy of wikipedians
 *   may produce weird results, e.g. breaking the username when half of it links
 *   to the user page, and the other half to the talk page. This should also avoid
 *   cases where the abbr inherits some CSS from the signature (currently handled
 *   with font-style: initial).
 */

// <nowiki>
( function ( mw, $ ) {
	'use strict';

	// run only if in allowed ns, history, talks, and diffs
	var allowedNs = ,
		disabledPages = ,
		cfgPage = 'Utente:ItwikiBot/AdminList',
		specialPage = mw.config.get( 'wgCanonicalSpecialPageName' );

	if ( ! (
		allowedNs.indexOf( mw.config.get( 'wgCanonicalNamespace' ) ) !== -1 ||
		mw.config.get( 'wgAction' ) === 'history' ||
		mw.config.get( 'wgNamespaceNumber' ) % 2 === 1 ||
		mw.util.getParamValue( 'diff' ) !== null
	) ) {
		return;
	}

	// do nothing in these special pages (to have clean copy-paste)
	if( disabledPages.indexOf( specialPage ) !== -1 ) {
		return;
	}

	mw.hook( 'wikipage.content' ).add( function markAdmins ( $content ) {
		mw.util.addCSS( 'abbr.adminMark { font-style: initial; font-weight: bold; padding-left: 5px; font-size: 0.7em; }' );
		$.getJSON( 'https://wiki386.com/it/' + cfgPage + '?action=raw&ctype=application/json', function processList ( response ) {
			var userNs      = mw.config.get( 'wgFormattedNamespaces' ),
				userPath    = mw.config.get( 'wgArticlePath' ).replace( '$1', userNs ),
				userPattern = /.wiki.Utente.(.+)/;

			// for each link
			$content.find( 'a' ).each( function addPerUserGroups () {
				var $link = $( this ), userPatternMatch,
					href = $link.attr( 'href' ),
					userLink, userName, knownUserGroups, groupShort, groupName, i,
					$container, $abbr;

				// only links to users
				if ( href && href.indexOf( userPath ) !== -1 ) {

					// no sub pages
					userPatternMatch = userPattern.exec( href );
					userLink = userPatternMatch ? userPatternMatch : null;
					if( userLink && userLink.indexOf( '/' ) === -1 ) {
						userName = decodeURIComponent( userLink.replace( /\/.*/, '' ).replace( /_/g, ' ' ) );
						knownUserGroups = response.users;
						if ( knownUserGroups ) {
							$container = $( '<span>' );
							for( i in knownUserGroups ) {
								groupShort = knownUserGroups;
								groupName = response.legend;
								$abbr = $( '<abbr class="adminMark">' )
									.attr( 'title', groupName         )
									.text(          groupShort        );
								$container.append( $abbr );
							}
							$link.after( $container );
						}
					}
				}
			} );
		} );
	} );

} )( mediaWiki, jQuery );
// </nowiki>