Utilisateur:Dr Brains/PagesInCategoryBOT.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.
// <nowiki>
// Licence : Domaine public

var PagesInCategoryBOT_Page = mw.config.get('wgFormattedNamespaces')[2]+':'+mw.config.get('wgUserName')+'/List';

if(mw.config.get('wgNamespaceNumber')==14){ 
     addOnloadHook(PagesInCategoryBOT_AddLink);
}

function PagesInCategoryBOT_AddLink(){
     var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
     OngletsCactions.innerHTML += '<li><a href="javascript:PagesInCategoryBOT_GetOptions();">Liste</a></li>';
}


function PagesInCategoryBOT_GetOptions(){
      PagesInCategoryBOT_Page = prompt('Page où lister les pages de la catégorie ?', mw.config.get('wgFormattedNamespaces')[2]+':'+mw.config.get('wgUserName')+'/List');
      if(!PagesInCategoryBOT_Page) return;
      PagesInCategoryBOT_Run();
}



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

var PagesInCategoryBOT_PageInCategory = new Array();
var PagesInCategoryBOT_PageInCategoryCount = 0;

var PagesInCategoryBOT_CategoryInCategory = new Array();
var PagesInCategoryBOT_CategoryInCategoryCount = 0;
 
var PagesInCategoryBOT_IndexCategory = -1;

function PagesInCategoryBOT_Run(category, categorycontinue){
     if(!category) category = mw.config.get('wgPageName');    
     if(!categorycontinue) categorycontinue = '';
      var NouvelleRequete = new XMLHttpRequest()
      var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=categorymembers&cmlimit='+PagesInCategoryBOT_APILimit+'&cmtitle=' + category + '&cmcontinue=' + categorycontinue;
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.send(null);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
                  var ElementTraitement = document.createElement('div');
                  ElementTraitement.innerHTML = NouvelleRequete.responseText; 
                  var Informations = ElementTraitement.getElementsByTagName('span');
                  var AutreRequeteNecessaire = false;
                  for(a=0;a<Informations.length;a++){
                        var ContenuInformation = Informations[a].innerHTML;
                        if((ContenuInformation.indexOf('ns="0"')!=-1)||(ContenuInformation.indexOf('ns="1"')!=-1)||(ContenuInformation.indexOf('ns="14"')!=-1)){
                              var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
                              TitrePage = PagesInCategoryBOT_HTMLDecode(TitrePage);

                              TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')[1] + ':').join("");
                              if(TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')!=-1){
                                   PagesInCategoryBOT_CategoryInCategory[PagesInCategoryBOT_CategoryInCategoryCount] = TitrePage;
                                   PagesInCategoryBOT_CategoryInCategoryCount++
                              }else if(TitrePage.indexOf(mw.config.get('wgFormattedNamespaces')[14] + ':')==-1){
                                   PagesInCategoryBOT_PageInCategory[PagesInCategoryBOT_PageInCategoryCount] = TitrePage;
                                   PagesInCategoryBOT_PageInCategoryCount++
                              }
                        }
                        if(ContenuInformation.indexOf('cmcontinue=')!=-1){
                              AutreRequeteNecessaire = true;
                              var AutreRequeteContinue = ContenuInformation.split('cmcontinue="')[1].split('"')[0];
                              AutreRequeteContinue = PagesInCategoryBOT_HTMLDecode(AutreRequeteContinue);
                        }
                  } 
                  if(AutreRequeteNecessaire==true){
                        PagesInCategoryBOT_Run(category, AutreRequeteContinue);
                  }else{
                        PagesInCategoryBOT_IndexCategory++
                        var NewCategory = PagesInCategoryBOT_CategoryInCategory[PagesInCategoryBOT_IndexCategory];
                        if(NewCategory){
                              PagesInCategoryBOT_Run(NewCategory);
                        }else{
                              PagesInCategoryBOT_SortList();
                        }
                  }
            }
      }
}


var PagesInCategoryBOT_SortedPageInCategory = new Array();
var PagesInCategoryBOT_SortedPageInCategoryCount = 0;

function PagesInCategoryBOT_SortList(){
      var PagesTemp = PagesInCategoryBOT_PageInCategory.sort();
      for(var a=0;a<PagesTemp.length;a++){
           if(PagesTemp[a]!=PagesTemp[(a+1)]){
                 PagesInCategoryBOT_SortedPageInCategory[PagesInCategoryBOT_SortedPageInCategoryCount] = PagesTemp[a];
                 PagesInCategoryBOT_SortedPageInCategoryCount++
           }
      }
      var PopContent = 'Nombre de pages à lister : ' + PagesInCategoryBOT_SortedPageInCategoryCount + '\n';
      var Pop = confirm(PopContent);
      if(Pop) PagesInCategoryBOT_Edit();

      
}

function PagesInCategoryBOT_Edit(){
      var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + PagesInCategoryBOT_Page.replace(/&/g, "%26") + '&action=edit';
      var NouvelleRequete = new XMLHttpRequest();      
      NouvelleRequete.open("GET", url, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
            while(document.body.firstChild){ document.body.removeChild(document.body.firstChild);}
            var ElementTraitement = document.createElement('div');
            document.body.appendChild(ElementTraitement);
            ElementTraitement.innerHTML = NouvelleRequete.responseText; 
            var TextArea = document.getElementById('wpTextbox1');
            if(!TextArea){alert(url); return; }                  
            var Category = mw.config.get('wgPageName').replace(/_/g, " ")
            var TexteFinal = "\'\'\'[[:"+Category+"]]\'\'\'\n\n";
            for(var a=0;a<PagesInCategoryBOT_SortedPageInCategory.length;a++){
                  TexteFinal += '# [['+PagesInCategoryBOT_SortedPageInCategory[a]+']]\n'
            }
            var SommaireFinal = '[[:'+Category+']] ; ([[:fr:User:Dr Brains/PagesInCategoryBOT.js|script]])';
            document.getElementById('wpTextbox1').value = TexteFinal;
            document.getElementById('wpSummary').value = SommaireFinal;
            document.getElementById('wpMinoredit').checked = "checked";
            //document.editform.submit();

      }
      NouvelleRequete.send(null);
}

function PagesInCategoryBOT_HTMLDecode(text){
      var EncodedCharacter = new Array();
      var DecodedCharacter = new Array();
      var CharacterCount = 0;

      EncodedCharacter[CharacterCount] = "&amp;";
      DecodedCharacter[CharacterCount] = "&";
      CharacterCount++;
      EncodedCharacter[CharacterCount] = "&#039;";
      DecodedCharacter[CharacterCount] = "'";
      CharacterCount++;
      EncodedCharacter[CharacterCount] = "&quot;";
      DecodedCharacter[CharacterCount] = '"';
      CharacterCount++;

      for(var a=0;a<EncodedCharacter.length;a++){
            while(text.indexOf(EncodedCharacter[a])!=-1){
                  text = text.split(EncodedCharacter[a]).join(DecodedCharacter[a]);
                  if(text.indexOf(EncodedCharacter[a])==-1) break;
            }
      }
      return text;
}

function PagesInCategoryBOT_CleanModele(Modele){
      Modele = Modele.replace(/\n/g,"");
      Modele = Modele.replace(/\| /g,"\|");
      Modele = Modele.replace(/ \|/g,"\|");
      Modele = Modele.replace(/\|\}/g,"\}");
      Modele = Modele.replace(/\|\|/g,"\|");
      return Modele;
}

// </nowiki>