MediaWiki:Group-checkuser.js
Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.
Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
/* jshint maxerr:500 */
/*<nowiki>
* JS caricato solo dagli utenti del gruppo checkuser
* Permettere di scegliere rapidamente da una lista le comuni motivazioni dei CU
* @author [[Utente:Melos]]
* @ToDo Questo script probabilmente avrà grossi problemi e andrà in parte riscritto quando
* anche l'estensione CheckUser userà OOUI.
* @ToDo Il "fatto" andrebbe messo solo se tutte le azioni richieste vengono eseguite
* con successo.
*/
$(function( mw, $ ){
function getRCUPermalink() {
return $.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
titles: 'Wikipedia:Check_user/Richieste'
}
).then( function ( data ) {
if ( !data.query.pages ) {
alert( 'Nessun permalink trovato!' );
return;
}
var pagercu = Object.keys( data.query.pages )[0],
lastrevrcu = data.query.pages[pagercu].lastrevid;
return '[[WP:RCU|Richiesta]] [[Special:Permalink/' +
lastrevrcu + '#Richieste inevase|Link permanente]]';
} );
}
function show() {
var $cuInput = $('#checkreason')
.addClass( 'oo-ui-comboBoxInputWidget' )
.find( 'input' ),
buttonMenu = new OO.ui.ButtonMenuSelectWidget( {
classes: [ 'oo-ui-comboBoxInputWidget-dropdownButton' ],
indicator: 'down',
} ),
motivicu = [
{ data:'', label:' ' },
{ data:'link', label:'[[RCU]] + Permalink' },
{ data:'Abuso di utenze multiple', label:'Abuso di utenze multiple' },
{ data:'Sospetto sockmaster', label:'Sospetto sockmaster' },
{ data:'Sospetta evasione del blocco', label:'Evasione' },
{ data:'Spambot', label:'Spambot' },
{ data:'Vandalismi', label:'Vandalismi' },
{ data:'Abuso crosswiki', label:'Abuso crosswiki' }
];
mw.util.addCSS(
'#sceltaMotivi { margin-left:8px; margin-top: 0.2em; }' +
'.cuScript-done { margin: 0.5em; color: green; font-weight:bold; }' +
'#sceltaMotiviBlocco { margin-bottom: 0.5em; }'+
'#cuscript-blocktag, #cuscript-talktag { margin-left:5px; margin-top: 0.2em; }'
);
for(var i = 0, len = motivicu.length; i < len; i++) {
buttonMenu.getMenu().addItems( [
new OO.ui.MenuOptionWidget( motivicu[ i ] )
] );
}
$cuInput
.wrap( '<div class=oo-ui-comboBoxInputWidget-field>' )
.after( buttonMenu.$element );
buttonMenu.getMenu().on( 'choose', function ( menuOption ) {
var data = menuOption.getData();
var promise = data == 'link' ?
getRCUPermalink() :
$.Deferred().resolve( data );
promise.done( function ( label ) {
$cuInput.val( label );
} );
} );
// Pulsante per blocco e protezione
var checkuserblocksubmit = $('#checkuserblocksubmit'),
buttonScriptblocksubmit = new OO.ui.ButtonWidget( {
label: 'Blocca & proteggi utenti selezionati',
icon: 'lock'
} );
buttonScriptblocksubmit.on( 'click', doBlock );
checkuserblocksubmit.after ( buttonScriptblocksubmit.$element );
// Link di scelta Sostituisci pagine utente
$('#blocktag').after($('<span>', {id:'cuscript-blocktag'}));
$('#cuscript-blocktag').append(
$("<a>", {
text: "Bloccoinfinito",
href: '#',
title: "Inserisci {{BloccoInfinito}}",
click: function updateBloccoInfinito () {
OO.ui.infuse($('#blocktag')).setValue('{{BloccoInfinito}}');
return false;
}
}),
$("<a>", {
text: "SP",
title: "Inserisci {{SP}}",
href: '#',
class:"cuscript-link",
click: function updateSP () {
sock= prompt('Inserisci il nome utente principale (senza [[utente:)');
OO.ui.infuse($('#blocktag')).setValue('{{SP|' + sock + '}}');
return false;
}
}),
$("<a>", {
text: "Bloccoinfinito + SP",
title: "Inserisci {{BloccoInfinito}} + {{SP}}",
href:'#',
class:"cuscript-link",
click:function updateBISP () {
sock= prompt('Inserisci il nome utente principale (senza [[utente:)','');
OO.ui.infuse($('#blocktag')).setValue('{{BloccoInfinito}}{{SP|' + sock + '}}');
return false;
}
})
);
$('#cuscript-blocktag').find('a').slice(1).before(' | ');
// Link di scelta Sostituisci pagine di discussione
$('#talktag').after($('<span>', {id:'cuscript-talktag'}));
$('#cuscript-talktag').append(
$("<a>", {
text: "Bloccoinfinito",
href: '#',
title: "Inserisci {{BloccoInfinito}}",
click: function updateBloccoInfinitoTalk () {
OO.ui.infuse($('#talktag')).setValue('{{BloccoInfinito}}');
return false;
}
}),
$("<a>", {
text: "SP",
title: "Inserisci {{SP}}",
href: '#',
class: "cuscript-link",
click: function updateSPTalk () {
sock= prompt('Inserisci il nome utente principale (senza [[utente:)');
OO.ui.infuse($('#talktag')).setValue('{{SP|' + sock + '}}');
return false;
}
}),
$("<a>", {
text: "Bloccoinfinito + SP",
title: "Inserisci {{BloccoInfinito}} + {{SP}}",
href:'#',
class:"cuscript-link",
click:function updateBISPTalk () {
sock= prompt('Inserisci il nome utente principale (senza [[utente:)','');
OO.ui.infuse($('#talktag')).setValue('{{BloccoInfinito}}{{SP|' + sock + '}}');
return false;
}
})
);
$('#cuscript-talktag').find('a').slice(1).before(' | ');
}
function doBlock() {
$( '#checkuserresults li input:checked' ).each( function blockAtom () {
var $elem = $(this),
user = $elem.val(),
blockReason = OO.ui.infuse( $('#blockreason') ).dropdowninput.getValue(),
blockReasonOther = OO.ui.infuse( $('#blockreason') ).textinput.getValue();
if( blockReason !== 'other' ) {
if (blockReasonOther.trim() !== ''){
finalBlockReason = blockReason + ": " + blockReasonOther.trim();
} else {
finalBlockReason = blockReason;
}
} else {
finalBlockReason = blockReasonOther.trim();
}
apiBlock(user, finalBlockReason, $elem);
});
}
function apiBlock( username, lareason, $objscan ) {
//Blocca
var stringablocco = {
format: 'json',
action: 'block',
user: username,
expiry: 'infinite',
reason: lareason,
reblock:'',
nocreate: '',
autoblock: ''
},
blockemail = OO.ui.infuse($('#blockemail'));
if( blockemail.isSelected() ){
stringablocco.noemail = '';
}
new mw.Api().postWithToken( 'csrf', stringablocco )
.done( function editAfterBlock () {
$objscan.after($('<span class="cuScript-done">').append('Fatto'));
edita (username);
} )
.fail( function reportBlockFailure ( err ) {
alert( "Impossibile bloccare l'utente " + username +". Messaggio di errore: " + err );
} );
}
function edita( username ) {
var usetag = OO.ui.infuse($('#usetag')),
usettag = OO.ui.infuse($('#usettag'));
if( usetag.isSelected() ) {
new mw.Api().postWithToken( 'csrf',
{
format: 'json',
action: 'edit',
title: 'User:' + username,
text: OO.ui.infuse($('#blocktag')).getValue(),
summary:'Utente [[WP:BLOCCO|bloccato infinito]]',
recreate:''
}
)
.done( function proteggiPostPUEdit () {
proteggi (username, 'putente');
} )
.fail ( function reportUPEditFailure ( err ) {
alert( "Impossibile modificare la pagina utente. Messaggio di errore: " + err );
} );
} else {
proteggi (username, 'putente');
}
if( usettag.isSelected() ) {
new mw.Api().postWithToken( 'csrf',
{
format: 'json',
action: 'edit',
title: 'User talk:' + username,
text: OO.ui.infuse($('#talktag')).getValue(),
summary:'Utente [[WP:BLOCCO|bloccato infinito]]',
recreate:''
}
)
.done( function proteggiPostTalkEdit () {
proteggi (username, 'talk');
} )
.fail ( function reportTalkEditFailure ( err ) {
alert( "Impossibile modificare la talk. Messaggio di errore: " + err );
} );
}
}
function proteggi( username, cosa ) {
var putente = 'User:' + username,
usetag = OO.ui.infuse($('#usetag'));
switch(cosa){
case 'putente':
$.getJSON( mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
titles: putente,
rawcontinue: ''
},
function proteggiPUtente (data) {
var pageget = Object.keys( data.query.pages )[0],
stringaProtect = {
format: 'json',
action: 'protect',
title: 'User:' + username,
reason: 'Pagina o sottopagina di utente [[WP:BLOCCO|bloccato infinito]]',
expiry:'infinite',
},
protectCreate = pageget === '-1' && usetag.isSelected() === false;
stringaProtect.protections = protectCreate ? 'create=sysop' : 'edit=sysop|move=sysop';
new mw.Api().postWithToken( 'csrf', stringaProtect )
.fail ( function reportUPProtectFailure ( err ) {
alert( "Impossibile proteggere la pagina utente. Messaggio di errore: " + err );
} );
}
);
break;
case 'talk':
//la pagina di discussione deve sempre esserci
new mw.Api().postWithToken( 'csrf',
{
format: 'json',
action: 'protect',
title: 'User talk:' + username,
reason: 'Pagina o sottopagina di utente [[WP:BLOCCO|bloccato infinito]]',
expiry:'infinite',
protections:'edit=sysop|move=sysop'
}
)
.fail ( function reportTalkProtectFailure ( err ) {
alert( "Impossibile proteggere la talk. Messaggio di errore: " + err );
} );
break;
}
}
$( function () {
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'CheckUser' ) {
return;
}
mw.loader.using( [
'mediawiki.api',
'mediawiki.jqueryMsg',
'mediawiki.util',
'oojs-ui-core',
'oojs-ui.styles.indicators',
'oojs-ui-widgets'
] )
.done( function loadMsg () {
new mw.Api().loadMessagesIfMissing( [ 'Ipbreason-dropdown' ] )
.done( show )
.fail( function () {
mw.log.error( 'MediaWiki:Group-checkuser - Errore di caricamento del messaggio ipbreason-dropdown' );
} );
} )
.fail( function () {
mw.log.error( 'MediaWiki:Group-checkuser - Errore di caricamento dei moduli del RL' );
} );
} );
}( mediaWiki, jQuery ));
//</nowiki>