Utilisateur:Dr Brains/ListUnindexedPortals.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.
/*


<span id="ListUnindexedPortals_Link">[[Image:Crystal Clear action exit.svg|100px|Démarrer la mise à jour|link=]]</span>

*/
//-->{{Boîte déroulante début|titre=[[Utilisateur:Dr Brains/ListUnindexedPortals.js|Script]]}}<source lang=javascript>//<pre><nowiki>

var ListUnindexedPortals_APILimit = ( ((mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)) ? 4999 : 499 );

var ListUnindexedPortals_APIURL_AllPortals = '//fr.wikipedia.org/w/api.php?format=xml&action=query&list=allpages&aplimit='+ListUnindexedPortals_APILimit+'&apnamespace=100&apfilterredir=nonredirects';

var ListUnindexedPortals_APIURL_Templates = '//fr.wikipedia.org/w/api.php?format=xml&action=query&prop=templates&titles=$1&tltemplates=$2';


var ListUnindexedPortals_SearchedTemplate = "Nombre d'articles";


var ListUnindexedPortals_Ajax = function(bundle) {
    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){
                if (xmlhttp.status == 200 || xmlhttp.status == 302) {
                    if (bundle.onSuccess) bundle.onSuccess(xmlhttp,bundle);
                } else {
                    if (bundle.onFailure) bundle.onFailure(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) { }
            }
        }
        xmlhttp.send(bundle.data ? bundle.data : null);
    }
    return xmlhttp;
};


 
function ListUnindexedPortals_GetPage(URL, NextFunc){
    ListUnindexedPortals_Ajax({ url: URL,
                          onSuccess:NextFunc
    });
}


if(mw.config.get('wgNamespaceNumber')==2) addOnloadHook(ListUnindexedPortals_AddLinks);

function ListUnindexedPortals_AddLinks(){
      var ButtonLink = document.getElementById('ListUnindexedPortals_Link');
      if(!ButtonLink) return;
      var Link = '<a id="ListUnindexedPortals_A" href="javascript:ListUnindexedPortals_Run();" title="Lancer la mise à jour">' + ButtonLink.innerHTML + '</a>';
      ButtonLink.innerHTML = Link;
      var Separator = document.createElement('br');
      var ControlSpan = document.createElement('span');
      ControlSpan.id = 'ListUnindexedPortals_Control';
      ButtonLink.parentNode.insertBefore(Separator, ButtonLink);
      ButtonLink.parentNode.insertBefore(ControlSpan, Separator);
}

function ListUnindexedPortals_Alert(Text){
      if(!Text) Text = '';
      var ControlElement = document.getElementById('ListUnindexedPortals_Control');
      if(ControlElement) ControlElement.innerHTML = Text;
}

function ListUnindexedPortals_Run(){
      ListUnindexedPortals_Alert("Listage de tous les portails");
      ListUnindexedPortals_GetPage(ListUnindexedPortals_APIURL_AllPortals, ListUnindexedPortals_AllPortals);
}
 
var ListUnindexedPortals_Array = new Array();

function ListUnindexedPortals_AllPortals(Req){
      var ObjetXML = Req.responseXML; 
      var AllPortals = ObjetXML.getElementsByTagName('p');
      for(a=0;a<AllPortals.length;a++){
            var TitrePage =AllPortals[a].getAttribute('title');
            if(TitrePage.indexOf('/')==-1){
                  ListUnindexedPortals_Array.push(TitrePage);
            }
      } 
      var AutreRequeteNecessaire = ObjetXML.getElementsByTagName('query-continue')[0];
      if(AutreRequeteNecessaire){
            var ContinueParam = AutreRequeteNecessaire.firstChild.attributes[0];
            var AutreRequeteContinue = ContinueParam.value;
            ListUnindexedPortals_Alert("Listage de tous les portails : "+AutreRequeteContinue);
            ListUnindexedPortals_GetPage(ListUnindexedPortals_APIURL_AllPortals+'&'+ContinueParam.name+'='+encodeURIComponent(AutreRequeteContinue), ListUnindexedPortals_AllPortals);
      }else{
            ListUnindexedPortals_Alert("Listage des portails sans modèle");
            for(var a=0,l=ListUnindexedPortals_Array.length;a<l;a++){
              ListUnindexedPortals_SearchTemplate(a);
            }
      }
}

var ListUnindexedPortals_NoTemplateArray = new Array();

function ListUnindexedPortals_SearchTemplate(position){
  if(!position) position = 0;
  var Page = ListUnindexedPortals_Array[position];
  if(!Page){
    ListUnindexedPortals_ShowResult();
    return;
  }
  ListUnindexedPortals_Alert("Listage des portails sans modèle : "+Page);
  var URL = ListUnindexedPortals_APIURL_Templates;
  URL = URL.split("$1").join(encodeURIComponent(Page));
  URL = URL.split("$2").join("Modèle:"+encodeURIComponent(ListUnindexedPortals_SearchedTemplate));
  ListUnindexedPortals_Ajax({ url: URL,
                              onSuccess:ListUnindexedPortals_SearchTemplateDone,
                              page:Page
  });
}

function ListUnindexedPortals_SearchTemplateDone(Req, data){
  var XML = Req.responseXML;
  var TL = XML.getElementsByTagName("tl")[0];
  if(!TL || TL.getAttribute("title") != ("Modèle:"+ListUnindexedPortals_SearchedTemplate) ){
    ListUnindexedPortals_NoTemplateArray.push(data.page);
    ListUnindexedPortals_ShowResult();
  }
}

function ListUnindexedPortals_ShowResult(){
  var Text = "<p>Listage des portails sans modèle :</p>";
  if(ListUnindexedPortals_NoTemplateArray.length===0){
    Text += "<ul><li><b>Aucun</b></li></ul>";
  }else{
    Text += "<ol>";
    for(var a=0,l=ListUnindexedPortals_NoTemplateArray.length;a<l;a++){
      var Page = ListUnindexedPortals_NoTemplateArray[a];
      var Link = '<a href="'+mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join(encodeURIComponent(Page))+'" '
               + 'title="'+Page+'" '
               + '>'+Page+'</a>'; 
      Text += "<li>" + Link +"</li>";
    }
    Text += "</ol>";
  }
  ListUnindexedPortals_Alert(Text);  
}

// </nowiki></pre></source>{{Boîte déroulante fin}}