Aller au contenu

MediaWiki:Gadget-ArticlesManquants.js

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 29 novembre 2009 à 15:32 et modifiée en dernier par Dr Brains (discuter | contributions) (Nouvelle page : /* <nowiki> modèle {{m|Articles récents}} Paramètres : {{Articles récents|Portail=|pageportail=|catégorie=| TableauTriable }} * {{{Portail}}} : Nom du portail sans l'espace d...). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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.
/* <nowiki>

modèle {{m|Articles récents}}

Paramètres :
{{Articles récents|Portail=|pageportail=|catégorie=|
TableauTriable
}}

* {{{Portail}}} : Nom du portail sans l'espace de noms, les espaces remplacés par des "underscore"
* {[[pageportail}}} : Titre de la page à mettre à jour
* {{{catégorie}}} : catégorie à checker (  catégorie:Portail:TRUC/Articles/liés )

<div class="categoryRecentChanges" >
<span style="display:none;" class="{{{Portail|}} " title="{{{pageportail|}}}" >{{{catégorie|}}}</span><br/>
<div class="ArticlesRecents" >
{{{articlesRecents|}}}
</div>
<div style="display:none;">
{{{listeComplete|}}}
</div>
</div>
</nowiki>
*/
var PagesInCategoryCount = 0;
var Adresse = wgServer + wgScript + "?title=";

var AnalysisProcessCount = 0;

var AnalysisDivCount = 0;

if( (wgAction!="edit")&&(wgAction!="submit") ){
     addOnloadHook(initCategoryRecentChanges);
}

function initCategoryRecentChanges(){

     var Cadres = document.getElementsByTagName('div');
     for(s=0;s<Cadres.length;s++){
            if( hasClass(Cadres[s], 'categoryRecentChanges') ){          
                  AnalysisDivCount++
                  Cadres[s].id = 'categoryRecentChanges_'+AnalysisDivCount;
                  var NewButton = '<a href="javascript:doRecentChangesAnalisys(\'categoryRecentChanges_'
                  +AnalysisDivCount+ '\');" title="Cliquer pour mettre à jour la liste" >Mettre à jour</a>' ;
                  Cadres[s].innerHTML += NewButton ;
            }
     }
}

// cherche dans le modèle {{m|Articles récents}}

function getOldCategoryRecentChanges(element, numero){
     var Listes = element.getElementsByTagName('ul')[numero];
     if(Listes)return Listes.getElementsByTagName('a'); 
     else return false;
}

// Fonction ajax : fait une requête au serveur et met la réponse dans un élément donné

function getAjaxPageContent(href, element){
    if((!href)||(!element)) return;
    var ajaxRequest = sajax_init_object();
    if (!ajaxRequest){
         alert('Méthode ajax non supportée : sajax_init_object()');
         return;
    }else{
         url = decodeURIComponent(href).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'");
         ajaxRequest.open("GET", url, true);
         ajaxRequest.send(null);
         ajaxRequest.onreadystatechange = function() {
             if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                  var ajaxResponse;    
                  ajaxResponse = ajaxRequest.responseText;
                  element.innerHTML = ajaxResponse;
             }
         }
    } 
}

// * Recherche d'un élement dont on connait l'Id (non unique, donc sans utiliser getElementById() ) *
 
function getElementWithId( elementParentNode , elementTagName , elementId ){
 
      var TheElement = false;
      var Elements = elementParentNode.getElementsByTagName(elementTagName);
      var elementcount = 0;
      while(elementcount<Elements.length){
            var Id = Elements[elementcount].id;
            if(Id){
                  if(Id.indexOf(elementId)!=-1){
                        TheElement = Elements[elementcount];
                  }
            }
            elementcount++
      }
      return TheElement;
}

function doRecentChangesAnalisys(id){
        if(!id) return;

        var Cadre = document.getElementById(id);
        var Bouton = Cadre.firstChild;           
        var Categorie = Bouton.innerHTML;
        var PagePortail = Bouton.title;
        var Portail = "Portail:" + Bouton.className.replace(/_/g," "); 

        var Suretcertain = confirm('Catégorie : ' + Categorie 
                               + '\nPage à mettre à jour : ' + PagePortail 
                               + '\nPortail de référence : ' + Portail );
        if(!Suretcertain) return;

        var TableauDeBord = document.createElement('table');
        TableauDeBord.id = 'Tableau_de_bord';
        TableauDeBord.innerHTML = '<tr>'
                                + '<td id="Page_cible" valign="top" style="height:600px;width:500px;" >'
                                + '</td>'
                                + '<td valign="top" style="height:600px;width:250px;">'
                                + '<ul id="Liste_Articles">'
                                + '</ul>'
                                + '</td>'
                                + '</tr>';
        document.body.appendChild(TableauDeBord);

        TableauDeBord.style.position = 'absolute';
        TableauDeBord.style.zIndex = '150';
        TableauDeBord.style.top = '50px';
        TableauDeBord.style.left = '150px';
        TableauDeBord.style.opacity = '0.9';
        var PageCible = document.getElementById("Page_cible");
        var ListeArticles = document.getElementById("Liste_Articles");
        if( (!PageCible)||(!ListeArticles) ){
                alert('pas OK');
        }else{
                //alert('OK');
                doCategoryRecentChangesAnalisys(Adresse + encodeURIComponent(Categorie) + '&action=render',PageCible,ListeArticles, PagePortail, Portail, Categorie);
        }

}

// Fonction d'analyse de la catégorie : requête ajax, recopie des liens dans une colonne du tableau de bord, renouvellement si il y a d'autres pages puis lancement de la fonction analyse d'historique

function doCategoryRecentChangesAnalisys(Cible,PageCible,ListeArticles, PagePortail, Portail, Categorie){
        var AutrePage=false;
        var AutrePageAdresse ='';
        PageCible.innerHTML = '';
        var ajaxRequest = sajax_init_object();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : sajax_init_object()');
                return;
        }else{

                var url = decodeURIComponent(Cible).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'") ;
                //alert(url);
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                PageCible.innerHTML = ajaxResponse;

                                // Analyse du contenu
//alert('OK');
                                var ContenuCategorie = getElementWithId(PageCible, 'div', 'mw-pages');
                                if(!ContenuCategorie) alert('Pas trouvé \"mw-pages\"');
                                var LiensCategorie = ContenuCategorie.getElementsByTagName('li');
                                if(!LiensCategorie) alert('pas de li');
                                for(a=0;a<LiensCategorie.length;a++){
                                        PageCibleCategory = LiensCategorie[a].innerHTML;
                                        ListeArticles.innerHTML += '<li>' + PageCibleCategory + '</li>';
                                        PagesInCategoryCount++
                                        //alert(PageCibleCategory);
                                }

                                // Recherche si c'est la dernière page ou si il y en a d'autres

                                var TousLiens = PageCible.getElementsByTagName('a');
                                var length = TousLiens.length;
                                var dernierLien = TousLiens[(length-1)].href;
                                //alert(dernierLien);
                                if(dernierLien.indexOf("&from=")!=-1){
                                        AutrePage = true;
                                        AutrePageAdresse = dernierLien + '&action=render';
                                }
                                if(AutrePage==true){
                                        doCategoryRecentChangesAnalisys(AutrePageAdresse,PageCible,ListeArticles, PagePortail, Portail, Categorie)
                                }else{

                                        //alert('Analyse de l\'historique de chaque page');
                                        initHistoryRecentChangesAnalisys( 0, PageCible,ListeArticles, PagePortail, Portail, Categorie)
                                }
                        }
                }
        } 
}

function initHistoryRecentChangesAnalisys(Position,PageCible,ListeArticles, PagePortail, Portail, Categorie){

        var Lien = ListeArticles.getElementsByTagName('a')[Position];
        if(!Lien) {
                //alert('Analyse de la présence du bandeau dans chaque version'); 
                initDiffRecentChangesAnalisys(0,0,PageCible,ListeArticles, PagePortail, Portail, Categorie); 
        }
        LiParent = Lien.parentNode;
        TitrePage = Lien.innerHTML.replace(/&amp;/, "&"); 
        //alert(TitrePage); 

        trouveVersion = false;
        AutrePage=false;
        AutrePageAdresse ='';
        PageCible.innerHTML = '';
        var ajaxRequest = sajax_init_object();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : sajax_init_object()');
                return;
        }else{
                var url = Adresse + decodeURIComponent(TitrePage).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26") + '&action=history&limit=5000'; // voyons large...
                //alert(url);
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { 

                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                PageCible.innerHTML = ajaxResponse;

                                //alert('Analyse du contenu de l\'historique : ' + TitrePage);

                                var ContenuHistorique = getElementWithId(PageCible, 'ul', 'pagehistory');
                                if(!ContenuHistorique) alert('Pas trouvé \"pagehistory\"');
                                var LiensHistorique = ContenuHistorique.getElementsByTagName('li');
                                for(li=0;li<LiensHistorique.length;li++){
                                        FirstLink = LiensHistorique[li].getElementsByTagName('a')[0];
                                        SecondLink = LiensHistorique[li].getElementsByTagName('a')[1];
                                        if(FirstLink.innerHTML=="actu") Version = 2;
                                        if(FirstLink.innerHTML=="diff") Version = 1;
                                        if( (FirstLink.innerHTML=="actu")&&(SecondLink.innerHTML!="diff") ) Version = 1;
                                        if( (FirstLink.innerHTML!="actu")&&(FirstLink.innerHTML!="diff") ) Version = 0;

                                        VersionLink =  LiensHistorique[li].getElementsByTagName('a')[Version];
                                        VersionLinkHref = decodeURIComponent(VersionLink.href); 
                                        VersionLinkTitle = VersionLink.title; 
                                        VersionOldid = VersionLinkHref.replace(/&oldid/, "OLDID");
                                        VersionLinkHTML = VersionLink.innerHTML;
                                        //alert(VersionLinkHref + ' - ' + VersionLinkHTML);
                                        LiParent.innerHTML =  LiParent.innerHTML + '<br/><span title="'+VersionOldid+'">' + VersionLinkHTML + '</span>';
                                }
                                //initDiffRecentChangesAnalisys(0,0,PageCible,ListeArticles, PagePortail, Portail, Categorie);
                                initHistoryRecentChangesAnalisys((Position+1),PageCible,ListeArticles, PagePortail, Portail, Categorie);
                        }
                }
        } 
}


function initDiffRecentChangesAnalisys(PositionLi,PositionSpan,PageCible,ListeArticles, PagePortail, Portail, Categorie){
        
        var Page = ListeArticles.getElementsByTagName('li')[PositionLi];
        if(!Page) {
                //alert('Mise en page des résultats'); 
                initCheckAnalisys(PageCible,ListeArticles, PagePortail, Portail, Categorie);
        } 
        var Version = Page.getElementsByTagName('span')[PositionSpan];
        if(!Version) initDiffRecentChangesAnalisys((PositionLi+1),0,PageCible,ListeArticles, PagePortail, Portail, Categorie); 
        var Oldid = Version.title;
        PageCible.innerHTML = '';
        var ajaxRequest = sajax_init_object();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : sajax_init_object()');
                return;
        }else{
                url = decodeURIComponent(Oldid).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26").replace(/OLDID/g,"&oldid") + '&action=render';
                //alert(url);
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                PageCible.innerHTML = ajaxResponse;

                                OKBandeau = 'red';
                                var Bandeaux = PageCible.getElementsByTagName('span');
                                for(b=0;b<Bandeaux.length;b++){
                                        if( hasClass(Bandeaux[b], "bandeau-portail-texte") ){
                                                if(Bandeaux[b].getElementsByTagName('a')[0].title.indexOf(Portail)!=-1){
                                                        OKBandeau = 'green';
                                                }
                                        }
                                }
                                Version.style.color = OKBandeau;
                                Version.className = OKBandeau;
                                initDiffRecentChangesAnalisys(PositionLi,(PositionSpan+1),PageCible,ListeArticles, PagePortail, Portail, Categorie);
                        }
                }
        } 
}

var checkedPageTitle = new Array();
var checkedPageDate = new Array();
var checkedPageCrea = new Array();

function initCheckAnalisys(PageCible,ListeArticles, PagePortail, Portail, Categorie){ 


        var checkedPage = 0;
        PageCible.innerHTML='';
        var Label = document.createElement('ul');
        PageCible.appendChild(Label);
        var Pages = ListeArticles.getElementsByTagName('li');
        for(a=0;a<Pages.length;a++){
                var Page = Pages[a].firstChild.innerHTML;
                var PageHref = Pages[a].firstChild.href;
                var Versions = Pages[a].lastChild;
                var Creation = Versions.innerHTML
                checkedPageCrea[checkedPage] = Creation;
                while(Versions.className.indexOf("green")==-1){
                        Versions = Versions.previousSibling;
                }
                Date = Versions.innerHTML;

                checkedPageTitle[checkedPage] = Page;
                checkedPageDate[checkedPage] = Date;
                Label.innerHTML += '<li ><a href="'+PageHref+'" >'+Page+'</a> - <span>'+Date+'</span></li>';
                Pages[a].style.display = 'none';
                checkedPage++
        }
        initEditTableau(PageCible,ListeArticles, PagePortail, Portail, Categorie);
}


function  initEditTableau(PageCible,ListeArticles, PagePortail, Portail, Categorie){
        

        ListeArticles.innerHTML = '';
        var ajaxRequest = sajax_init_object();
        if (!ajaxRequest){
                alert('Méthode ajax non supportée : sajax_init_object()');
                return;
        }else{
                url = Adresse + decodeURIComponent(PagePortail).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26") + '&action=edit';
                //alert(url);
                ajaxRequest.open("GET", url, true);
                ajaxRequest.send(null);
                ajaxRequest.onreadystatechange = function() {
                        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                                var ajaxResponse;    
                                ajaxResponse = ajaxRequest.responseText;
                                ListeArticles.innerHTML = ajaxResponse;

                                Portail = Portail.replace(/Portail:/, "").replace(/ /g, "_");

                                var DebutModele = '<!-- Ce modèle est apposé automatiquement par un robot. DEBUT -->\n'
                                                + '{{Articles récents|Portail='+Portail+'|pageportail='+PagePortail+'|catégorie='+Categorie+'|\n';
                                var TableauTriable = '{| class="wikitable sortable"\n'
                                                   + '!Page\n'
                                                   + '!Date de création\n'
                                                   + '!Date d\'apposition du bandeau\n'

                                for(a=0;a<checkedPageDate.length;a++){
                                        TableauTriable += '|-\n';
                                        TableauTriable += '|[[' + checkedPageTitle[a] + ']]\n'
                                        TableauTriable += '|' + checkedPageCrea[a] + '\n'
                                        TableauTriable += '|' + checkedPageDate[a] + '\n'
                                }
                                TableauTriable +='|}\n';
                                var FinModele = '}}<!-- Ce modèle est apposé automatiquement par un robot. FIN -->\n';

                                var Modele = DebutModele+TableauTriable+FinModele;

                                var ContenuPage = document.getElementById("wpTextbox1").value;
                                if(ContenuPage.indexOf("{{Articles récents")!=-1){         // ------------------------------------------------ Déja le modèle : remplacement
                                        var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf("FIN -->\n"));
                                        var finTexte = ContenuPage.split(debutTexte).join('');
                                        var avantModele = debutTexte.substring(0, ContenuPage.indexOf("DEBUT -->\n"));
                                        avantModele = avantModele.split("<!-- Ce modèle est apposé automatiquement par un robot. DEBUT -->\n").join('');
                                        var TexteFinal = avantModele + Modele + finTexte;
                                }else{         // ------------------------------------------------Déja le modèle : ajout
                                        var TexteFinal = Modele + ContenuPage;
                                }
                                document.getElementById ("wpTextbox1").value = TexteFinal ;
                                document.editform.wpSummary.value = document.editform.wpSummary.value + 'Mise à jour modèle {{Articles récents}}' ;
                                var SurEtCertain = confirm('Sauvegarder la modification ?');
                                if(SurEtCertain) document.editform.submit();
                        }
                }
        }
}