Utilisateur:Dr Brains/EvalFromCategory.js
Apparence
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§ion=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>