MediaWiki:Gadget-nav-requisiti.js: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuovo gadget
 
aggiornato all'uso di jquery dialog
Riga 9:
* @author [[Utente:Rotpunkt]]
*/
/*global alert: false, prompt: false, document: false, mediaWiki: false, jQuery: false */
 
( 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) {
if (data.query.users[0].registration) {
registrationHandler(data.query.users[0].registration);
} else {
alert('L\'utente ' + user + ' non è registrato');
}
});
}
 
// Ritorna ila contributidata di registrazione dell'utente in formato JSON
function getUserContribsgetRegistration( user, start,registrationHandler contribsHandler) {
$.ajax( {
url: mw.util.wikiScript( 'api' ),
data: {
action: 'query',
list: 'usercontribsusers',
ucuser ususers: user,
usprop: 'registration',
ucstart: start,
format: 'json'
ucdir: 'newer',
},
uclimit: '500',
format dataType: 'json'
} )
},
.done( function ( data ) {
dataType: 'json'
registrationHandler( data.query.users[0].registration );
})
} );
.done(function (data) {
}
contribsHandler(data.query.usercontribs);
});
}
 
// Ritorna i contributi dell'utente in formato JSON
// Parsifica un timestamp in date (1 gen 2001) e time (01:23)
function getUserContribs( user, start, contribsHandler ) {
function parseTimestamp(timestamp) {
$.ajax( {
var date, hours, minutes, months;
url: mw.util.wikiScript( 'api' ),
data: {
action: 'query',
list: 'usercontribs',
ucuser: user,
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)
date = new Date(timestamp);
function parseTimestamp( timestamp ) {
hours = date.getHours();
var date, hours, minutes, = date.getMinutes()months;
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);
}
 
date = new Date( timestamp );
function showInfo(user, registration, contribs) {
hours = date.getHours();
var info = 'Analisi requisiti di "' + user + '":\n\n',
minutes = date.getMinutes();
totcontribs = 'l\'utente ha fatto solo ' + contribs.length + ' modifiche';
months = [
info += 'Registrazione: ' + parseTimestamp(registration) + '\n';
'gen', 'feb', 'mar', 'apr', 'mag', 'giu',
info += 'Prima modifica: ' + (contribs.length > 0 ? parseTimestamp(contribs[0].timestamp) : totcontribs) + '\n';
'lug', 'ago', 'set', 'ott', 'nov', 'dic'
info += '50esima modifica: ' + (contribs.length >= 50 ? parseTimestamp(contribs[49].timestamp) : totcontribs) + '\n';
];
info += '500esima modifica: ' + (contribs.length >= 500 ? parseTimestamp(contribs[499].timestamp) : totcontribs);
alert(info);
}
 
return date.getDate() + ' ' + months[date.getMonth()] + ' ' +
$(document).ready(function () {
date.getFullYear() + ' alle ' +
var portletLink = mw.util.addPortletLink('p-navigation', '#', 'Verifica requisiti di voto');
( hours < 10 ? '0' + hours : hours ) + ':' +
$(portletLink).click(function (event) {
( minutes < 10 ? '0' + minutes : minutes );
event.preventDefault();
}
var user = prompt('Quale utente devi controllare?');
 
if (user !== null && user.trim().length > 0) {
function buildResult( registration, contribs ) {
getRegistration(user, function (registration) {
var info = '', totcontribs = 'l\'utente ha fatto solo ' + contribs.length + ' modifiche';
getUserContribs(user, registration, function (contribs) {
info += 'Registrazione: ' + showInfoparseTimestamp(user, registration, contribs) + '<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;
});
}
});
}(mediaWiki, jQuery));
/**
* 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 ) );