Aller au contenu

Utilisateur:Dr Brains/PagesWithoutInfobox.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) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//<source lang=javascript>//<pre><nowiki>
var PagesWithoutInfobox_Page = "Utilisateur:Dr Brains/Travaux/15";

//////////////////////////////////////////////////////////////////////////////////////////////////////////
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
   var PagesWithoutInfobox_APILimit = 4999;
}else{
   var PagesWithoutInfobox_APILimit = 499;
}

var PagesWithoutInfobox_DefaultsortAliases = new Array();

var PagesWithoutInfobox_ControlElement;


if((mw.config.get('wgNamespaceNumber')==14)&&(mw.config.get('wgAction')=="view"||mw.config.get('wgAction')=="purge")){
     addOnloadHook(PagesWithoutInfobox_AddLink);
}

function PagesWithoutInfobox_AddLink(){
     var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
     OngletsCactions.innerHTML += '<li><a title"Lister les pages sans infobox sur la page '+PagesWithoutInfobox_Page+'" href="javascript:PagesWithoutInfobox_Init();">Infobox</a></li>';
}

function PagesWithoutInfobox_Init(){
      PagesWithoutInfobox_ControlElement = document.createElement('div');
      var Title = document.getElementsByTagName('h1')[0];      
      $(PagesWithoutInfobox_ControlElement).insertAfter(Title)
      PagesWithoutInfobox_Run();
}

var PagesWithoutInfobox_PageInCategory = new Array();
var PagesWithoutInfobox_PageInCategoryID = new Array();
var PagesWithoutInfobox_PageInCategoryCount = 0;
 
var PagesWithoutInfobox_CategoryInCategory = new Array();
var PagesWithoutInfobox_CategoryInCategoryCount = 0;
 
var PagesWithoutInfobox_IndexCategory = -1;
 
function PagesWithoutInfobox_Run(category, categorycontinue){
      if(!category) category = mw.config.get('wgPageName');    
      if(!categorycontinue) categorycontinue = '';
      var NouvelleRequete = new XMLHttpRequest()
      var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=categorymembers&cmlimit='+PagesWithoutInfobox_APILimit+'&cmtitle=' + category + '&cmcontinue=' + categorycontinue;
      PagesWithoutInfobox_ControlElement.innerHTML = 'Listing catégorie : <a href="'+ mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(category) + '" >'+category+'</a>';
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 ) return;
            var ObjetXML = NouvelleRequete.responseXML;
            if(ObjetXML==null){ alert("Problème : \n"+AdresseRequete); return; }
            var AllCats = ObjetXML.getElementsByTagName('cm');
            for(var a=0;a<AllCats.length;a++){
                  var Ns = parseInt(AllCats[a].getAttribute('ns'));
                  var Title = AllCats[a].getAttribute('title');
                  var Version = AllCats[a].getAttribute('pageid');
                  //alert(Title + " - " + Ns + " - " + Version);
                  if(Ns==14 && PagesWithoutInfobox_CategoryInCategory.indexOf(Title)==-1  && Title.indexOf("Wikipédia")==-1){
                        PagesWithoutInfobox_CategoryInCategory[PagesWithoutInfobox_CategoryInCategoryCount] = Title;
                        PagesWithoutInfobox_CategoryInCategoryCount++
                  }else if(Ns==0||Ns==1){
                        Title = Title.split(mw.config.get('wgFormattedNamespaces')[1] + ':').join("");
                        if(Ns==0) PagesWithoutInfobox_PageInCategoryID[PagesWithoutInfobox_PageInCategoryCount] = Version;
                        PagesWithoutInfobox_PageInCategory[PagesWithoutInfobox_PageInCategoryCount] = Title;
                        PagesWithoutInfobox_PageInCategoryCount++
                  }
            }
            var Autrerequete = ObjetXML.getElementsByTagName('query-continue')[0];
            if(Autrerequete){
                  var AutreRequeteContinue = Autrerequete.getElementsByTagName('categorymembers')[0].getAttribute('cmcontinue');
                  PagesWithoutInfobox_Run(category, AutreRequeteContinue);
            }else{
                  PagesWithoutInfobox_IndexCategory++
                  var NewCategory = PagesWithoutInfobox_CategoryInCategory[PagesWithoutInfobox_IndexCategory];
                  if(NewCategory){
                        PagesWithoutInfobox_Run(NewCategory);
                  }else{
                        PagesWithoutInfobox_SortList();
                  }
            }
      }
      NouvelleRequete.send(null);
}
 
 
var PagesWithoutInfobox_SortedPageInCategory = new Array();
var PagesWithoutInfobox_SortedPageInCategoryID = new Array();
var PagesWithoutInfobox_SortedPageInCategoryCount = 0;
 
function PagesWithoutInfobox_SortList(){
      PagesWithoutInfobox_ControlElement.innerHTML = "Tri des pages";
      var PagesTemp = new Array();
      for(var a=0;a<PagesWithoutInfobox_PageInCategory.length;a++){
            PagesTemp[a] = PagesWithoutInfobox_PageInCategory[a] + ";"  + ( PagesWithoutInfobox_PageInCategoryID[a] ? "&oldid="+ PagesWithoutInfobox_PageInCategoryID[a] : "");
      }
      PagesTemp = PagesTemp.sort();
      for(var a=0;a<PagesTemp.length;a++){
           if(PagesTemp[a]!=PagesTemp[(a+1)]){
                 var PageName = PagesTemp[a].replace(/;.*/g, "");
                 var ID = PagesTemp[a].replace(/.*;/g, "");
                 PagesWithoutInfobox_SortedPageInCategory[PagesWithoutInfobox_SortedPageInCategoryCount] = PageName;
                 PagesWithoutInfobox_SortedPageInCategoryID[PagesWithoutInfobox_SortedPageInCategoryCount] = ID;
                 PagesWithoutInfobox_SortedPageInCategoryCount++
           }
      }
      var PopContent = 'Nombre de pages à vérifier : ' + PagesWithoutInfobox_SortedPageInCategoryCount + '\n';
      var Pop = true;
      //Pop = confirm(PopContent);
      if(Pop) PagesWithoutInfobox_GetInfobox(0);
}

var PagesWithoutInfobox_Lines = new Array();
var PagesWithoutInfobox_Count = 0;

function PagesWithoutInfobox_GetInfobox(position){
      var Page = PagesWithoutInfobox_SortedPageInCategory[position];
      if(!Page){ 
            PagesWithoutInfobox_Edit(); 
            return; 
      }
      PagesWithoutInfobox_ControlElement.innerHTML = 'Recherche infobox : <a href="'+ mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(Page) + '" >'+Page+'</a>';
      var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=templates&redirects&tllimit=' + PagesWithoutInfobox_APILimit + '&titles=' + Page.replace(/&/g, "%26");
      var NouvelleRequete = new XMLHttpRequest();      
      NouvelleRequete.open("GET", url, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4) return;
            var Infobox = "";
            var ObjetXML = NouvelleRequete.responseXML; 
            var templates = ObjetXML.getElementsByTagName('tl'); 
            if(templates[0]){
                  for (j=0; j<templates.length; j++){
                        var Template = templates[j].getAttribute("title");
                        if( Template.indexOf("Modèle:Infobox")!=-1 && Template.indexOf("/")==-1 ){
                              Infobox += "\n* {{M|"+Template.split('Modèle:').join('')+"}}";
                        }
                        if(Template.indexOf("Taxobox")!=-1 && Infobox.indexOf("Taxobox")==-1 ){
                              Infobox += "\n* {{M|Taxobox}}";
                        }
                  }
            }
            if(Infobox == "") PagesWithoutInfobox_Count++
            var Line = '|-\n| valign="top" valign="left" | [['+Page+']] \n| valign="top" align="left" |'+Infobox+'\n';
            PagesWithoutInfobox_Lines.push(Line);
            PagesWithoutInfobox_GetInfobox((position+1));
      }
      NouvelleRequete.send(null);
}

var PagesWithoutInfobox_TableStart = '{| class="wikitable sortable centre" width="100%" \n|+ [[:Catégorie:$1]] : $2/$3\n|-\n! Page\n! Infobox\n';
var PagesWithoutInfobox_TableEnd = '|}';

function PagesWithoutInfobox_Edit(){
      PagesWithoutInfobox_ControlElement.innerHTML = "Édition : "+ PagesWithoutInfobox_Page;
      var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + PagesWithoutInfobox_Page.replace(/&/g, "%26") + '&action=edit';
      var NouvelleRequete = new XMLHttpRequest();      
      NouvelleRequete.open("GET", url, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4) return;
            while(document.body.firstChild){ document.body.removeChild(document.body.firstChild);}
            document.body.innerHTML = NouvelleRequete.responseText; 
            var Texte = PagesWithoutInfobox_TableStart
            Texte = Texte.split('$1').join(mw.config.get('wgTitle'));
            Texte = Texte.split('$2').join(PagesWithoutInfobox_Count);
            Texte = Texte.split('$3').join(PagesWithoutInfobox_Lines.length);
            for(var a=0;a<PagesWithoutInfobox_Lines.length;a++){
                  Texte += PagesWithoutInfobox_Lines[a]
            }
            Texte += PagesWithoutInfobox_TableEnd
            document.getElementById("wpTextbox1").value = Texte;
            document.getElementById("wpSummary").value = "Mise à jour pages sans infobox : [[Catégorie:"+mw.config.get('wgTitle')+"|"+mw.config.get('wgTitle')+"]]";
            document.editform.submit();
      }
      NouvelleRequete.send(null);
}

// </nowiki></pre></source>