MediaWiki:Gadget-contribsrange.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./*
* ContribsRange
*
* Facilite la recherche de contributions de plages d'IP en utilisant une astérisque.
*
* Auteur : [[User:0x010C]]
* {{Projet:JavaScript/Script|ContribsRange}}
*/
// Go forward only if the user is on the Contributions special page
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions' ) {
$( function ( $ ) {
'use strict';
function replaceWildcardWithCIDR( $input, totalNumbers, numberWeight, separator ) {
var value = $input.val();
// Calculate the CIDR prefix
var nbNumbers = value.split( separator ).length - 1;
var cidr = nbNumbers * numberWeight;
// Remove the wildcard
value = value.slice( 0, -2 );
// Add missing numbers
for ( ; nbNumbers < totalNumbers ; nbNumbers++ ) {
value += separator + '0';
}
// Add the CIDR prefix
value += '/' + cidr;
// Replace the value in the inputbox
$input.val( value );
}
var $form = $( '#mw-target-user-or-ip' ).closest( 'form' );
// Wait for the user to submit the form
$form.submit( function () {
var $input = $( '#mw-target-user-or-ip' ).find( 'input' );
// Search for a wildcarded IPv4
var patternIPv4Wildcard = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){1,3}\*$/i;
if ( patternIPv4Wildcard.test( $input.val() ) ) {
replaceWildcardWithCIDR( $input, 4, 8, '.' );
}
// Search for a wildcarded IPv6
// Don't match ::, because we can't extrapolate any range with it
var patternIPv6Wildcard = /^([a-f0-9]{1,4}:){1,7}\*$/i;
if ( patternIPv6Wildcard.test( $input.val() ) ) {
replaceWildcardWithCIDR( $input, 8, 16, ':' );
}
} );
} );
}