MediaWiki:Gadget-nav-requisiti.js

Versione del 6 mag 2014 alle 10:36 di Rotpunkt (discussione | contributi) (Nuovo gadget)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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 alert: false, prompt: false, document: false, mediaWiki: false, jQuery: false */

(function (mw, $) {
    'use strict';

    // 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 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, 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 showInfo(user, registration, contribs) {
        var info = 'Analisi requisiti di "' + user + '":\n\n',
            totcontribs = 'l\'utente ha fatto solo ' + contribs.length + ' modifiche';
        info += 'Registrazione: ' + parseTimestamp(registration) + '\n';
        info += 'Prima modifica: ' +  (contribs.length > 0 ? parseTimestamp(contribs[0].timestamp) : totcontribs) + '\n';
        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);
    }

    $(document).ready(function () {
        var portletLink = mw.util.addPortletLink('p-navigation', '#', 'Verifica requisiti di voto');
        $(portletLink).click(function (event) {
            event.preventDefault();
            var user = prompt('Quale utente devi controllare?');
            if (user !== null && user.trim().length > 0) {
                getRegistration(user, function (registration) {
                    getUserContribs(user, registration, function (contribs) {
                        showInfo(user, registration, contribs);
                    });
                });
            }
        });
    });
}(mediaWiki, jQuery));