Utilisateur:Dr Brains/CatsWithoutInterwiki.js

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.
//<source lang=javascript>//<pre><nowiki>
var CatsWithoutInterwiki_Page = mw.config.get('wgFormattedNamespaces')[2]+":Dr Brains/Travaux/14";

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

var CatsWithoutInterwiki_DefaultsortAliases = new Array();

var CatsWithoutInterwiki_ControlElement;


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

function CatsWithoutInterwiki_AddLink(){
     var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
     OngletsCactions.innerHTML += '<li><a title"Lister les catégories sans interwiki sur la page '+CatsWithoutInterwiki_Page+'" href="javascript:CatsWithoutInterwiki_Init();">Interwiki</a></li>';
}

function CatsWithoutInterwiki_Init(){
      CatsWithoutInterwiki_ControlElement = document.createElement('div');
      var Title = document.getElementsByTagName('h1')[0];      
      $(CatsWithoutInterwiki_ControlElement).insertAfter(Title)
      CatsWithoutInterwiki_Run();
}

var CatsWithoutInterwiki_CategoryInCategory = new Array();
var CatsWithoutInterwiki_CategoryInCategoryID = new Array();
var CatsWithoutInterwiki_CategoryInCategoryCount = 0;
 
var CatsWithoutInterwiki_IndexCategory = -1;
 
function CatsWithoutInterwiki_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='+CatsWithoutInterwiki_APILimit+'&cmtitle=' + category + '&cmcontinue=' + categorycontinue;
      CatsWithoutInterwiki_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 && CatsWithoutInterwiki_CategoryInCategory.indexOf(Title)==-1 && Title.indexOf("Wikipédia")==-1){
                        CatsWithoutInterwiki_CategoryInCategory[CatsWithoutInterwiki_CategoryInCategoryCount] = Title;
                        CatsWithoutInterwiki_CategoryInCategoryID[CatsWithoutInterwiki_CategoryInCategoryCount] = Version;
                        CatsWithoutInterwiki_CategoryInCategoryCount++
                  }
            }
            var Autrerequete = ObjetXML.getElementsByTagName('query-continue')[0];
            if(Autrerequete){
                  var AutreRequeteContinue = Autrerequete.getElementsByTagName('categorymembers')[0].getAttribute('cmcontinue');
                  CatsWithoutInterwiki_Run(category, AutreRequeteContinue);
            }else{
                  CatsWithoutInterwiki_IndexCategory++
                  var NewCategory = CatsWithoutInterwiki_CategoryInCategory[CatsWithoutInterwiki_IndexCategory];
                  if(NewCategory){
                        CatsWithoutInterwiki_Run(NewCategory);
                  }else{
                        CatsWithoutInterwiki_SortList();
                  }
            }
      }
      NouvelleRequete.send(null);
}
 
 
var CatsWithoutInterwiki_SortedCategoriesInCategory = new Array();
var CatsWithoutInterwiki_SortedCategoriesInCategoryID = new Array();
var CatsWithoutInterwiki_SortedCategoriesInCategoryCount = 0;
 
function CatsWithoutInterwiki_SortList(){
      CatsWithoutInterwiki_ControlElement.innerHTML = "Tri des pages";
      var PagesTemp = new Array();
      for(var a=0;a<CatsWithoutInterwiki_CategoryInCategory.length;a++){
            PagesTemp[a] = CatsWithoutInterwiki_CategoryInCategory[a] + ";"  + ( CatsWithoutInterwiki_CategoryInCategoryID[a] ? "&oldid="+ CatsWithoutInterwiki_CategoryInCategoryID[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, "");
                 CatsWithoutInterwiki_SortedCategoriesInCategory[CatsWithoutInterwiki_SortedCategoriesInCategoryCount] = PageName;
                 CatsWithoutInterwiki_SortedCategoriesInCategoryID[CatsWithoutInterwiki_SortedCategoriesInCategoryCount] = ID;
                 CatsWithoutInterwiki_SortedCategoriesInCategoryCount++
           }
      }
      var PopContent = 'Nombre de pages à vérifier : ' + CatsWithoutInterwiki_SortedCategoriesInCategoryCount + '\n\n'+CatsWithoutInterwiki_SortedCategoriesInCategory.join('\n');
      var Pop = true;
      //Pop = confirm(PopContent);
      if(!Pop) return;
      CatsWithoutInterwiki_GetInterwikis(0);
}

var CatsWithoutInterwiki_CatsWithoutInterwikiCount = 0;
var CatsWithoutInterwiki_Lines = new Array();

function CatsWithoutInterwiki_GetInterwikis(position){
      var Page = CatsWithoutInterwiki_SortedCategoriesInCategory[position];
      if(!Page){ 
            CatsWithoutInterwiki_Edit(); 
            return; 
      }
      CatsWithoutInterwiki_ControlElement.innerHTML = 'Recherche interwikis : <a href="'+ mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(Page) + '" >'+Page+'</a>';

      var NouvelleRequete = new XMLHttpRequest()
      var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=langlinks&lllimit='+CatsWithoutInterwiki_APILimit+'&titles='+Page+'&redirects';
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState == 4) {
                  var ObjetXML = NouvelleRequete.responseXML; 
                  if(!ObjetXML){
                        alert('La requête API a échoué :\n'+AdresseRequete);
                        return;
                  }
                  var Interwikis = "";
                  var LangLinks = ObjetXML.getElementsByTagName('ll');
                  for(var a=0;a<LangLinks.length;a++){
                        var ThisLang = LangLinks[a].getAttribute("lang");
                        var ThisLangLink = LangLinks[a].firstChild.nodeValue;
                        Interwikis+= "\n* [[:"+ThisLang+":"+ThisLangLink+"]]"
                  }
                  if(Interwikis=="") CatsWithoutInterwiki_CatsWithoutInterwikiCount++
                  var Line = '|-\n| valign="top" | [[:'+Page+']] \n| align="left" valign="top" |'+Interwikis+'\n';
                  CatsWithoutInterwiki_Lines.push(Line);
                  CatsWithoutInterwiki_GetInterwikis((position+1));
            }
      }
      NouvelleRequete.send(null);
}

var CatsWithoutInterwiki_TableResume = '';


var CatsWithoutInterwiki_TableStart = '{| class="wikitable sortable centre" width="100%"\n'
                                    + '|+ [[Utilisateur:Dr Brains/CatsWithoutInterwiki.js|Mise à jour]] des catégories sans interwikis dans la catégorie [[:Catégorie:'+mw.config.get('wgTitle')+'|'+mw.config.get('wgTitle')+']] : $1/$2\n'
                                    + '|-\n'
                                    + '! Page\n'
                                    + '! Interwikis\n';

var CatsWithoutInterwiki_TableEnd = '|}';

function CatsWithoutInterwiki_Edit(){
      CatsWithoutInterwiki_ControlElement.innerHTML = "Édition : "+ CatsWithoutInterwiki_Page;
      var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + CatsWithoutInterwiki_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 = CatsWithoutInterwiki_TableStart;
            Texte = Texte.split('$1').join(CatsWithoutInterwiki_CatsWithoutInterwikiCount);
            Texte = Texte.split("$2").join(CatsWithoutInterwiki_Lines.length);
            for(var a=0;a<CatsWithoutInterwiki_Lines.length;a++){
                  Texte += CatsWithoutInterwiki_Lines[a]
            }
            Texte += CatsWithoutInterwiki_TableEnd
            document.getElementById("wpTextbox1").value = Texte;
            document.getElementById("wpSummary").value = "Mise à jour pages sans interwikis : [[Catégorie:"+mw.config.get('wgTitle')+"|"+mw.config.get('wgTitle')+"]]";
            document.editform.submit();
      }
      NouvelleRequete.send(null);
}

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