Aller au contenu

Utilisateur:MicroCitron/vector.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.
importScript('Utilisateur:Dr Brains/ArticlesManquants.js');
// Adresses API
 
// Liste des pages
// mw.config.get('wgServer') + '/w/api.php?action=query&list=categorymembers&cmlimit='+APILimit+'&cmtitle=' + CATEGORIE + '&cmcontinue='
 
// Liste des liens
// mw.config.get('wgServer')+'/w/api.php?action=query&prop=links&titles='+PAGE+'&plnamespace=0&pllimit='+APILimit+'&plcontinue='
 
 
 
var WantedPages_ModeleDefautDebut = '{{Articles manquants\n'
                  + '|pageportail=$1\n'
                  + '|catégorie=$2\n'
                  + '|hauteur=\n'
                  + '|intro=\n'
                  + '}}\n'
 
var WantedPages_ModeleDefautFin = '{{Articles manquants fin}}\n';
 
var WantedPages_ResumeModif = 'Mise à jour du modèle {{Articles manquants}} ([[:$1]]).';
 
 
 
var  RedPages_DebutModele = '<!-- Ce tableau est créé automatiquement par un robot. Pages Rouges DEBUT -->\n';
var  RedPages_FinModele = '<!-- Ce tableau est créé automatiquement par un robot. Pages Rouges FIN -->\n'
 
var  WantedPages_DebutModele = '<!-- Ce tableau est créé automatiquement par un robot. Articles Manquants DEBUT -->\n';
var  WantedPages_FinModele = '<!-- Ce tableau est créé automatiquement par un robot. Articles Manquants FIN -->\n'
 
var WantedPages_DebutTableauTriable = '{| class="wikitable centre sortable" width="100%"\n'
 
 
var WantedPages_DebutTableauTriable2 = '{| class="wikitable centre sortable"\n'
 
var WantedPages_Minimum = 10;
 
var WantedPages_CreateRecapTable = true;
 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
var WantedPages_Adresse = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";
if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit") ){
     addOnloadHook(WantedPages_MakeLinks);
}
 
var WantedPages_StartButton = '<img height="50" width="50" 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">';
 
var WantedPages_WorkingButton = '<img height="50" width="50" src="http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" alt="Mise à jour en cours">';
 
 
// recherche des modèles de la page et ajout des liens de mise à jour
 
function WantedPages_MakeLinks(){
     var count=-1;
     var Cadres = document.getElementsByTagName('div');
     for(s=0;s<Cadres.length;s++){
            if( $(Cadres[s]).hasClass('categoryWantedPages') ){          
                  count++
                  Cadres[s].id = 'WantedPages_'+count;
                  var ParamCategorie = Cadres[s].firstChild.innerHTML;
                  var ParamPage = Cadres[s].firstChild.title;
                  var NewButton = '<a id="WantedPagesLink_'+count+'" href="javascript:WantedPages_GetParams('+count+ ');" title="Catégorie ' + ParamCategorie.replace(/Catégorie:/ig,'') + ' - Page '+ParamPage+'" >'+WantedPages_StartButton+'</a>' ;
                  Cadres[s].innerHTML += NewButton ;
            }
     }
}
 
function WantedPages_GetParams(ID){
     var Modele = document.getElementById('WantedPages_'+ID);
     if(!Modele) return;
     var Cadre = Modele.firstChild;
     if(!Cadre) return;
     var ParamCategorie = Cadre.innerHTML;
     var ParamPage = Cadre.title;
     var Pop1 = 'Limite basse du nombre d\'occurrences :\n'
     var Minimum = prompt(Pop1, WantedPages_Minimum);
     if(Minimum){
          if(Minimum!=''){
               Minimum = parseInt(Minimum);
               if(Minimum!="NaN") WantedPages_Minimum = Minimum;
          }
     }
     WantedPages_CreateRecapTable = confirm('Générer le tableau récapitulatif ?');
     var Pop2 = 'Catégorie à vérifier :\n'
              + '* '+ParamCategorie+'\n\n'
              + 'Page à mettre à jour :\n'
              + '* '+ParamPage+'\n\n'
              + 'Minimum :\n'
              + '* '+WantedPages_Minimum+'\n\n'
              + 'Tableau récapitulatif :\n'
              + '* '+(WantedPages_CreateRecapTable ? 'oui' : 'non')+'\n\n'
              + 'Continuer ?';
     var SurEtCertain = confirm(Pop2);
     if(SurEtCertain){
          Modele.innerHTML += '<br /><span id="WorkingFunction" ></span><br /><span id="WorkingPage" ></span>';
          WantedPages_CheckCategory(ParamPage, ParamCategorie);
          var Lien = document.getElementById('WantedPagesLink_'+ID)
          if(Lien){
               Lien.innerHTML = WantedPages_WorkingButton ;
               Lien.title = "Arrêter la mise à jour" ;
               Lien.href = "javascript:window.location.reload();";
               Lien.blur();
          }
     }
}
 
// ///////////////////////////////////////////////////// REQUÊTE PAGES DE LA CATÉGORIE /////////////////////////
 
function WantedPages_CheckCategory(ParamPage, ParamCategorie, ParamContinue, PageList){
      if(!PageList) PageList = new Array();
      if(!ParamContinue) ParamContinue='';
      if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
           var APILimit=4999;
      }else{
           var APILimit=499;
      }
 
      document.getElementById('WorkingFunction').innerHTML = "Listage des pages";
      document.getElementById('WorkingPage').innerHTML = ParamCategorie;
      var NouvelleRequete = new XMLHttpRequest()
      var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=categorymembers&cmlimit='+APILimit+'&cmtitle=' + ParamCategorie.replace(/&/g,"%26") + '&cmcontinue=' + ParamContinue;
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
            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)){
                        var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
                        TitrePage = WantedPages_Clean(TitrePage);
                        TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')[1]+':').join('');
                        PageList.push(TitrePage);
                  }
                  if(ContenuInformation.indexOf('cmcontinue=')!=-1){
                        AutreRequeteNecessaire = true;
                        var AutreRequeteContinue = ContenuInformation.split('cmcontinue="')[1].split('"')[0];
                        AutreRequeteContinue = WantedPages_Clean(AutreRequeteContinue);
                  }
            } 
            if(AutreRequeteNecessaire==true){
                  WantedPages_CheckCategory(ParamPage, ParamCategorie, AutreRequeteContinue, PageList);
            }else{
                  WantedPages_GetLinks(0, ParamPage, ParamCategorie, PageList);
            }
      }
      NouvelleRequete.send(null);
}
 
// ///////////////////////////////////////////////////// REQUÊTE LIENS DE CHAQUE PAGE /////////////////////////
 
function WantedPages_GetLinks(position, ParamPage, ParamCategorie, PageList, RedLinkTable, PageLinkTable){
      if(!RedLinkTable) RedLinkTable = new Array();
      if(!PageLinkTable) PageLinkTable = new Array();
      var Page = PageList[position];
      //alert(position + ' - ' + Page);
      if(!Page){
            WantedPages_SortLinks(ParamPage, ParamCategorie, RedLinkTable, PageLinkTable);
            return;
      }
      var NouvelleRequete = new XMLHttpRequest()
      var AdresseRequete = mw.config.get('wgServer')+mw.config.get('wgScript')+'?title='+encodeURIComponent(Page).replace(/&/g,"%26")+'&action=render';
      document.getElementById('WorkingFunction').innerHTML = "Listage des liens";
      document.getElementById('WorkingPage').innerHTML = Page+'<br/>'+AdresseRequete;
 
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
            var ElementTraitement = document.createElement('div');
            //ElementTraitement.style.display = "none";
            ElementTraitement.innerHTML = NouvelleRequete.responseText; 
            //document.body.appendChild(ElementTraitement);
            var Liens = ElementTraitement.getElementsByTagName('a');
            var RedLinkCount = 0;
            var LinkCount = 0;
            for(var a=0;a<Liens.length;a++){
                  var Lien = Liens[a];
                  var Cible = Lien.title;
                  var Href = Lien.href;
                  if(($(Lien).hasClass("external"))||(Href.indexOf('#')!=-1)||(Href.indexOf('javascript:')!=-1)) continue;
                  if((Cible.indexOf(mw.config.get('wgFormattedNamespaces')[11]+':')!=-1)||(Cible.indexOf(mw.config.get('wgFormattedNamespaces')[10]+':')!=-1)||(Cible.indexOf(mw.config.get('wgFormattedNamespaces')[14]+':')!=-1)) continue;
 
                  LinkCount++
                  if(($(Lien).hasClass("new")&&(Cible.indexOf('(page inexistante)')!=-1)&&(Href.indexOf('&redlink=1')!=-1))){
                        RedLinkCount++     
                        Cible = Cible.replace(/ \(page.*/g, "")                   
                        var RedLinkLigne = '$1$2|-\n'
                                  + '| [[Special:Whatlinkshere/'+Cible+'|$1 occurrences]]\n'
                                  + '| [['+Cible+']]\n'
                        RedLinkTable.push(RedLinkLigne);
                  }
            } 
            var Avancement = Math.round( ( (LinkCount-RedLinkCount) / LinkCount ) * 100 );
            var zeroAvancement = "";
            if(Avancement<10) zeroAvancement += "0"; 
            if(Avancement<100) zeroAvancement += "0";
            var PageLinkLigne = '|-\n'
                              + '| [['+Page+']]\n'
                              + '| align="right" | '+RedLinkCount+'\n'
                              + '| align="right" | '+LinkCount+'\n'
                              + '| {{Avancement|'+ Avancement+'|||||'+zeroAvancement+Avancement+'%}}\n'
            PageLinkTable[position] =PageLinkLigne;
            //alert(PageLinkTable[position]);
            WantedPages_GetLinks((position+1), ParamPage, ParamCategorie, PageList, RedLinkTable, PageLinkTable);
      }
      NouvelleRequete.send(null);
}
 
// ///////////////////////////////////////////////////// TRI DES LIENS /////////////////////////
 
function WantedPages_SortLinks(ParamPage, ParamCategorie, RedLinkTable, PageLinkTable){
      document.getElementById('WorkingFunction').innerHTML = "Triage des liens";
      document.getElementById('WorkingPage').innerHTML = '';
      var TempLinkList = RedLinkTable.sort();
      var NewRedLinkTable = new Array();
      var NewRedLinkTableCount = new Array();
      var index = 0;
      var NbLiens = 1;
      for(var a=0;a<TempLinkList.length;a++){            
            if(TempLinkList[a]==TempLinkList[(a+1)]){
                  NbLiens++
            }else{
                  NewRedLinkTable[index] = TempLinkList[a];
                  NewRedLinkTableCount[index] = NbLiens;
                  index++
                  NbLiens = 1;
            }
      }
      for(var a=0;a<NewRedLinkTable.length;a++){
            var Occurrences = NewRedLinkTableCount[a];
            var ZeroOccurrences = "";
            if(Occurrences<10) ZeroOccurrences +="0";
            if(Occurrences<100) ZeroOccurrences +="0";
            if(Occurrences<1000) ZeroOccurrences +="0";
            if(Occurrences>(WantedPages_Minimum-1)){
                  NewRedLinkTable[a] = NewRedLinkTable[a].split('$1').join(ZeroOccurrences + Occurrences);
            }else{
                  NewRedLinkTable[a] = false;
            }
      }
      NewRedLinkTable = NewRedLinkTable.sort();
      for(var a=0;a<NewRedLinkTable.length;a++){
            if(NewRedLinkTable[a]) NewRedLinkTable[a] = NewRedLinkTable[a].split('$2')[1];
      }
      WantedPages_Edit(ParamPage, ParamCategorie, NewRedLinkTable, PageLinkTable);
}
 
// ///////////////////////////////////////////////////// ÉDITION /////////////////////////
 
function  WantedPages_Edit(ParamPage, ParamCategorie, NewRedLinkTable, PageLinkTable){
      var ajaxRequest = new XMLHttpRequest();
      var AdresseRequete = WantedPages_Adresse + ParamPage.replace(/&/g, "%26") + '&action=edit';
      ajaxRequest.open("GET", AdresseRequete, true);
      ajaxRequest.onreadystatechange = function() {
            if(ajaxRequest.readyState != 4 || ajaxRequest.status != 200) return;
            while(document.body.firstChild){document.body.removeChild(document.body.firstChild);} 
            document.body.innerHTML = ajaxRequest.responseText;
 
            var Aujourdhui = new Date();
            var Minutes   = Aujourdhui.getMinutes()
            if(Minutes<10){ var ZeroMinutes = "0" ; }else{ var ZeroMinutes = "";}
            var Heures   = Aujourdhui.getHours()
            if(Heures<10){ var ZeroHeures = "0" ; }else{ var ZeroHeures = "";}
            var Jour   = Aujourdhui.getDate();
            if(Jour<10){ var ZeroJour = "0" ; }else{ var ZeroJour = "";}
            var Mois = Aujourdhui.getMonth() + 1;
            if(Mois<10){ var ZeroMois = "0" ; }else{ var ZeroMois = "";}
            var Annee  = Aujourdhui.getYear();
            if (Annee < 2000){
                  Annee = Annee + 1900;
            }
 
            var TitreHaut = '\'\'Tableau [[Modèle:Articles manquants/Documentation|mis à jour]] le ' + ZeroJour + Jour + '/' + ZeroMois + Mois + '/' + Annee + ' à ' + ZeroHeures + Heures + ':' + ZeroMinutes + Minutes + '\'\'\n';
             var TableauTriable = WantedPages_DebutTableauTriable
                               + '|+ ' + TitreHaut
                               + '|-\n'
                               + '! align="center" | Occurences\n'
                               + '! align="center" | Page\n';
 
// ---------------- Classement pages demandées ----------------
 
 
            for(a=(NewRedLinkTable.length-1);a>-1;a--){
                  if(NewRedLinkTable[a]) TableauTriable += NewRedLinkTable[a];
            }
            TableauTriable += '|}\n';
            var TableauComplet = WantedPages_DebutModele+TableauTriable+WantedPages_FinModele;
 
            var TableauTriableRedPages = ''
            if(WantedPages_CreateRecapTable){
                  TableauTriableRedPages += WantedPages_DebutTableauTriable2
                                          + '|+ ' + TitreHaut
                                          + '|-\n'
                                          + '! align="center" width="40%" | Page\n'
                                          + '! align="center" width="20%" | Liens rouges\n'
                                          + '! align="center" width="20%" | Total liens\n'
                                          + '! align="center" width="20%" | Avancement\n';
 
                  for(a=0;a<PageLinkTable.length;a++){
                        TableauTriableRedPages += PageLinkTable[a];
                  }
                  TableauTriableRedPages += '|}\n';
            }
            var TableauCompletRedPages = RedPages_DebutModele+TableauTriableRedPages +RedPages_FinModele;
 
 
            WantedPages_ModeleDefautDebut = WantedPages_ModeleDefautDebut.split('$1').join(ParamPage);
            WantedPages_ModeleDefautDebut= WantedPages_ModeleDefautDebut.split('$2').join(ParamCategorie);
            //alert(WantedPages_ModeleDefautDebut);
 
            var ContenuPage = document.getElementById("wpTextbox1").value;
            var AncienResumeModif = document.editform.wpSummary.value;
 
            if( (ContenuPage.indexOf(WantedPages_DebutModele)!=-1)&&(ContenuPage.indexOf(WantedPages_FinModele)!=-1) ){         
// ----------------- Déja le modèle : remplacement tableau
                  debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(WantedPages_DebutModele));
                  AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(WantedPages_FinModele)) + WantedPages_FinModele;
                  AncienModele = AncienModele.replace(debutTexte, "");       
                  finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
                  var TexteFinal = debutTexte + TableauComplet + finTexte;
            }else{
// ------------------------------------------------Pas de modèle : ajout modèle + tableau
                  var TexteFinal = WantedPages_ModeleDefautDebut + TableauComplet + WantedPages_ModeleDefautFin + ContenuPage;
            }
            if( (TexteFinal.indexOf(RedPages_DebutModele)!=-1)&&(TexteFinal.indexOf(RedPages_FinModele)!=-1) ){ 
// ----------------- Déja le modèle : remplacement tableau
                  var newdebutTexte = TexteFinal.substring(0, TexteFinal.indexOf(RedPages_DebutModele));
                  var newAncienModele = TexteFinal.substring(0, TexteFinal.indexOf(RedPages_FinModele)) + RedPages_FinModele;
                  newAncienModele = newAncienModele.replace(newdebutTexte, "");       
                  var newfinTexte = TexteFinal.split(newdebutTexte).join('').split(newAncienModele).join('');
                  TexteFinal = newdebutTexte + TableauCompletRedPages + newfinTexte;
            }else{
// ------------------------------------------------Pas de modèle : ajout modèle + tableau
                  var TexteFinal = WantedPages_ModeleDefautDebut + TableauCompletRedPages + WantedPages_ModeleDefautFin + TexteFinal;
            }
 
            document.getElementById ("wpTextbox1").value = TexteFinal ;
            document.editform.wpSummary.value = AncienResumeModif + WantedPages_ResumeModif.split('$1').join(ParamCategorie);
 
            document.editform.submit();
      }
      ajaxRequest.send(null);
}
 
// ///////////////////////////////////////////////////// NETTOYAGE REQUÊTES API /////////////////////////
 
function WantedPages_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;
}
 
//
importScript('User:EDUCA33E/LiveRC.js');
// Nouvelle navigation 
      function LiensNavigation() {
        var ptb = document.getElementById("p-navigation");
        if (ptb) {
          var ul = ptb.getElementsByTagName("ul");
          if(ul.length > 0)    
          ul[0].innerHTML += '<li id="t-suivi AdQ"><a href="http://fr.wikipedia.org/wiki/Sp%C3%A9cial:Suivi_des_liens/Cat%C3%A9gorie:Article_de_qualit%C3%A9">Suivi AdQ</a></li>';      
          ul[0].innerHTML += '<li id="t-suivi BA"><a href="http://fr.wikipedia.org/wiki/Sp%C3%A9cial:Suivi_des_liens/Cat%C3%A9gorie:Bon_article">Suivi BA</a></li>';
     }
}
addOnloadHook(LiensNavigation);
var alwaysEval = false; //mettez cette valeur à ''true'' si vous voulez que l'évaluation soit lancée automatiquement (à éviter en temps normal)
function initEvalProjectNames()
{
	evalProjectNames=new Array(); //liste de vos projets
	evalProjectNames.push("Les Simpson") 
}