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();
finestraDiDialogoavviaScript();
});
}
 
/**
* FinestraAvvia dilo dialogoscript.
*/
function finestraDiDialogoavviaScript() {
mw.loader.using('oojs-ui-windows')
.done(() => {
finestraDiDialogo();
OO.ui.prompt(utente + ' verrà segnalato tra i vandalismi in corso', {
title: 'Nuova segnalazione',
textInput: { placeholder: 'Motivazione \(senza firma\)' },
size: 'medium'
})
.done((motivo) => {
inviaSegnalazione(motivo);
});
})
.fail(() => {
Riga 50 ⟶ 43:
 
/**
* NuovaFinestra segnalazionedi dialogo
*/
function inviaSegnalazionefinestraDiDialogo(motivo) {
OO.ui.prompt(utente + ' verrà segnalato tra i vandalismi in corso', {
switch (motivo) {
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('L\'utenteSegnalazione non hainviata: fornito' una+ motivazione'code);
});
break });
 
// Motivazione compilata
default:
const segnalazione = '{{vandalo|' + utente + '}} ' + motivo + ' --~~\~~';
parsing().then((jsonData) => {
var titoloUltimaSezione = jsonData.parse.sections[jsonData.parse.sections.length - 1].line
// ordinale per il primo del mese
.replace(/\b[1] /, '1º ')
.replace('1° ', '1º ');
var dataOdierna = new Date().toLocaleDateString("it-IT", { day: 'numeric', month: 'long' })
.replace(/\b[1] /, '1º ');
 
api.postWithEditToken({
action: 'edit',
title: paginaSegnalazioni,
// 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.
*
* @returnsparam {objectfunction} titoloUltimaSezione - jQuery.Promise.Risultato
*/
function parsingparsingSezioni(titoloUltimaSezione) {
return api.get({
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
// è già bloccato
// non è stato avvisato
// drop down motivazioni frequenti