MediaWiki:Group-sysop.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/* Le JavaScript inclus ici n’affectera que les administrateurs */

// Pour afficher un message d'avertissement en cas de tentative de bloquer un bot
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Block' ) {

	mw.loader.using( 'mediawiki.api', function () {
		$( function ( $ ) {
			'use strict';

			var $message = $( '<span style="font-weight:bold; display:none;">Cet utilisateur est un bot : ne pas bloquer son IP</span>' );
			$( '#mw-bi-target' ).parents( '.oo-ui-fieldLayout' ).after( $message );

			var bots = [];

			getBots();

			function getBots( paramsContinue ) {
				var params = {
					action: 'query',
					list: 'allusers',
					augroup: 'bot',
					aulimit: 5000, // limite API 5000 car on sait que le script est exécuté par un admin
				};
				if ( paramsContinue ) {
					Object.assign( params, paramsContinue );
				}
				new mw.Api().get( params ).then( function ( data ) {
					data.query.allusers.forEach( function ( user ) {
						bots.push( user.name );
					} );
					if ( data['continue'] ) {
						getBots( data['continue'] );
					} else {
						registerEvents();
					}
				} );
			}

			function registerEvents() {
				var $nameInput = $( '#mw-bi-target' ).find( 'input' );

				// si le nom d'utilisateur est modifié, refaire la vérification
				// note : ne fonctionne pas lorsque clic sur un élément de la liste d'autocomplétion
				$nameInput.on( 'input', checkBlockBotWithIP );
				// et également faire la vérification avec la valeur initiale
				$nameInput.each( checkBlockBotWithIP );
			}

			function checkBlockBotWithIP() {
				if ( bots.includes( this.value ) ) {
					$message.show();
					$( '#mw-input-wpAutoBlock' ).find( 'input' ).prop( 'checked', false );
				} else {
					$message.hide();
					$( '#mw-input-wpAutoBlock' ).find( 'input' ).prop( 'checked', true );
				}
			}

		} );
	} );
}