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
( function ( mw, $ ) {
var $dialog;
usprop: 'registration',
format: '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,
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,
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: ' +
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 ) );
|