Utente:MauroBot/BotCancellazioni/category.js

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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>