MediaWiki:Group-sysop.js
Apparence
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) ;
Firefox (sur GNU/Linux) / 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 );
}
}
} );
} );
}