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

;Fonctions :
* Au lancement :
*# Pages vides encadrées en rouge
*# Menu supplémentaire de tri des pages
* Via le menu supplémentaire :
*# Recherche des pages sans bandeau de portail
*# Recherche des pages sans catégorie
*# Recherche des pages sans interwiki
*# Recherche des pages non-wikifiés (nombre de liens inférieur à une certaine valeur, 3 par défaut)
*# Recherche des pages orphelines (nombre de pages liées inférieur à une certaine valeur, 3 par défaut)


*/
////////////////////////////////////////////////////////////////////////// LANCEMENT + STYLES

if(mw.config.get('wgCanonicalSpecialPageName')=="Newpages"){

    addOnloadHook(NewPagesDeluxe);

    document.write('<style type="text/css">'
    +'.EmptyPage {'
    +'border:1px solid red;'
    +'}'
    +'.NewPagesDeluxe_Balise {'
    +'cursor:pointer;'
    +'text-decoration:blink;'
    +'padding:0;'
    +'}'
    +'.NewPagesDeluxe_Portail {'
    +'display:none;'
    +'}'
    +'.NewPagesDeluxe_Cat {'
    +'display:none;'
    +'}'
    +'.NewPagesDeluxe_Interwiki {'
    +'display:none;'
    +'}'
    +'.NewPagesDeluxe_Wikif {'
    +'display:none;'
    +'}'
    +'.NewPagesDeluxe_Orphan {'
    +'display:none;'
    +'}'
    +'.NewPagesDeluxe_Running {'
    +'background-color:silver;'
    +'border:1px solid black;'
    +'}'
    +'</style>');
 
}

// ////////////////////////////////////////////////////////// NOUVELLES OPTIONS ///////////////////////

function NewPagesDeluxe(){
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;


    var Liste = Content.getElementsByTagName('li');
    for(var a=0;a<Liste.length;a++){
        if(Liste[a].innerHTML.indexOf('[0 octet]')!=-1){ // --------- Pages blanchies
            $(Liste[a]).addClass("EmptyPage");
        }
    }
    var NewPagesTable = document.getElementById('mw-newpages-table');
    var NewMenu = document.createElement('tr');
    NewPagesTable.firstChild.appendChild(NewMenu);
    var NewPagesWithoutPortalLink = '<a href="javascript:NewPagesDeluxe_Portal(0);" >Sans bandeau de portail</a>';
    var NewPagesWithoutCatsLink = '<a href="javascript:NewPagesDeluxe_Category(0);" >Sans catégorie</a>';
    var NewPagesWithoutInterwikiLink = '<a href="javascript:NewPagesDeluxe_Interwiki(0);" >Sans interwiki</a>';
    var NewPagesWikifLink = '<a href="javascript:NewPagesDeluxe_Wikif();" >Non-wikifiées</a>';
    var NewPagesOrphansLink = '<a href="javascript:NewPagesDeluxe_Orphan();" >Orphelines</a>';
    var NewPagesWithoutCancelLink = '<a href="javascript:NewPagesDeluxe_Cancel();" >Annuler</a>';
    NewMenu.innerHTML = '<td></td><td>Ne montrer que les pages : '
                       +NewPagesWithoutPortalLink+'&nbsp;|&nbsp;'
                       +NewPagesWithoutCatsLink+'&nbsp;|&nbsp;'
                       +NewPagesWithoutInterwikiLink+'&nbsp;|&nbsp;'
                       +NewPagesWikifLink+'&nbsp;|&nbsp;'
                       +NewPagesOrphansLink+'&nbsp;|&nbsp;'
                       +NewPagesWithoutCancelLink
                       +'</td>';

}


// ////////////////////////////////////////////////////////// PAGES SANS BANDEAU DE PORTAIL ///////////////////////

function NewPagesDeluxe_Portal(position){
    if(!position) position = 0;
    if(position==0) NewPagesDeluxe_Cancel();
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;
    var Liste = Content.getElementsByTagName('li')[position];
    if(!Liste){alert('Tri effectué'); return;}
    $(Liste).addClass("NewPagesDeluxe_Running");
    var PageLink = Liste.getElementsByTagName('a')[0].innerHTML;
    var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=templates&tllimit=499&titles=' + PageLink.replace(/&amp;/g,"%26").replace(/&/g,"%26") + '&redirects';
    var NouvelleRequete = new XMLHttpRequest();
    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; 
            //document.body.appendChild(ElementTraitement);
            var Informations = ElementTraitement.getElementsByTagName('span');
            var matchPortail = false;
            for(a=0;a<Informations.length;a++){
                var ContenuInformation = Informations[a].innerHTML;
                if(ContenuInformation.indexOf('title=')!=-1){
                    var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
                    TitrePage = NewPagesDeluxe_APIClean(TitrePage);
                    if(TitrePage=="Modèle:Méta lien vers portail") matchPortail = true;
                }
            }
            if(matchPortail==true) $(Liste).addClass("NewPagesDeluxe_Portail");
            $(Liste).removeClass("NewPagesDeluxe_Running");
            NewPagesDeluxe_Portal((position+1));
        }
    }
}


// ////////////////////////////////////////////////////////// PAGES SANS CATÉGORIES ///////////////////////

function NewPagesDeluxe_Category(position){
    if(!position) position = 0;
    if(position==0) NewPagesDeluxe_Cancel();
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;
    var Liste = Content.getElementsByTagName('li')[position];
    if(!Liste){alert('Tri effectué'); return;}
    $(Liste).addClass("NewPagesDeluxe_Running");
    var PageLink = Liste.getElementsByTagName('a')[0].innerHTML;
    var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=categories&titles=' + PageLink.replace(/&amp;/g,"%26").replace(/&/g,"%26") + '&redirects';
    var NouvelleRequete = new XMLHttpRequest();
    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; 
            //document.body.appendChild(ElementTraitement);
            var Informations = ElementTraitement.getElementsByTagName('span');
            var matchCat = false;
            for(a=0;a<Informations.length;a++){
                var ContenuInformation = Informations[a].innerHTML;
                if((ContenuInformation.indexOf('ns="14"')!=-1)&&(ContenuInformation.indexOf('pageid=')==-1)){
                    matchCat = true;
                }
            }
            if(matchCat==true) $(Liste).addClass("NewPagesDeluxe_Cat");
            $(Liste).removeClass("NewPagesDeluxe_Running");
            NewPagesDeluxe_Category((position+1));
        }
    }
}


// ////////////////////////////////////////////////////////// PAGES SANS INTERWIKI ///////////////////////

function NewPagesDeluxe_Interwiki(position){
    if(!position) position = 0;
    if(position==0) NewPagesDeluxe_Cancel();
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;
    var Liste = Content.getElementsByTagName('li')[position];
    if(!Liste){alert('Tri effectué'); return;}
    $(Liste).addClass("NewPagesDeluxe_Running");
    var PageLink = Liste.getElementsByTagName('a')[0].innerHTML;
    var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=langlinks&lllimit=499&titles=' + PageLink.replace(/&amp;/g,"%26").replace(/&/g,"%26") + '&redirects';
    var NouvelleRequete = new XMLHttpRequest();
    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; 
            //document.body.appendChild(ElementTraitement);
            var Informations = ElementTraitement.getElementsByTagName('span');
            var matchInterwiki = false;
            for(a=0;a<Informations.length;a++){
                var ContenuInformation = Informations[a].innerHTML;
                if(ContenuInformation.indexOf('lang="')!=-1){
                    matchInterwiki = true;
                }
            }
            if(matchInterwiki==true) $(Liste).addClass("NewPagesDeluxe_Interwiki");
            $(Liste).removeClass("NewPagesDeluxe_Running");
            NewPagesDeluxe_Interwiki((position+1));
        }
    }
}


// ////////////////////////////////////////////////////////// PAGES NON WIKIFIÉES ///////////////////////

function NewPagesDeluxe_Wikif(){
    var MaxLinks = prompt('Nombre maximum de liens ?\n(Espace principal)','3');
    if(MaxLinks){
        MaxLinks = parseInt(MaxLinks);
        NewPagesDeluxe_Wikif_Run(0, MaxLinks);
    }
}

function NewPagesDeluxe_Wikif_Run(position, limit){
    if(position==0) NewPagesDeluxe_Cancel();
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;
    var Liste = Content.getElementsByTagName('li')[position];
    if(!Liste){alert('Tri effectué'); return;}
    $(Liste).addClass("NewPagesDeluxe_Running");
    var PageLink = Liste.getElementsByTagName('a')[0].innerHTML;
    var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=links&pllimit='+(limit-1) +'&plnamespace=0&titles=' + PageLink.replace(/&amp;/g,"%26").replace(/&/g,"%26") + '&redirects';
    var NouvelleRequete = new XMLHttpRequest();
    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; 
            //document.body.appendChild(ElementTraitement);
            var Informations = ElementTraitement.getElementsByTagName('span');
            var AutreRequeteNecessaire = false;
            for(var a=0;a<Informations.length;a++){
                var ContenuInformation = Informations[a].innerHTML;
                if(ContenuInformation.indexOf('plcontinue=')!=-1){
                      AutreRequeteNecessaire = true;                    
                }
            }
            if(AutreRequeteNecessaire==true) $(Liste).addClass("NewPagesDeluxe_Wikif");
            $(Liste).removeClass("NewPagesDeluxe_Running");
            NewPagesDeluxe_Wikif_Run((position+1), limit);
        }
    }
}


// ////////////////////////////////////////////////////////// PAGES ORPHELINES ///////////////////////

function NewPagesDeluxe_Orphan(){
    var MaxBackLinks = prompt('Nombre maximum de pages liées ?\n(Espace principal)','3');
    if(MaxBackLinks){
        MaxBackLinks = parseInt(MaxBackLinks);
        NewPagesDeluxe_Orphan_Run(0, MaxBackLinks);
    }

}

function NewPagesDeluxe_Orphan_Run(position, limit){
    if(position==0) NewPagesDeluxe_Cancel();
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;
    var Liste = Content.getElementsByTagName('li')[position];
    if(!Liste){alert('Tri effectué'); return;}
    $(Liste).addClass("NewPagesDeluxe_Running");
    var PageLink = Liste.getElementsByTagName('a')[0].innerHTML;
    var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=backlinks&bllimit='+(limit-1) +'&blnamespace=0&bltitle=' + PageLink.replace(/&amp;/g,"%26").replace(/&/g,"%26") + '&blredirect';
    var NouvelleRequete = new XMLHttpRequest();
    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; 
            //document.body.appendChild(ElementTraitement);
            var Informations = ElementTraitement.getElementsByTagName('span');
            var AutreRequeteNecessaire = false;
            for(var a=0;a<Informations.length;a++){
                var ContenuInformation = Informations[a].innerHTML;
                if(ContenuInformation.indexOf('blcontinue=')!=-1){
                      AutreRequeteNecessaire = true;                    
                }
            }
            if(AutreRequeteNecessaire==true) $(Liste).addClass("NewPagesDeluxe_Orphan");
            $(Liste).removeClass("NewPagesDeluxe_Running");
            NewPagesDeluxe_Orphan_Run((position+1), limit);
        }
    }
}


// ////////////////////////////////////////////////////////// ANNULATION ///////////////////////

function NewPagesDeluxe_Cancel(){
    var Content = document.getElementById('bodyContent');
    if(!Content) Content = document.getElementById('mw_contentholder');
    if(!Content) Content = document.getElementById('article');
    if(!Content) return;
    var Liste = Content.getElementsByTagName('li');
    for(var a=0;a<Liste.length;a++){
        $(Liste[a]).removeClass("NewPagesDeluxe_Portail");
        $(Liste[a]).removeClass("NewPagesDeluxe_Cat");
        $(Liste[a]).removeClass("NewPagesDeluxe_Interwiki");
        $(Liste[a]).removeClass("NewPagesDeluxe_Wikif");
        $(Liste[a]).removeClass("NewPagesDeluxe_Orphan");
    }
}


// ////////////////////////////////////////////////////////// NETTOYAGE REQUÊTES API ///////////////////////

function NewPagesDeluxe_APIClean(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;
}