Utente:MauroBot/BotCancellazioni/category.js
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.
// <nowiki>
/*=================================================================================================
*
* category.js
*
* Funzioni per la gestione delle categorie
*
* ================================================================================================
*/
/*=================================================================================================
*
* L'oggetto catStatusObj() raccoglie lo stato del gestore delle categorie. Permette il corretto
* accesso alle API di Mediawiki sfruttando jQuery e AJAX (comunicazione asincrona)
*
* ================================================================================================
*/
function catStatusObj()
{
this.done = false;
this.ok = false;
this.error = '';
this.writeData = [];
}
/*=================================================================================================
*
* Funzione creazioneCategorie(tipo, dataInizio, giorni, status)
*
* La funzione crea le categorie di servizio. La creazione avviene solo se sono presenti elementi.
*
* I testi della pagine associate alle categorie (da scrivere) vengono inseriti in writeData.
*
* ================================================================================================
*/
function creazioneCategorie(tipo, dataInizio, giorni, status)
{
status.done = false;
status.writeData = [];
// Identifico il prefisso della categoria
switch(tipo)
{
case 'semplificate':
Cat_Prefix =Cat_Semplificata_Prefix;
break;
case 'consensuali':
Cat_Prefix = Cat_Consensuale_Prefix;
break;
case 'consprorogate':
Cat_Prefix = Cat_ConsProrogata_Prefix;
break;
case 'ordinarie':
Cat_Prefix = Cat_Ordinaria_Prefix;
break;
case 'votazioni':
Cat_Prefix = Cat_Votazione_Prefix;
break;
}
categorie = [];
d = dataInizio;
// Genero i nomi delle categorie degli ultimi ''giorni'' a partire da ''dataInizio''
// Esempio: se dataInizio=01/06/2013 giorni=2, genera 01/06/2013 e 31/05/2013
for(var i=0; i < giorni; i++)
{
categorie.push( Cat_Prefix+convertiDateToCategoria(d) );
d.setDate(d.getDate()-1);
}
// Trasformo l'array in una stringa da inviare via API
categorieTxt = categorie.join('|');
// Preparo la richiesta da inviare all'API
request = {
format: 'json',
action: 'query',
titles: categorieTxt,
prop: 'categoryinfo'
}
$.ajax({
url: mw.util.wikiScript( 'api' ),
timeout: 5000,
data: request,
dataType: 'json',
type: 'GET',
success: function( data ) {
processCreazioneCategorie(data, tipo, status);
},
error: function( xhr, status ) {
status.ok = false;
status.done = true;
status.error = '[JQuery/AJAX Error] Errore durante la lettura delle categorie ('+status+')';
}
});
}
/*=================================================================================================
*
* Funzione processCreazioneCategorie(data, tipo, status)
*
* La funzione viene richiamata quando la richiesta AJAX è conclusa. Controlla se esistono
* categorie non vuote che devono essere create.
*
* ================================================================================================
*/
function processCreazioneCategorie(data, tipo, status)
{
// Identifico il prefisso della categoria
switch(tipo)
{
case 'semplificate':
Cat_Prefix = Cat_Semplificata_Prefix;
break;
case 'consensuali':
Cat_Prefix = Cat_Consensuale_Prefix;
break;
case 'consprorogate':
Cat_Prefix = Cat_ConsProrogata_Prefix;
break;
case 'ordinarie':
Cat_Prefix = Cat_Ordinaria_Prefix;
break;
case 'votazioni':
Cat_Prefix = Cat_Votazione_Prefix;
break;
}
if ( data && data.query && data.query.pages )
{
// Ciclo sulle categorie presenti nell'array ''categorie''
for( var pageid in data.query.pages )
{
var txt = '';
// Gestione delle semplificate
if( parseInt(pageid) < 0 ) // la categoria non esiste
{
// La categoria contiene elementi
if( data.query.pages[pageid].categoryinfo && data.query.pages[pageid].categoryinfo.size > 0 )
{
// Estraggo la data rimuovendo il prefisso
// Categoria:Cancellazioni del 1 gennaio 2013 -> 1 gennaio 2013
dataCategoria = data.query.pages[pageid].title.substring(Cat_Prefix.length);
d = convertiCategoriaToDate(dataCategoria);
// Testo base della categoria
if( tipo == 'semplificate')
txt = Cat_Text_Semplificata;
else
txt = Cat_Text;
txt = txt.replace(/__giorno__/g, d.getDate() );
txt = txt.replace(/__mese_num__/g, d.getMonth()+1 );
txt = txt.replace(/__mese_txt__/g, convertiMeseToTxt(d.getMonth()+1) );
txt = txt.replace(/__anno__/g, d.getFullYear() );
switch(tipo)
{
case 'semplificate':
data_semplificata = '';
if ( d.getDate() > 9 )
data_semplificata += d.getDate();
else
data_semplificata += '0'+d.getDate();
if ( d.getMonth()+1 > 9 )
data_semplificata += d.getMonth()+1;
else
data_semplificata += '0'+(d.getMonth()+1);
data_semplificata += d.getFullYear();
txt = txt.replace(/__data_semplificata__/g, data_semplificata);
break;
case 'consensuali':
txt = txt.replace(/__tipo__/g, 'consensuale' );
break;
case 'consprorogate':
txt = txt.replace(/__tipo__/g, 'consensuale prorogata' );
break;
case 'ordinarie':
case 'votazioni':
txt = txt.replace(/__tipo__/g, 'votazione' );
break;
}
}
}
if( txt.length > 0 )
{
status.writeData.push( {'title':data.query.pages[pageid].title, 'text':txt, 'summary':'Bot: creazione categoria di servizio' } );
}
}
status.done = true;
status.ok = true;
}
else if ( data && data.error )
{
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [API Error] Errore durante la lettura delle categorie (Errore "'+data.error.code + '": ' + data.error.info+')';
}
else
{
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [API Error] Errore durante la lettura delle categorie (Errore sconosciuto)';
}
}
/*=================================================================================================
*
* Funzione creazioneCategorieAnno(anno, token, tentativi)
*
* La funzione si occupa della creazione delle categorie annuali.
*
* ================================================================================================
*/
function creazioneCategorieAnno(anno, status)
{
status.done = false;
// Check categoria annuale
errors = [];
request = {
format: 'json',
action: 'query',
titles: 'Categoria:Cancellazioni - '+anno,
prop: 'categoryinfo'
}
$.ajax({
url: mw.util.wikiScript( 'api' ),
timeout: 5000,
data: request,
dataType: 'json',
type: 'GET',
success: function( data ) {
if ( data && data.query && data.query.pages )
{
for( var pageid in data.query.pages )
{
if( parseInt(pageid) < 0 ) // la categoria annuale non esiste
{
if( data.query.pages[pageid].categoryinfo && data.query.pages[pageid].categoryinfo.size > 0 )
{
// Creo la categoria
txt = '[[Categoria:Pagine in cancellazione per anno| '+anno+']]';
status.writeData.push( {'title':data.query.pages[pageid].title, 'text':txt, 'summary':'Bot: creazione categoria di servizio' } );
}
}
}
status.ok =true;
status.done = true;
}
else if ( data && data.error )
{
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [API Error] Errore durante la creazione delle categorie di servizio annuali (Errore"'+data.error.code + '": ' + data.error.info+')';
}
else
{
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [API Error] Errore durante la creazione delle categorie di servizio annuali (Errore sconosciuto)';
}
},
error: function( xhr, status ) {
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [JQuery/AJAX Error] Errore durante la creazione delle categorie di servizio annuali ('+status+')';
}
});
}
/*=================================================================================================
*
* Funzione creazioneCategorieMese(anno, token, tentativi)
*
* La funzione si occupa della creazione delle categorie mensili.
*
* ================================================================================================
*/
function creazioneCategorieMese(anno, status)
{
status.done = false;
// Check categorie mensili
categorie = [];
for( var i=1; i <= 12; i++)
categorie.push('Categoria:Cancellazioni - '+convertiMeseToTxt(i)+' '+anno);
categorieTxt = categorie.join('|');
request = {
format: 'json',
action: 'query',
titles: categorieTxt,
prop: 'categoryinfo'
}
$.ajax({
url: mw.util.wikiScript( 'api' ),
timeout: 5000,
data: request,
dataType: 'json',
type: 'GET',
success: function( data ) {
if ( data && data.query && data.query.pages )
{
for( var pageid in data.query.pages )
{
if( parseInt(pageid) < 0 ) // la categoria non esiste
{
if( data.query.pages[pageid].categoryinfo && data.query.pages[pageid].categoryinfo.size > 0 )
{
// Estraggo mese/anno dalla categoria
prefix = 'Categoria:Cancellazioni - ';
dataCategoria = data.query.pages[pageid].title.substring(prefix.length);
d = convertiCategoriaToDate('1 '+dataCategoria);
if ( d.getMonth()+1 > 9 )
mese = d.getMonth()+1;
else
mese = '0'+(d.getMonth()+1);
txt = '[[Categoria:Cancellazioni - '+anno+'| '+mese+']]'
status.writeData.push( {'title':data.query.pages[pageid].title, 'text':txt, 'summary':'Bot: creazione categoria di servizio' } );
}
}
}
status.ok = true;
status.done = true;
}
else if ( data && data.error )
{
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [API Error] Errore durante la creazione delle categorie di servizio mensili (Errore"'+data.error.code + '": ' + data.error.info+')';
}
else
{
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [API Error] Errore durante la creazione delle categorie di servizio mensili (Errore sconosciuto)';
}
},
error: function( xhr, status ) {
status.ok = false;
status.done = true;
d = new Date();
status.error = '['+d.toISOString()+'] [JQuery/AJAX Error] Errore durante la creazione delle categorie di servizio mensili ('+status+')';
}
});
}
// </nowiki>