Utente:Titore/VC.js: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiunge la sottosezione con la data se non già esistente |
refactoring |
||
Riga 2:
* Aggiunge un link nella barra degli strumenti laterale
* per segnalare rapidamente un'utenza o un IP tra i vandalismi in corso.
*
* @author https://it.wikipedia.org/wiki/Utente:Titore and contributors
Riga 8 ⟶ 7:
* @license Dual-licensed under CC BY-SA 3.0 and GPL 3.0 (or any later version)
*/
(function (mw, $) {
// API MediaWiki per lettura e invio dati
const api = new mw.Api();
// Nome utente e pagine attinenti (es. contributi, discussioni, pagina utente)
const utente = mw.config.get('wgRelevantUserName');
// Pagina di
const paginaSegnalazioni = 'Wikipedia:Vandalismi in corso';
// Campo oggetto
const oggetto =
// Aggiunge link nella barra degli strumenti laterale
if (utente) {
var link = mw.util.addPortletLink('p-tb', '#', "Segnala vandalo", "t-segnalavandalo", "Segnala questa utenza o IP in WP:VC");
$(link).click((event) => {
event.preventDefault();
finestraDiDialogo();
});
}
/**
* Finestra di dialogo
*/
function
mw.loader.using('oojs-ui-windows')
.done(
OO.ui.prompt(utente + '
.done(
});
})
.fail(
console.error('Impossibile avviare lo script VC.js.');
});
Riga 47 ⟶ 50:
/**
* Nuova segnalazione
*/
function inviaSegnalazione(motivo) {
switch (motivo) {
//
console.warn('L\'utente ha fatto clic su "Annulla" o ha chiuso la finestra di dialogo.');
// Motivazione non
type: 'error',
autoHide: false,
tag: 'notif'
});
console.error('L\'utente non ha fornito una motivazione');
break;
// Motivazione
const segnalazione = '{{vandalo|' + utente + '}} ' + motivo + ' --~~\~~';
var titoloUltimaSezione = jsonData.parse.sections[jsonData.parse.sections.length - 1].line;
var dataOdierna = new Date().toLocaleDateString("it-IT", { day: 'numeric', month: 'long' });
// Aggiunge sottosezione con data se non già esistente
appendtext: (dataOdierna == titoloUltimaSezione) ? ('\n\n' + segnalazione) : ('\n\n=== ' + dataOdierna + ' ===\n' + segnalazione),
summary: oggetto
})
.done((data) => {
// [[Phab:T75714]]: Non è ancora possibile usare string literal (ES2015)
mw.notify($('<span>' + utente + ' è stato segnalato tra i ' + '<a href="' + mw.config.get('wgArticlePath').replace('$1', paginaSegnalazioni) + '#footer">vandalismi in corso</a>.</span>'), {
title: 'Segnalato',
tag: 'notif'
});
console.log('L\'utente ha scritto "' + motivo + '" e ha fatto clic su "OK".');
console.log(data);
})
.fail((code) => {
mw.notify(code, {
title: 'Errore',
type: 'error',
autoHide: false,
tag: 'notif'
});
console.error('Segnalazione non inviata: ' + code);
});
});
}
}
/**
* Parsing della pagina per ricavarne i titoli delle sezioni.
*
* @returns {object} - jQuery.Promise.
*/
function parsing() {
return api.get({
page: paginaSegnalazioni,
action: 'parse',
prop: 'sections'
});
}
}(mediaWiki, jQuery));
// TODO
// ordinale il primo del mese
//
// è già stato segnalato di recente
// è già bloccato
// non è stato avvisato
// drop down motivazioni frequenti
// textinput invece di prompt (poco spazio per inserire la motivazione)
// solo autoverificati?
|