Utente:Titore/VC.js: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
ordinale per il primo del mese |
avvisa se vandalo già bloccato, refactoring |
||
Riga 25:
$(link).click((event) => {
event.preventDefault();
});
}
/**
*
*/
function
mw.loader.using('oojs-ui-windows')
.done(() => {
finestraDiDialogo();
})
.fail(() => {
Riga 50 ⟶ 43:
/**
*
*/
function
OO.ui.prompt(utente + ' verrà segnalato tra i vandalismi in corso', {
title: 'Nuova segnalazione',
textInput: { placeholder: 'Motivazione \(senza firma\)' },
size: 'medium'
}).done((motivo) => {
switch (motivo) {
// Clic su annulla
case null:
console.warn('L\'utente ha fatto clic su "Annulla" o ha chiuso la finestra di dialogo.');
break;
// Motivazione non compilata
case '':
mw.notify('Fornire una motivazione', {
title: 'Errore',
type: 'error',
autoHide: false,
tag: 'notif'
});
console.error('L\'utente non ha fornito una motivazione');
break;
// Motivazione compilata
default:
controllaBlocco(utente, blocco => {
if (blocco) {
OO.ui.alert(utente + ' risulta già bloccato.', { title: 'Segnalazione non inviata' });
console.log('Segnalazione non inviata: ' + utente + ' già bloccato.\nIl testo era: "' + motivo + '"');
} else {
inviaSegnalazione('{{vandalo|' + utente + '}} ' + motivo + ' --~~\~~');
}
});
}
});
}
/**
* Invia la segnalazione.
*
* @param {string} segnalazione
*/
function inviaSegnalazione(segnalazione) {
// Data odierna, ordinale per il primo del mese
const dataOdierna = new Date()
.toLocaleDateString("it-IT", { day: 'numeric', month: 'long' })
.replace(/\b[1] /, '1º ');
// URL per link in notifica
const url = mw.config.get('wgArticlePath').replace('$1', paginaSegnalazioni);
// Per aggiungere sottosezione con data se non già esistente
parsingSezioni(titoloUltimaSezione => {
api.postWithEditToken({
action: 'edit',
title: paginaSegnalazioni,
appendtext: (dataOdierna == titoloUltimaSezione) ? ('\n\n' + segnalazione) : ('\n\n=== ' + dataOdierna + ' ===\n' + segnalazione),
summary: oggetto
}).done((data) => {
mw.notify($('<span>' + utente + ' è stato segnalato tra i ' + '<a href="' + url + '#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',
Riga 68 ⟶ 120:
tag: 'notif'
});
console.error('
});
}
/**
* Parsing della pagina per ricavarne i titoli delle sezioni.
*
* @
*/
function
page: paginaSegnalazioni,
action: 'parse',
prop: 'sections'
}).done(data => {
titoloUltimaSezione(
data.parse.sections[data.parse.sections.length - 1].line
// ordinale per il primo del mese
.replace(/\b[1] /, '1º ')
.replace('1° ', '1º ')
);
});
}
/**
* Controlla se l'utente è bloccato.
*
* @param {string} utente
* @param {function} blocco - Risultato
*/
function controllaBlocco(utente, blocco) {
api.get({
action: 'query',
list: 'blocks',
bkusers: utente,
bklimit: '1',
bkprop: 'by',
format: 'json'
}).done(data => {
blocco(data.query.blocks[0]);
});
}
Riga 127 ⟶ 167:
// TODO
// [[Phab:T75714]]: Non è ancora possibile usare string literal (ES2015)
// avvisare se il vandalo:
// è già stato segnalato di recente
// non è stato avvisato
// drop down motivazioni frequenti
|