For faster navigation, this Iframe is preloading the Wikiwand page for Utilisateur:Dr Brains/ArticlesRecentsBOT.js.

Utilisateur:Dr Brains/ArticlesRecentsBOT.js

//((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 = '<noinclude>((Articles récents\n'
                  + '|pageportail=$1\n'
                  + '|catégorie=$2\n'
                  + '|nbMax=$3\n'
                  + '|defilant=oui\n'
                  + '|hauteur=250\n'
                  + '|listeRecents=</noinclude>\n'
                  + '$4\n'
                  + '<noinclude>\n'
                  + '))</noinclude>\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';

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


/* 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="//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: mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + 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 NewCategory = new Array();
     ArticlesRecentsBOT_CheckCategory({position:position, paramPage:ParamPage, ParamCategory:ParamCategorie, paramTailleListe:TailleListe});
}

// ///////////////////////////////////////////////////// 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;
      if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
           var APILimit=4999;
      }else{
           var APILimit=499;
      }
      var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&format=xml'
             + '&list=categorymembers'
             + '&cmdir=descending'
             + '&cmsort=timestamp'
             + '&cmlimit=' + TailleListe
             + '&cmtitle='+ ParamCategorie;
      ArticlesRecentsBOT_ajax.http({ url: URL,
                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 NewRecents = new Array();
      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" && NewRecents.indexOf(TitrePage)==-1){
                  NewRecents.push(TitrePage);
            }
      }
      Args.paramNewRecents = NewRecents;
      var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(ParamPage) + '&action=edit';
      ArticlesRecentsBOT_ajax.http({ url: URL,
                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 NewRecents = Args.paramNewRecents;

      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;
      if( 
      (ContenuPage.indexOf(ArticlesRecentsBOT_DebutListeRecents)!=-1) && 
      (ContenuPage.indexOf(ArticlesRecentsBOT_FinListeRecents)!=-1) ){  
            var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(ArticlesRecentsBOT_DebutListeRecents));
            AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(ArticlesRecentsBOT_FinListeRecents)) + ArticlesRecentsBOT_FinListeRecents;
            AncienModele = AncienModele.replace(debutTexte, "");       
            finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
            var 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);
      }
      if(TexteFinal == ContenuPage){
            ArticlesRecentsBOT_Update((position+1));
            return;
      }
      var SommaireFinal = ArticlesRecentsBOT_ResumeModif.split('$1').join(mw.config.get('wgPageName').replace(/_/g," "));
      if(NewRecents.length>0){
            for(var r=0;r<ArticlesRecentsBOT_MaxInSummary;r++){
                  if(NewRecents[r]) SommaireFinal += ' ; + [[' + NewRecents[r] + ']]';
            }
            if(NewRecents[ArticlesRecentsBOT_MaxInSummary]) SommaireFinal += ' ; ... ';
      }
      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));
}

// ///////////////////////////////////////////////////// RECHERCHE PAGES UTILISANT LE MODELE /////////////////////////

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++){
               var ActualPage = Pages[a].getAttribute('title')
               if(ActualPage.indexOf("/")!=-1) ActualPages.push(ActualPage);
          }
          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){
                         var Key = ActualPages[b].replace(/.*:/, "");
                         NewPages.push(Key+"||"+ActualPages[b]);
                    }
               }
               if(NewPages.length == 0){
                    alert('Pas de nouvelles pages à mettre à jour');
                    return;
               }
               NewPages = NewPages.sort();
               var Div = document.getElementById("ListToUpdate_CheckNewPages");
               if(Div){
                    var List = document.createElement('ol');
                    for(var i=0;i<NewPages.length;i++){
                         var PageTitle = NewPages[i].split("||")[1];
                         var Li = document.createElement('li');
                         var A = document.createElement('a');
                         A.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(PageTitle);
                         A.title = PageTitle
                         A.appendChild(document.createTextNode(PageTitle));
                         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);
}

// ############################################################################################################
//</nowiki></pre></source>((Boîte déroulante fin))
{{bottomLinkPreText}} {{bottomLinkText}}
Utilisateur:Dr Brains/ArticlesRecentsBOT.js
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?