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.

// La variabile contiene i messaggi di log del bot
var messages = [];

if (wgTitle == "FixBot/TestBot2") 
{
   // Il bot viene eseguito quando l'intera pagina è stata caricata
   $(window).load(mainDeletionBot2);   
}

/*=================================================================================================
 * 
 * Funzione mainDeletionBot()
 * 
 * Funzione principale del bot
 *
 * ================================================================================================
 */
function mainDeletionBot2()
{
   var catStatus = [];  
   var iw = 0, ic = 0, summary = '';
   var writeData = [];
   var writeStatus;

   // Inizializzo il vettore con le variabili di stato
   catStatus.push( new catStatusObj() );
   catStatus.push( new catStatusObj() );
   catStatus.push( new catStatusObj() );
   catStatus.push( new catStatusObj() );   
   
   //token = 0;
   token = mw.user.tokens.get( 'editToken' );

   // Inizializzazione stato del bot
   currentAppStatus = 'iniziaLetturaPDC';
   nextAppStatus = '';

   // Il codice viene eseguito ogni 100 ms fino alla conclusione
   interval = setInterval(function() {
      
      d = new Date();
      
      switch( currentAppStatus )
      {
         case 'gestioneCategorieGiornaliere':
            // Avvio la gestione delle categorie giornaliere
            messages.push('['+d.toISOString()+'] *** Gestione delle categorie giornaliere ***');
            
            // Leggo le categorie in parallelo
            creazioneCategorie('semplificate', new Date(), 7, catStatus[0]);
            creazioneCategorie('consensuali', new Date(), 7, catStatus[1]);
            creazioneCategorie('consprorogate', new Date(), 7, catStatus[2]);
            creazioneCategorie('ordinarie', new Date(), 7, catStatus[3]);
            summary = 'Bot: creazione/aggiornamento categorie di servizio';
            currentAppStatus = 'runningCategorie';
            // Stato da eseguire quando le categorie giornaliere saranno processate
            nextAppStatus = 'gestioneCategorieMensili'; 
            // ic è il numero delle sessioni in parallelo
            ic = 4;
            break;
            
         case 'gestioneCategorieMensili':
            // Avviso la gestione delle categorie
            messages.push('['+d.toISOString()+'] *** Gestione delle categorie mensili ***');
            
            catStatus[0] =  new catStatusObj();
            creazioneCategorieMese(d.getFullYear(), catStatus[0])
            
            summary = 'Bot: creazione/aggiornamento categorie di servizio';
            currentAppStatus = 'runningCategorie';
            nextAppStatus = 'gestioneCategorieAnnuali';
            ic = 1;
            break;
            
         case 'gestioneCategorieAnnuali':
            // Avviso la gestione delle categorie
        
            messages.push('['+d.toISOString()+'] *** Gestione delle categorie annuali ***');
            
            catStatus[0] =  new catStatusObj();
            creazioneCategorieAnno(d.getFullYear(), catStatus[0])
            
            summary = 'Bot: creazione/aggiornamento categorie di servizio';
            currentAppStatus = 'runningCategorie';
            nextAppStatus = 'finish';
            ic = 1;
            break;
            
            
         case 'runningCategorie':
            // Attendo la lettura delle categorie
            var n;
            for( n=0; n < ic; n++)
            {
               if( !catStatus[n].done )
                  break;
            }
            if( n < ic )
               break;
            
            // Lettura completata
            writeData = [];
            for( var n=0; n < ic; n++)
            {
               if( catStatus[n].ok )
                  writeData = writeData.concat(catStatus[n].writeData);
               else
                  messages.push( catStatus[n].error );
            }
            
            // Stato successivo alla scrittura
            currentAppStatus = 'scrittura';          
            break;       

         case 'scrittura':
            if( writeData.length > 0 )
            {
               iw = 0;
               writeStatus = new writeStatusObj(); 
               scriviPagina(writeData[0].title, writeData[0].text, summary, token, writeStatus);
               currentAppStatus = 'runningScrittura';       
            }
            else
            {
               messages.push('['+d.toISOString()+'] Nessuna pagina da scrivere');
               currentAppStatus = nextAppStatus;
            }
            break;
            
         case 'runningScrittura':       
            
            if( writeStatus.done )
            {
               d = new Date();
               if( !writeStatus.ok )
                  messages.push(writeStatus.error);
               else
                  messages.push('['+d.toISOString()+'] Pagina creata/modificata: '+writeData[iw].title);
               
               iw++;
               
               if( iw < writeData.length )
               {
                  writeStatus = new writeStatusObj(); 
                  scriviPagina(writeData[iw].title, writeData[iw].text, summary, token, writeStatus);
               }
               else
                  currentAppStatus = nextAppStatus;
            }
               
            break;
            
         case 'iniziaLetturaPDC':
            PDC_Date = new Date(2013,8,10);
            day_counter = 0;
            currentAppStatus = 'leggiGiorno';
            PDC_Status = [];
            PDC_Errors = [];
            for(var i=0; i < tipologie.length; i++)
               PDC_Status.push( new readPDCStatusObj() );
               
            for(var i=0; i < tipologie.length; i++)
               iniziaLetturaCategoriaPDC(tipologie[i], PDC_Date, PDC_Status[i]);
               
            break;
            
         case 'leggiGiorno':
            
            finishCnt = 0;
            for(var i=0; i < tipologie.length; i++)
            {
               if( PDC_Status[i].done && !PDC_Status[i].finish) // Lettura completata?
               {
                  if( PDC_Status[i].ok )
                  {
                     // Gestione del query continue                     
                     if( PDC_Status[i].qcontinue )
                        iniziaLetturaCategoriaPDC(tipologie[i], PDC_Date, PDC_Status[i]);
                     else
                        PDC_Status[i].finish = true;     
                  }
                  else
                  {
                     // errore!!
                     PDC_Status[i].finish = true; 
                     PDC_Errors.push( PDC_Status[i].error );
                  }
               }
               
               if( PDC_Status[i].finish )
                  finishCnt++;
            
            }
            
            if( finishCnt == tipologie.length )
            {
               if( PDC_Errors.length > 0 )
               {
                  messages = messages.concat(PDC_Errors);
                  console.log(messages);
               }
               else
               {
                  procedure = [];
                  console.log(PDC_Status)
                  for(var i=0; i < tipologie.length; i++)
                     procedure[tipologie[i]] = processLetturaCategoriaPDC(tipologie[i], PDC_Status[i].rawData);
                  console.log(procedure);
                  
               }
               
               // TODO Gestione del giorno successivo
               currentAppStatus = 'finish';
            }
            
            break;
            
         
            
         case 'finish':                
            clearInterval(interval);
      }
      

   },100);
}