Aller au contenu

Utilisateur:Dr Brains/EvalFromCategory.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.
//<source lang=javascript>//<pre>//<nowiki>

if(typeof(EvalFromCategoryLaunched)==="undefined") window.EvalFromCategoryLaunched = (function(){

window.EvalFromCategory_Text = {
    LinkText       : "Évaluer",
    LinkTitle      : "Évaluer les articles de cette catégorie",
    ErrorNoArticle : "Il n'y a pas d'article dans cette catégorie",
    LoadingEval    : "Chargement de l'évaluation en cours",
}

mw.loader.addStyleTag("" +
  "#TableResults { width:100%;text-align:center;} " +
  "#TableResults tr { margin-left:0.5em;margin-right:0.5em; } " +
  ".topborder { border-top:1px solid silver; } "
);



window.EvalFromCategory_ContentNode = null;
window.EvalFromCategory_APILimit = ( ((mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)) ? 4999 : 499);
window.EvalFromCategory_Category = mw.config.get('wgPageName');
window.EvalFromCategory_ResultIndex = -1;


window.EvalFromCategory_AddLink = function(){
    if(typeof(EvalFromCategory_LangCustom)=="function") EvalFromCategory_LangCustom();
    if(typeof(EvalFromCategory_SiteCustom)=="function") EvalFromCategory_SiteCustom();
    if(typeof(EvalFromCategory_UserCustom)=="function") EvalFromCategory_UserCustom();
    var OngletsCactions = document.getElementById('p-cactions');
    if(OngletsCactions){
        var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
        CactionsUl.innerHTML += '<li>'
                              + '<a title="'+EvalFromCategory_Text.LinkTitle+'" '
                              + ' href="javascript:EvalFromCategory_Init();" '
                              + '>'+EvalFromCategory_Text.LinkText+'</a>'
                              + '</li>';
        $(OngletsCactions).removeClass("emptyPortlet");
    }
}

window.EvalFromCategory_Init = function(){
    window.EvalFromCategory_ContentNode = document.getElementById("mw-content-text");
    if(!window.EvalFromCategory_ContentNode) window.EvalFromCategory_ContentNode = document.getElementById("bodyContent");
    if(!window.EvalFromCategory_ContentNode) window.EvalFromCategory_ContentNode = document.getElementById("article");
    if(!window.EvalFromCategory_ContentNode) window.EvalFromCategory_ContentNode = document.getElementById("mw_contentholder");
    if(!window.EvalFromCategory_ContentNode) window.EvalFromCategory_ContentNode = document.body;
    if(!window.EvalFromCategory_ContentNode) return;
    var OtherContent = document.createElement('div');
    OtherContent.id = "othercontent";
    OtherContent.style.display = "none";
    var GlobalFieldset = document.createElement('fieldset');
    GlobalFieldset.id = "GlobalFieldset";
    var TopMenuForm = document.createElement('form');
    TopMenuForm.id = "TopMenuForm";
    GlobalFieldset.appendChild(TopMenuForm);
    var Table = document.createElement('table');
    Table.id = 'TableResults';
    GlobalFieldset.appendChild(Table);
    EvalFromCategory_ContentNode.insertBefore(GlobalFieldset, EvalFromCategory_ContentNode.firstChild);
    EvalFromCategory_ContentNode.insertBefore(OtherContent, EvalFromCategory_ContentNode.firstChild);
    var OtherNode = GlobalFieldset.nextSibling;
    while(OtherNode){
        OtherNode.parentNode.removeChild(OtherNode);
        OtherContent.appendChild(OtherNode);
        OtherNode = GlobalFieldset.nextSibling;
        if(!OtherNode) break;
    }
    EvalFromCategory_GetPageNames();
}

window.EvalFromCategory_GetPageNames = function(Args){
    if(!Args) Args = {};
    var queryopt = {
        action      : 'query',
        list        : 'categorymembers',
        cmlimit     : EvalFromCategory_APILimit,
        cmtitle     : EvalFromCategory_Category,
        cmtype      : "page",
        cmnamespace : [0,1]
    };
    if(Args.cmcontinue) queryopt.cmcontinue = Args.cmcontinue;
    queryopt.continue = "";
    var api = new mw.Api();
    api.get( queryopt ).then( function ( data ) {
        var categorymembers = data.query.categorymembers;
        if(!categorymembers){
            var TopForm = document.getElementById("TopMenuForm");
            if(TopForm) TopForm.innerHTML = EvalFromCategory_Text.ErrorNoArticle;
            return;
        }
        for(var a=0,l=categorymembers.length;a<l;a++){
            var thispagetitle = categorymembers[a].title.split(mw.config.get('wgFormattedNamespaces')[1]+":").join("");
            EvalFromCategory_CreateResultLine(thispagetitle);
        }
        if(data.continue && data.continue.cmcontinue){
            Args.cmcontinue = data.continue.cmcontinue;
            EvalFromCategory_GetPageNames(Args);
        }
    });
}

window.EvalFromCategory_CreateResultLine = function(pagetitle){
    var Table = document.getElementById('TableResults');
    if(!Table) return;
    var Index = ++EvalFromCategory_ResultIndex;
    if(Table.firstChild && Table.firstChild.tagName.toLowerCase() === "tbody") Table = Table.firstChild;
    var TR = document.createElement('tr');
    TR.id = "Result_"+Index;
    if(Table.getElementsByTagName('tr').length !== 0) $(TR).addClass("topborder");
    var Link = document.createElement('a');
    Link.innerHTML = pagetitle;
    Link.title = pagetitle;
    Link.target = "_blank";
    Link.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join(encodeURIComponent(pagetitle)) + "?redirect=no";
    var LeftTD = document.createElement('td');
    LeftTD.appendChild(Link);
    var RightTD = document.createElement('td');
    var P = document.createElement('p');
    P.innerHTML = EvalFromCategory_Text.LoadingEval;
    RightTD.appendChild(P);
    var IMG = document.createElement('img');
    IMG.width = 32;
    IMG.height = 32;
    IMG.src = "//upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif";
    RightTD.appendChild(IMG);
    TR.appendChild(LeftTD);
    TR.appendChild(RightTD);
    Table.appendChild(TR);
    EvalFromCategory_GetEvalPage(pagetitle, Index);
}


window.EvalFromCategory_GetEvalPage = function(pagetitle, index){
    return;
    var Talkpage = mw.config.get('wgFormattedNamespaces')[1]+":"+pagetitle;
    var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(Talkpage) + "&action=raw&section=0";
    $.ajax({url:URL, complete: function(Req){
        var WikiText = Req.responseText;
        var Template = EvalFromCategory_GetEvalTemplate(WikiText);  // Template can be null if no template found or no talk page
        var Params = EvalFromCategory_GetEvalParams(Template);
        EvalFromCategory_CreateParamTable(Params, pagetitle, index);
    }});
}


window.EvalFromCategory_GetEvalTemplate = function(WikiText){
     var regtxt = /\{\{([wW]ikiprojet)\s*\|[^\}]*\}\}/
     var Template = WikiText.match(regtxt);
     if(Template.length == 1) Template = EvalFromCategory_UpdateWikiprojets(Template);
     return Template;
}

window.EvalFromCategory_UpdateWikiprojets = function(Template){      /* FIXME : see https://fr.wikipedia.org/wiki/Modèle:Wikiprojet */
     var Lines = [];
     Lines.push("{{Wikiprojet");
     for(var a=0,l=Template.length;a<l;a++){
          var Temp = Template[a];
          var Params = Temp.split("|");
          var Theme = Params[0].replace(/\{\{[ ]*(W|w)ikiprojet[ ]+/, "");
          for(var p=1,pl=Params.length;p<pl;p++){
               var pname = Params.split("=")[0];
               var pvalue = Params.split("=")[1];
               var av = "", imp = "";
               if(pname.indexOf("importance")!=-1) imp = EvalFromCategory_cleanImportance(pvalue);
               if(pname.indexOf("avancement")!=-1) av = EvalFromCategory_cleanAvancement(pvalue);
               Lines.push("|"+Theme+"|"+imp+"|avancement "+Theme+"="+av);
          }
     }
     Lines.push("}}");
     return Lines.join("");
}

window.EvalFromCategory_GetEvalParams = function(Template){
   var evaluation_multiprojets = {};
   evaluation_multiprojets.project = [];
   evaluation_multiprojets.importance = [];
   evaluation_multiprojets.avancement = [];
   evaluation_multiprojets.state = [];
   evaluation_multiprojets.avancement_global = "?";
   evaluation_multiprojets.autres = {};

   






}

window.EvalFromCategory_clean = function(val){
   val = val.replace(/^ /g, "");
   val = val.replace(/ $/g, "");
   return val;
}

window.EvalFromCategory_cleanAvancement = function(val){
   val = EvalFromCategory_clean(val);
   if(val=="AdQ") return "AdQ";
   if(val=="BA") return "BA";
   if(val=="A") return "A";
   if(val=="B") return "B";
   if(val=="BD") return "BD";
   if(val=="ébauche" || val=="Ébauche") return "ébauche"; 
   return "?";
}
 
 
window.EvalFromCategory_cleanImportance = function(val){
   val = EvalFromCategory_clean(val);
   if(val.toLowerCase()=="maximum") return "maximum";
   if(val.toLowerCase()=="élevée") return "élevée";
   if(val.toLowerCase()=="moyenne") return "moyenne";
   if(val.toLowerCase()=="faible") return "faible"; 
   return "?";
}

window.EvalFromCategory_CreateParamTable = function(Params, Page, Index, Arrayindex){

}

if(mw.config.get('wgNamespaceNumber')==14) $(EvalFromCategory_AddLink);

return true; })();
//</nowiki></pre></source>