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.
* Permette di scegliere una motivazione, l'utenza viene selezionata automaticamente.
*
* @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
var utente = mw.config.get('wgRelevantUserName');
const api = new mw.Api();
 
// Nome utente e pagine attinenti (es. contributi, discussioni, pagina utente)
/**
const 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");
 
// Pagina di $(link)servizio
const paginaSegnalazioni = 'Wikipedia:Vandalismi in corso';
.click(function(event) {
 
event.preventDefault();
// Campo oggetto
finestraSegnalazione();
const oggetto = })'+1';
 
}
// 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 finestraSegnalazionefinestraDiDialogo(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.');
});
Riga 47 ⟶ 50:
 
/**
* Nuova segnalazione in WP:VC
*/
function inviaSegnalazione(motivo) {
switch (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);
 
// InviaClic segnalazionesu annulla
api.postWithEditToken({case null:
console.warn('L\'utente ha fatto clic su "Annulla" o ha chiuso la finestra di dialogo.');
action: 'edit',
title: pagina,break;
 
appendtext: testo,
// Motivazione non summary: oggetto,compilata
format:case 'json':
})mw.notify('Fornire una motivazione', {
.done(function(data) { title: 'Errore',
type: 'error',
// [[Phab:T75714]]: Non è ancora possibile usare template literal (ES2015) per migliorare la leggibilità.
autoHide: false,
// mw.notify( $(`<span>${utente} segnalato tra i <a href="/wiki/${pagina}#footer">vandalismi in corso</a>.</span>`), {
tag: 'notif'
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);
});
console.error('L\'utente non ha fornito una motivazione');
});
break;
 
// Motivazione non compilata
} else if (motivo === '') {default:
const segnalazione = '{{vandalo|' + utente + '}} ' + motivo + ' --~~\~~';
mw.notify('Fornire una motivazione', {
title:parsing().then((jsonData) 'Errore',=> {
var titoloUltimaSezione = jsonData.parse.sections[jsonData.parse.sections.length - 1].line;
type: 'error',
var dataOdierna = new Date().toLocaleDateString("it-IT", { day: 'numeric', month: 'long' });
autoHide: false,
tag: 'notif'
});
console.error('L\'utente non ha fornito una motivazione');
 
// Clic su annulla api.postWithEditToken({
} else { action: 'edit',
console.warn('L\'utente ha fatto clic su "Annulla" o chiuso la finestra di dialogo.'); 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.
*
* @returns {object} - jQuery.Promise.
*/
function parsing() {
return api.get({
page: paginaSegnalazioni,
action: 'parse',
prop: 'sections'
});
}
 
}(mediaWiki, jQuery));
 
// TODO
// ordinale il primo del mese
// warnavvisare se il vandalo non è stato avvisato:
// è già stato segnalato di recente
// è già bloccato
// non è stato avvisato
// drop down motivazioni frequenti
// textinput invece di prompt (poco spazio per inserire la motivazione)
// normale textinput anziché dialoghino
// lista ultime segnalazioni
// solo autoverificati?