Utente:Titore/VC.js

Versione del 27 mar 2021 alle 00:44 di Titore (discussione | contributi) (aggiunge la sottosezione con la data se non già esistente)

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.

/**
 * Aggiunge un link nella barra degli strumenti laterale
 * per segnalare rapidamente un'utenza o un IP tra i vandalismi in corso.
 * Permette di scegliere una motivazione, l'utenza viene selezionata automaticamente.
 *
 * @author https://it.wikipedia.org/wiki/Utente:Titore and contributors
 * @date 2019-09-17
 * @license Dual-licensed under CC BY-SA 3.0 and GPL 3.0 (or any later version)
 */
(function(mw, $) {
	var utente = mw.config.get('wgRelevantUserName');

    /**
     * Aggiunge il link "Segnala vandalo" in pagine pertinenti (ad es. contributi utente, discussioni utente, pagina utente)
     */
    $(function() {
        if (utente) {
            var link = mw.util.addPortletLink('p-tb', '#', "Segnala vandalo", "t-segnalavandalo", "Segnala questa utenza o IP in WP:VC");

            $(link)
                .click(function(event) {
                    event.preventDefault();
                    finestraSegnalazione();
                });
        }
    });

    /**
     * Finestra di dialogo
     */
    function finestraSegnalazione(event) {
        mw.loader.using('oojs-ui-windows')
            .done(function() {
                OO.ui.prompt(utente + ' verrà segnalato tra i vandalismi in corso', {
                        title: 'Nuova segnalazione',
                        textInput: { placeholder: 'Motivazione \(senza firma\)' },
                        size: 'medium'
                    })
                    .done(function(motivo) {
                    	inviaSegnalazione(motivo);
                    });
            })
            .fail(function() {
                console.error('Impossibile avviare lo script VC.js.');
            });
    }

    /**
     * Nuova segnalazione in WP:VC
     */
    function inviaSegnalazione(motivo) {
    	
        // Motivazione compilata
        if (motivo) {
            api = new mw.Api();
            var pagina = 'Wikipedia:Vandalismi in corso';
            var oggetto = '+1';
            var segnalazione = '{{vandalo|' + utente + '}} ' + motivo + ' --~~\~~';
            
            // Aggiunge la sottosezione con la data se non già esistente
            api.get({
            	action: 'parse',
            	page: pagina,
            	prop: 'sections',
            	format: 'json'
            })
            .done(function(data) {
            	var dataOdierna = new Date().toLocaleDateString("it-IT", { day: 'numeric', month: 'long'});
            	var dataUltimaSezione = data.parse.sections[data.parse.sections.length-1].line;
            	var testo = (dataOdierna == dataUltimaSezione)? ('\n\n' + segnalazione) : ('\n\n=== ' + dataOdierna + ' ===\n' + segnalazione);

            // Invia segnalazione
            api.postWithEditToken({
                    action: 'edit',
                    title: pagina,
                    appendtext: testo,
                    summary: oggetto,
                    format: 'json'
                })
                .done(function(data) {
                    // [[Phab:T75714]]: Non è ancora possibile usare template literal (ES2015) per migliorare la leggibilità.
                    // mw.notify( $(`<span>${utente} segnalato tra i <a href="/wiki/${pagina}#footer">vandalismi in corso</a>.</span>`), {
                    mw.notify( $('<span>' + utente + ' segnalato tra i ' + '<a href="/wiki/' + pagina + '#footer">vandalismi in corso</a>.</span>'), {
                        title: 'Segnalato',
                        tag: 'notif'
                    });
                    console.log('L\'utente ha scritto "' + motivo + '" e fatto clic su "OK".');
                    console.log(data);
                })
                .fail(function(code, data) {
                    mw.notify(code, {
                        title: 'Errore',
                        type: 'error',
                        autoHide: false,
                        tag: 'notif'
                    });
                    console.error('Segnalazione non inviata: ' + code);
                });
            });

        // Motivazione non compilata
        } else if (motivo === '') {
            mw.notify('Fornire una motivazione', {
                title: 'Errore',
                type: 'error',
                autoHide: false,
                tag: 'notif'
            });
            console.error('L\'utente non ha fornito una motivazione');

        // Clic su annulla
        } else {
            console.warn('L\'utente ha fatto clic su "Annulla" o chiuso la finestra di dialogo.');
        }
    }
}(mediaWiki, jQuery));

// TODO
// ordinale il primo del mese
// warn se il vandalo non è stato avvisato
// drop down motivazioni frequenti
// normale textinput anziché dialoghino
// lista ultime segnalazioni
// solo autoverificati?