MediaWiki:Gadget-nav-requisiti.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.
/**
* Gadget-nav-requisiti.js
* Aggiunge un link "Verifica requisiti di voto" con il quale è possibile visualizzare
* le informazioni su data di registrazione, primo, 50esimo e 500esimo edit di un utente.
*
* Questa è una riscrittura da zero a partire da:
* http://it.wikipedia.org/w/index.php?title=Wikipedia:Monobook.js/Requisiti.js&oldid=38597188
*
* @author [[Utente:Rotpunkt]]
*/
/*global mediaWiki, jQuery */
( function ( mw, $ ) {
'use strict';
var $dialog;
// Ritorna la data di registrazione dell'utente
function getRegistration( user, registrationHandler ) {
$.ajax( {
url: mw.util.wikiScript( 'api' ),
data: {
action: 'query',
list: 'users',
ususers: user,
usprop: 'registration',
format: 'json'
},
dataType: 'json'
} )
.done( function ( data ) {
registrationHandler( data.query.users[0].registration );
} );
}
// Ritorna i contributi dell'utente in formato JSON
function getUserContribs( user, start, contribsHandler ) {
$.ajax( {
url: mw.util.wikiScript( 'api' ),
data: {
action: 'query',
list: 'usercontribs',
ucuser: user,
ucprop: 'timestamp',
ucstart: start,
ucdir: 'newer',
uclimit: '500',
format: 'json'
},
dataType: 'json'
} )
.done( function ( data ) {
contribsHandler( data.query.usercontribs );
} );
}
// Parsifica un timestamp in date (1 gen 2001) e time (01:23)
function parseTimestamp( timestamp ) {
var date, hours, minutes, months;
date = new Date( timestamp );
hours = date.getHours();
minutes = date.getMinutes();
months = [
'gen', 'feb', 'mar', 'apr', 'mag', 'giu',
'lug', 'ago', 'set', 'ott', 'nov', 'dic'
];
return date.getDate() + ' ' + months[date.getMonth()] + ' ' +
date.getFullYear() + ' alle ' +
( hours < 10 ? '0' + hours : hours ) + ':' +
( minutes < 10 ? '0' + minutes : minutes );
}
function buildResult( registration, contribs ) {
var info = '', totcontribs = 'l\'utente ha fatto solo ' + contribs.length + ' modifiche';
info += 'Registrazione: ' + parseTimestamp( registration ) + '<br/>';
info += 'Prima modifica: ' + ( contribs.length > 0 ? parseTimestamp( contribs[0].timestamp ) : totcontribs ) + '<br/>';
info += '50esima modifica: ' + ( contribs.length >= 50 ? parseTimestamp( contribs[49].timestamp ) : totcontribs ) + '<br/>';
info += '500esima modifica: ' + ( contribs.length >= 500 ? parseTimestamp( contribs[499].timestamp ) : totcontribs );
return info;
}
/**
* Richiede il nome utente.
*/
function showDialog() {
var $label, $inputText, $spinner, $result;
if ( !$dialog ) {
$dialog = $( '<div>' ).attr( 'id', 'gds-dialog' ).appendTo( 'body' );
}
$label = $( '<label>' ).css( { display: 'block', 'margin': '10px 0 2px 0' } )
.text( 'Nome utente:' );
$inputText = $( '<input/>' ).attr( 'type', 'text' ).attr( 'size', 40 );
$result = $( '<p>' );
$spinner = $.createSpinner( { size: 'large', type: 'block' } ).css( 'margin', '10px' ).hide();
$dialog.empty().append( $label, $inputText, $result, $spinner );
$dialog.dialog( {
title: 'Accessorio verifica requisiti di voto',
position: { my: 'center', at: 'center', of: window },
buttons: {
'Cerca': function () {
if ( $spinner.is( ':visible' ) ) {
return;
}
var user = $.trim( $inputText.val() );
if ( user.length === 0 ) {
alert( 'Il nome utente è obbligatorio.' );
} else {
$result.html( 'Ricerca in corso...' );
$spinner.show();
getRegistration( user, function ( registration ) {
if ( registration ) {
getUserContribs( user, registration, function ( contribs ) {
$spinner.hide();
$result.html( buildResult( registration, contribs ) );
} );
} else {
$spinner.hide();
$result.empty();
alert( 'L\'utente ' + user + ' non è registrato' );
}
} );
}
},
'Annulla': function () {
$( this ).dialog( 'close' );
}
}
} );
}
$( function () {
var portletLink = mw.util.addPortletLink( 'p-navigation', '#', 'Verifica requisiti di voto' );
$( portletLink ).click( function ( event ) {
event.preventDefault();
mw.loader.using( [ 'jquery.ui.dialog', 'jquery.spinner' ], function () {
showDialog();
} );
} );
} );
}( mediaWiki, jQuery ) );