Utilisateur:Dr Brains/ArticlesRecentsBOT/Test.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//{{Boîte déroulante début|titre=[[Utilisateur:Dr Brains/ArticlesRecentsBOT.js]]}}<source lang=javascript>
//<pre><nowiki>
// ############################################################################################################

// Bot de mise à jour des modèles {{Articles récents}}

// Page de démarrage : [[Utilisateur:Dr Bot/Scripts/Articles récents BOT]]

// Voir aussi le gadget : [[MediaWiki:Gadget-ArticlesRecents.js]]

// Licence : Domaine public

// ############################################################################################################
// ///////////////////////////////////////////////////// VARIABLES /////////////////////////

/* paramètre "nmMax" par défaut */
var ArticlesRecentsBOT_TailleListe = 10; 

/* Modèle par défaut */
var ArticlesRecentsBOT_ModeleDefautDebut = '{{Articles récents\n'
                  + '|pageportail=$1\n'
                  + '|catégorie=$2\n'
                  + '|nbMax=$3\n'
                  + '|defilant=oui\n'
                  + '|hauteur=250\n'
                  + '|listeRecents=\n'
                  + '$4\n'
                  + '|listeCatégorie=\n'
                  + '$5\n'
                  + '}}\n'

/* Commentaires */
// Début liste articles récents //
var ArticlesRecentsBOT_DebutListeRecents = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents DEBUT -->\n';
// Fin liste articles récents //
var ArticlesRecentsBOT_FinListeRecents = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents FIN -->\n'
// Début liste catégorie //
var ArticlesRecentsBOT_DebutListeCategorie = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents Liste DEBUT -->\n'
// Fin liste catégorie //
var ArticlesRecentsBOT_FinListeCategorie = '<!-- Ce tableau est créé automatiquement par un robot. Articles Récents Liste FIN -->\n'

/* Résumé de modification */
var ArticlesRecentsBOT_ResumeModif = 'Bot : [[$1|Mise à jour]] des [[Modèle:Articles récents|{{Articles récents}}]] ';

/* Adresse du site */
var ArticlesRecentsBOT_Adresse = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";

/* Publication automatique par défaut */
var ArticlesRecentsBOT_UpdateAll = true;

/* Page de commencement */
ArticlesRecentsBOT_UpdateFrom = 1

/* Renouvellement automatique par défaut */
var ArticlesRecentsBOT_AutomaticMode = true;

/* Nombre maxi de nouveaux articles listés dans le résumé de modif */
var ArticlesRecentsBOT_MaxInSummary = 1;

/* Liste des pages à mettre à jour */
var ArticlesRecentsBOT_ListToUpdate = new Array();
var ArticlesRecentsBOT_ListToUpdateCount = -1;

// ///////////////////////////////////////////////////// FONCTION DE REQUÊTE ///////////////

var ArticlesRecentsBOT_ajax = {
  http: function(bundle) {
    // mandatory: bundle.url
    // optional:  bundle.async
    // optional:  bundle.method
    // optional:  bundle.headers
    // optional:  bundle.data
    // optional:  bundle.onSuccess (xmlhttprequest, bundle)
    // optional:  bundle.onFailure (xmlhttprequest, bundle)
    // optional:  bundle.otherStuff OK too, passed to onSuccess and onFailure
    var xmlhttp;
    try {
      xmlhttp = new XMLHttpRequest(); 
    } catch(e) { 
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) { 
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
          xmlhttp = false
        }
      }
    }
 
    if (xmlhttp) {
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4)
          ArticlesRecentsBOT_ajax.httpComplete(xmlhttp,bundle);
      };
      xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true);
      if (bundle.headers) {
        for (var field in bundle.headers)
          try {
            xmlhttp.setRequestHeader(field,bundle.headers[field]);
          } catch(err) {
            //Argos42 : pour rendre LiveRC fonctionnel sur chrome
          }
      }
      xmlhttp.send(bundle.data ? bundle.data : null); 
    }
    return xmlhttp;
  }, 
  httpComplete: function(xmlhttp,bundle) {
    if (xmlhttp.status == 200 || xmlhttp.status == 302) {
      if (bundle.onSuccess)
        bundle.onSuccess(xmlhttp,bundle);
    } else if (bundle.onFailure) {
      bundle.onFailure(xmlhttp,bundle);
 
    } else {
      // A activer en debug mode ?
         //  alert(xmlhttp.status+xmlhttp.responseText);
    }
  }
};

// ///////////////////////////////////////////////////// LANCEMENT /////////////////////////

if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit")&&(mw.config.get('wgPageName').indexOf("/Articles_récents_BOT")!=-1) ){
     importStylesheet('Utilisateur:Dr Brains/ArticlesRecentsBOT.css');
     addOnloadHook(ArticlesRecentsBOT_addLinks);
}

// ///////////////////////////////////////////////////// CRÉATION DES LIENS /////////////////////////

function ArticlesRecentsBOT_addLinks(){
     var buttonDiv = document.getElementById("ListToUpdate_Run");
     if(buttonDiv){
          var link = '<a href="javascript:ArticlesRecentsBOT_RunAll();" title="Lancer la mise à jour de toutes les pages de la liste">' + buttonDiv.innerHTML + '</a>';
          buttonDiv.innerHTML = link;
     }
     var listDiv = document.getElementById("ListToUpdate");
     if(listDiv){
          var Count = -1;
          var Liens = listDiv.getElementsByTagName('a');
          for(var a=0;a<Liens.length;a++){
               if(Liens[a].href.indexOf("javascript:")==-1){
                    Count++
                    Liens[a].id = "LinkToUpdate_"+Count;
                    var UpdateLink = document.createElement('a');
                    UpdateLink.href = "javascript:ArticlesRecentsBOT_RunOne("+Count+");";
                    UpdateLink.title = "Lancer la mise à jour";
                    UpdateLink.innerHTML = '<img height="15" width="15" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Crystal_Clear_action_exit.svg/50px-Crystal_Clear_action_exit.svg.png" alt="Lancer la mise à jour de cette page">';
                    Liens[a].parentNode.insertBefore(UpdateLink, Liens[a]);
                    a++
                    Liens[a].parentNode.insertBefore(document.createTextNode(' - '), Liens[a]);
               }
          }
     }
     var NewPagesDiv = document.getElementById("ListToUpdate_CheckNewPages");
     if(NewPagesDiv){
          var NewPageLink = '<a href="javascript:ArticlesRecentsBOT_CheckNewPages();" title="Rechercher de nouvelles pages à mettre à jour">' + NewPagesDiv.innerHTML + '</a>';
          NewPagesDiv.innerHTML = NewPageLink;
     }
/*
     if(mw.config.get('wgUserGroups').indexOf('bot')!=-1){
          ArticlesRecentsBOT_RunAll();
          setTimeout("window.location.reload();", 1000*3600);
     }
*/
}

// ///////////////////////////////////////////////////// PRÉPARATION MISE À JOUR 1 PAGE /////////////////////////

function ArticlesRecentsBOT_RunOne(Count){
     var Link = document.getElementById("LinkToUpdate_"+Count);
     if(Link){
          ArticlesRecentsBOT_UpdateAll = false;
          ArticlesRecentsBOT_ListToUpdateCount++
          ArticlesRecentsBOT_ListToUpdate[ArticlesRecentsBOT_ListToUpdateCount] = Link.innerHTML;
          ArticlesRecentsBOT_Update(0);
     }
}

// ///////////////////////////////////////////////////// PRÉPARATION MISE À JOUR TOUTES LES PAGES /////////////////////////

function ArticlesRecentsBOT_RunAll(){
     var listDiv = document.getElementById("ListToUpdate");
     if(listDiv){
          if(mw.config.get('wgUserGroups').indexOf('bot')==-1){
               ArticlesRecentsBOT_UpdateAll = confirm('Publication automatique ?');
               ArticlesRecentsBOT_UpdateFrom = prompt('Commencer à quelle page',ArticlesRecentsBOT_UpdateFrom);
               if((!ArticlesRecentsBOT_UpdateFrom)||(ArticlesRecentsBOT_UpdateFrom=='')) ArticlesRecentsBOT_UpdateFrom = 1;
               ArticlesRecentsBOT_UpdateFrom = parseInt(ArticlesRecentsBOT_UpdateFrom);
               if(ArticlesRecentsBOT_UpdateFrom<1) ArticlesRecentsBOT_UpdateFrom = 1;
               ArticlesRecentsBOT_AutomaticMode = confirm('Renouvellement automatique ?');
          }
          var Liens = listDiv.getElementsByTagName('a');
          for(var a=0;a<Liens.length;a++){
               if(Liens[a].href.indexOf("javascript:")==-1){
                    ArticlesRecentsBOT_ListToUpdateCount++
                    ArticlesRecentsBOT_ListToUpdate[ArticlesRecentsBOT_ListToUpdateCount] = Liens[a].innerHTML;
               }
          }
          ArticlesRecentsBOT_Update((ArticlesRecentsBOT_UpdateFrom-1));
     }
}

// ///////////////////////////////////////////////////// REQUÊTE PAGE À METTRE À JOUR /////////////////////////

function ArticlesRecentsBOT_Update(position){
     if(!position) position=0;
     var Page = ArticlesRecentsBOT_ListToUpdate[position];
     if(!Page){
          if(ArticlesRecentsBOT_AutomaticMode&&ArticlesRecentsBOT_UpdateAll){
               ArticlesRecentsBOT_Update(0);
          }else{
               alert('Travail terminé !');
               window.location.reload();
          }
          return;
     }
     ArticlesRecentsBOT_ajax.http({ url: ArticlesRecentsBOT_Adresse + encodeURIComponent(Page) + '&action=render',
                onSuccess: ArticlesRecentsBOT_UpdateDone,
                position:position 
                });
}


function ArticlesRecentsBOT_UpdateDone(Req, data){
     var position = data.position;
     var Page = ArticlesRecentsBOT_ListToUpdate[position];
     while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}  
     document.body.innerHTML = '<center><h1 id="firstHeading" class="firstHeading" >'
                             + (position+1) + '/' + ArticlesRecentsBOT_ListToUpdate.length +' : '+ Page
                             + '</h1></center>'
                             + Req.responseText;
     window.scrollTo(0,0);
     var Cadres = document.getElementsByTagName('div');
     for(var s=0;s<Cadres.length;s++){
          if( $(Cadres[s]).hasClass('categoryRecentChanges') ){          
               var ParamCategorie = Cadres[s].firstChild.innerHTML;
               var ParamPage = Cadres[s].firstChild.title;
               var TailleListe = Cadres[s].firstChild.className;
          }
     }
     if(typeof(TailleListe)!='number') TailleListe = ArticlesRecentsBOT_TailleListe;
     var OldRecents = new Array();
     var OldRecentsCount = -1;
     var OldCategory = new Array();
     var OldCategoryCount = -1;
     var Liste1 = document.getElementsByTagName('ol')[0];
     if(Liste1) ArticlesRecents_ListeArticlesRecents = Liste1.getElementsByTagName('a');
     if( ArticlesRecents_ListeArticlesRecents.length>0 ){
          for(var r=0;r<ArticlesRecents_ListeArticlesRecents.length;r++){
               var OldRecentsLink = ArticlesRecents_ListeArticlesRecents[r];
               if((OldRecentsLink.className!="new")&&(OldRecentsLink.className!="mw-redirect")){
                    var RecentTitle = ArticlesRecentsBOT_Clean(OldRecentsLink.innerHTML);
                    if(OldRecents.indexOf(RecentTitle)==-1){
                         OldRecentsCount++
                         OldRecents[OldRecentsCount] = RecentTitle;
                    }
               }
          }
     }
     var Liste2 = document.getElementsByTagName('ul')[0];
     if(Liste2) ArticlesRecents_ListeArticlesCategorie = Liste2.getElementsByTagName('a');
     if(ArticlesRecents_ListeArticlesCategorie.length>0 ){
          for(var c=0;c<ArticlesRecents_ListeArticlesCategorie.length;c++){
               var OldCategoryLink = ArticlesRecents_ListeArticlesCategorie[c];
               if((OldCategoryLink.className!="new")&&(OldCategoryLink.className!="mw-redirect")){
                    var OldCategoryTitle = ArticlesRecentsBOT_Clean(OldCategoryLink.innerHTML);
                    if(OldCategory.indexOf(OldCategoryTitle)==-1){
                         OldCategoryCount++
                         OldCategory[OldCategoryCount] = OldCategoryTitle; 
                    }
               }
          }
     }
     var NewCategory = new Array();
     ArticlesRecentsBOT_CheckCategory({position:position, paramPage:ParamPage, ParamCategory:ParamCategorie, paramTailleListe:TailleListe, paramOldCategory:OldCategory, paramOldRecents:OldRecents, paramNewcategory:NewCategory});
}

// ///////////////////////////////////////////////////// REQUÊTE PAGES DE LA CATÉGORIE /////////////////////////

function ArticlesRecentsBOT_CheckCategory(Args){
      var position = Args.position;
      var ParamPage = Args.paramPage;
      var ParamCategorie = Args.ParamCategory;
      var TailleListe = Args.paramTailleListe;
      var OldCategory = Args.paramOldCategory;
      var OldRecents = Args.paramOldRecents; 
      var NewCategory = Args.paramNewcategory;
      var Continue = Args.paramContinue;
      if(!Continue) Continue='';
      if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
           var APILimit=4999;
      }else{
           var APILimit=499;
      }
      ArticlesRecentsBOT_ajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=categorymembers&cmlimit='+APILimit+'&cmtitle=' + encodeURIComponent(ParamCategorie) +  Continue,
                onSuccess: ArticlesRecentsBOT_CheckCategoryDone,
                args:Args
                });
}

function ArticlesRecentsBOT_CheckCategoryDone(Req, data){
      var Args = data.args;
      var position = Args.position;
      var ParamPage = Args.paramPage;
      var ParamCategorie = Args.ParamCategory;
      var TailleListe = Args.paramTailleListe;
      var OldCategory = Args.paramOldCategory;
      var OldRecents = Args.paramOldRecents; 
      var NewCategory = Args.paramNewcategory;
      var Continue = Args.paramContinue;

      var ObjetXML = Req.responseXML; 
      var Pages = ObjetXML.getElementsByTagName('cm');
      for(a=0;a<Pages.length;a++){
            var TitrePage = Pages[a].getAttribute('title');
            var NS = Pages[a].getAttribute('ns');
            if(NS==="0" && Args.paramNewcategory.indexOf(TitrePage)==-1){
                  Args.paramNewcategory.push(TitrePage);
            }
      }
      var AutreRequeteNecessaire = ObjetXML.getElementsByTagName('query-continue')[0];
      if(AutreRequeteNecessaire){
            Args.paramContinue = '&cmcontinue=' + encodeURIComponent(AutreRequeteNecessaire.getElementsByTagName('categorymembers')[0].getAttribute('cmcontinue'));
            ArticlesRecentsBOT_CheckCategory(Args);
      }else{
            ArticlesRecentsBOT_SortList(Args);
      }
}

// ///////////////////////////////////////////////////// TRI DES PAGES RÉCENTES /////////////////////////

function ArticlesRecentsBOT_SortList(Args){
      var position = Args.position;
      var ParamPage = Args.paramPage;
      var ParamCategorie = Args.ParamCategory;
      var TailleListe = Args.paramTailleListe;
      var OldCategory = Args.paramOldCategory;
      var OldRecents = Args.paramOldRecents; 
      var NewCategory = Args.paramNewcategory;

      var NewRecents = new Array();
      var RealNewRecents = new Array();
      var NewRecentsCount = -1;
      var PageRemoved = false;
      var PageAdded = false;
      for(var a=0;a<OldCategory.length;a++){
            if(NewCategory.indexOf(OldCategory[a])==-1) PageRemoved = true;
      }
      for(var a=0;a<NewCategory.length;a++){
            if(OldCategory.indexOf(NewCategory[a])==-1){
                  PageAdded = true;
                  if(NewRecentsCount<(TailleListe-1)){
                        NewRecentsCount++
                        NewRecents[NewRecentsCount] = NewCategory[a];
                        RealNewRecents[NewRecentsCount] = NewCategory[a];
                  }
            }
      }
      for(var c=0;c<OldRecents.length;c++){
            if(NewRecentsCount<(TailleListe-1)){
                  NewRecentsCount++
                  NewRecents[NewRecentsCount] = OldRecents[c];
            }
      }
      var Text = "RealNewRecents.length = "+RealNewRecents.length + "\n"
               + "PageRemoved = " + PageRemoved + "\n"
               + "PageAdded = " + PageAdded + "\n"
               + "OldRecents.length = " + OldRecents.length + "\n"
               + "TailleListe = " + TailleListe + "\n";
      alert(Text);
      if(RealNewRecents.length==0 && !PageRemoved && !PageAdded && OldRecents.length<=TailleListe){
            ArticlesRecentsBOT_Update((position+1));            
            return;
      }
      Args.paramNewRecents = NewRecents;
      Args.paramRealNewRecents = RealNewRecents;
      ArticlesRecentsBOT_ajax.http({ url: ArticlesRecentsBOT_Adresse + encodeURIComponent(ParamPage) + '&action=edit',
                onSuccess: ArticlesRecentsBOT_Edit,
                args:Args
      });
}

// ///////////////////////////////////////////////////// ÉDITION /////////////////////////

function ArticlesRecentsBOT_Edit(Req, data){
      var Args = data.args;
      var position = Args.position;
      var ParamPage = Args.paramPage;
      var ParamCategorie = Args.ParamCategory;
      var TailleListe = Args.paramTailleListe;
      var OldCategory = Args.paramOldCategory;
      var OldRecents = Args.paramOldRecents; 
      var NewCategory = Args.paramNewcategory;
      var NewRecents = Args.paramNewRecents;
      var RealNewRecents = Args.paramRealNewRecents;

      while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}  
      document.body.innerHTML = Req.responseText;
      var wpSave = document.getElementById("wpSave");
      if(!wpSave){
            ArticlesRecentsBOT_Update((position+1));
            return;
      }
      var ContenuPage = document.getElementById("wpTextbox1").value;
      var AncienResumeModif = document.editform.wpSummary.value;

      var NouvelleListeRecents = ArticlesRecentsBOT_DebutListeRecents;
      for(var r=0;r<NewRecents.length;r++){
            NouvelleListeRecents += '# [[' + NewRecents[r] + ']]\n';
      }
      NouvelleListeRecents += ArticlesRecentsBOT_FinListeRecents;

      var NouvelleListeCategorie = ArticlesRecentsBOT_DebutListeCategorie;
      for(var cat=0;cat<NewCategory.length;cat++){
            NouvelleListeCategorie += '* [[' + NewCategory[cat] + ']]\n';
      }
      NouvelleListeCategorie += ArticlesRecentsBOT_FinListeCategorie;

      if( 
      (ContenuPage.indexOf(ArticlesRecentsBOT_DebutListeCategorie)!=-1) && 
      (ContenuPage.indexOf(ArticlesRecentsBOT_FinListeCategorie)!=-1) && 
      (ContenuPage.indexOf(ArticlesRecentsBOT_DebutListeRecents)!=-1) && 
      (ContenuPage.indexOf(ArticlesRecentsBOT_FinListeRecents)!=-1) ){                          
            var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(ArticlesRecentsBOT_DebutListeCategorie));
            var AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(ArticlesRecentsBOT_FinListeCategorie)) + ArticlesRecentsBOT_FinListeCategorie;
            AncienModele = AncienModele.replace(debutTexte, "");       
            var finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
            var TexteFinal = debutTexte + NouvelleListeCategorie + finTexte;

            debutTexte = TexteFinal.substring(0, TexteFinal.indexOf(ArticlesRecentsBOT_DebutListeRecents));
            AncienModele = TexteFinal.substring(0, TexteFinal.indexOf(ArticlesRecentsBOT_FinListeRecents)) + ArticlesRecentsBOT_FinListeRecents;
            AncienModele = AncienModele.replace(debutTexte, "");       
            finTexte = TexteFinal.split(debutTexte).join('').split(AncienModele).join('');
            TexteFinal = debutTexte + NouvelleListeRecents + finTexte;
      }else{
            var TexteFinal = ArticlesRecentsBOT_ModeleDefautDebut;
            TexteFinal = TexteFinal.split('$1').join(ParamPage);
            TexteFinal = TexteFinal.split('$2').join(ParamCategorie);
            TexteFinal = TexteFinal.split('$3').join(TailleListe);
            TexteFinal = TexteFinal.split('$4').join(NouvelleListeRecents);
            TexteFinal = TexteFinal.split('$5').join(NouvelleListeCategorie);
      }
      if(TexteFinal == ContenuPage){
            ArticlesRecentsBOT_Update((position+1));
            return;
      }
      var SommaireFinal = ArticlesRecentsBOT_ResumeModif.split('$1').join(mw.config.get('wgPageName').replace(/_/g," "));
      if(RealNewRecents.length>0){
            for(var r=0;r<ArticlesRecentsBOT_MaxInSummary;r++){
                  if(RealNewRecents[r]) SommaireFinal += ' ; + [[' + RealNewRecents[r] + ']]';
            }
            if(RealNewRecents[ArticlesRecentsBOT_MaxInSummary]) SommaireFinal += ' ; ... ';
      }
      SommaireFinal += ' ([[:'+ParamCategorie+'|'+NewCategory.length + ' articles]])';
      SommaireFinal = SommaireFinal.substring(0, 200);

      document.getElementById ("wpTextbox1").value = TexteFinal ;
      document.editform.wpSummary.maxlength = "400";
      document.editform.wpSummary.value = SommaireFinal ;
      document.editform.wpMinoredit.checked = "checked";
      document.editform.wpWatchthis.checked = "checked";

      if(!ArticlesRecentsBOT_UpdateAll){
            var SurEtCertain = confirm('Sauvegarder la modification ?');
            if(!SurEtCertain) return;
      }

      var EditForm = document.editform
      var EditParam = new Array();
      EditParam["token"] = encodeURIComponent(EditForm.wpEditToken.value);
      EditParam["title"] = encodeURIComponent(ParamPage);
      EditParam["watchlist"] = "nochange";
      EditParam["minor"] = "1";
      if(mw.config.get('wgUserGroups').indexOf("bot")!=-1) EditParam["bot"] = "";
      EditParam["summary"] = encodeURIComponent(SommaireFinal);
      EditParam["text"] = encodeURIComponent(TexteFinal);

      var Params = new Array();
      for(var Param in EditParam){
            if(EditParam[Param] || EditParam[Param]=="") Params.push(Param+"="+EditParam[Param]);
      }
      Params = Params.join("&");
      var headers = new Array();
      headers['Content-Type'] = 'application/x-www-form-urlencoded';
      ArticlesRecentsBOT_ajax.http({ url       : mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=edit',
                                     method    : "POST", headers: headers, data: Params,
                                     onSuccess : ArticlesRecentsBOT_EditDone,
                                     position  : position
                                   });
}

function ArticlesRecentsBOT_EditDone(Req, data){
     ArticlesRecentsBOT_Update((data.position+1));
}

function ArticlesRecentsBOT_CheckNewPages(){
     var listDiv = document.getElementById("ListToUpdate");
     if(listDiv){
          var OldPages = new Array();
          var Liens = listDiv.getElementsByTagName('a');
          for(var a=0;a<Liens.length;a++){
               if(Liens[a].href.indexOf("javascript:")==-1){
                    OldPages.push(Liens[a].innerHTML);
               }
          }
          ArticlesRecentsBOT_GetTransclusions(OldPages);
     }
}

function ArticlesRecentsBOT_GetTransclusions(OldPages, ActualPages, GetContinue){
     if(!ActualPages) ActualPages = new Array();
     if(!GetContinue) GetContinue = "";
     var APILimit = 499;
     if((mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
          APILimit = 4999;
     }
     var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=embeddedin&eilimit='+APILimit+'&einamespace=0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101|102|103|104|105&eititle=Modèle:Articles récents' + GetContinue;
     var NouvelleRequete = sajax_init_object();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState != 4) return; 
          var ObjetXML = NouvelleRequete.responseXML;
          var Pages = ObjetXML.getElementsByTagName('ei');
          for(var a=0;a<Pages.length;a++){
               ActualPages.push(Pages[a].getAttribute('title'));
          }
          var QueryContinue = ObjetXML.getElementsByTagName('query-continue')[0];
          if(QueryContinue){
               var EContinue = '&eicontinue=' + encodeURIComponent(QueryContinue.getElementsByTagName('embeddedin')[0].getAttribute('eicontinue'));
               ArticlesRecentsBOT_GetTransclusions(OldPages, ActualPages, EContinue);
          }else{
               var NewPages = new Array();
               for(var b=0;b<ActualPages.length;b++){
                    var Match = false;
                    for(var c=0;c<OldPages.length;c++){
                         if(OldPages[c] == ActualPages[b]) Match = true;
                    }
                    if(!Match) NewPages.push(ActualPages[b]);
               }
               if(NewPages.length == 0){
                    alert('Pas de nouvelles pages à mettre à jour');
                    return;
               }
               var Div = document.getElementById("ListToUpdate_CheckNewPages");
               if(Div){
                    var List = document.createElement('ol');
                    for(var i=0;i<NewPages.length;i++){
                         var Li = document.createElement('li');
                         var A = document.createElement('a');
                         A.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(NewPages[i]);
                         A.title = NewPages[i]
                         A.appendChild(document.createTextNode(NewPages[i]));
                         Li.appendChild(document.createTextNode("# [["));
                         Li.appendChild(A);
                         Li.appendChild(document.createTextNode("]]"));
                         List.appendChild(Li);
                    }
                    Div.appendChild(List);
               }else{               
                    alert('Nouvelles pages :\n\n' + NewPages.join('\n') );
               }
          }
     }
     NouvelleRequete.send(null);
}
// ///////////////////////////////////////////////////// NETTOYAGE HTML /////////////////////////

function ArticlesRecentsBOT_Clean(text){
      while(text.indexOf('&amp;')!=-1){
            text = text.split('&amp;').join("&");
            if(text.indexOf('&amp;')==-1) break;
      }
      while(text.indexOf('&#039;')!=-1){
            text = text.split('&#039;').join("'");
            if(text.indexOf('&#039;')==-1) break;
      }
      while(text.indexOf('&quot;')!=-1){
            text = text.split('&quot;').join('"');
            if(text.indexOf('&quot;')==-1) break;
      }
      while(text.indexOf('&nbsp;')!=-1){
            text = text.split('&nbsp;').join(' ');
            if(text.indexOf('&nbsp;')==-1) break;
      }  
      return text;
}

// ############################################################################################################
//</nowiki></pre></source>{{Boîte déroulante fin}}