Utilisateur:Dr Brains/CheckEvalInCat.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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.var CheckEvalInCat = new Object();
CheckEvalInCat.Textes = new Object();
CheckEvalInCat.Params = new Object();
CheckEvalInCat.Variables = new Object();
CheckEvalInCat.Fonctions = new Object();
////////////////////////////// DEBUT DE LA PARTIE PERSONNALISABLE ////////////////////////////
CheckEvalInCat.Textes.LinkTitle = "Voir les évaluations";
CheckEvalInCat.Textes.LinkText = "Évaluation";
CheckEvalInCat.Textes.PanelLinkTitle = "Voir l’évaluation";
CheckEvalInCat.Textes.PanelLinkText = "éval";
CheckEvalInCat.Textes.AllEvalButtonText = "Évaluations";
CheckEvalInCat.Textes.AllEvalButtonTitle = "Voir toutes les évaluations";
CheckEvalInCat.Textes.CloseButtonText = "Fermer";
CheckEvalInCat.Textes.CloseButtonTitle = "Fermer la fenêtre";
/////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE /////////////////////////////
CheckEvalInCat.Variables.PageList = new Array();
CheckEvalInCat.Variables.APILimit = ((mw.config.get('wgUserGroups').indexOf("sysop")!=-1||mw.config.get('wgUserGroups').indexOf("bot")!=-1) ? 4999 : 499 );
// Ajout d'un lien dans la boîte à outils
CheckEvalInCat.Fonctions.Link = function(){
if(typeof(CheckEvalInCat.Fonctions.LangCustom)=="function") CheckEvalInCat.Fonctions.LangCustom();
if(typeof(CheckEvalInCat.Fonctions.SiteCustom)=="function") CheckEvalInCat.Fonctions.SiteCustom();
if(typeof(CheckEvalInCat.Fonctions.UserCustom)=="function") CheckEvalInCat.Fonctions.UserCustom();
var ToolBoxes = getElementsByClassName(document, "span", "CategoryTools");
for(var a=0,l=ToolBoxes.length;a<l;a++){
ToolBoxes[a].innerHTML += ' • <a href="javascript:CheckEvalInCat.Fonctions.ListPages();" title="'+CheckEvalInCat.Textes.LinkTitle+'">'+CheckEvalInCat.Textes.LinkText+'</a>';
}
}
CheckEvalInCat.Fonctions.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); }else{ };}}; 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;}
CheckEvalInCat.Fonctions.ListPages = function(CatArray, category, categorycontinue){
if(!CatArray) CatArray = new Array();
if(!category) category = mw.config.get('wgPageName');
if(!categorycontinue) categorycontinue = '';
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=categorymembers'
+ '&cmlimit=' + CheckEvalInCat.Variables.APILimit
+ '&cmtitle=' + encodeURIComponent(category)
+ categorycontinue;
CheckEvalInCat.Fonctions.Ajax({
url: URL,
cat: category,
catlist: CatArray,
onSuccess:CheckEvalInCat.Fonctions.ListPagesDone
});
}
CheckEvalInCat.Fonctions.ListPagesDone = function(req, data){
var CatArray = data.catlist;
var category = data.cat;
var ElementTraitement = req.responseXML;
var Pages = ElementTraitement.getElementsByTagName('cm');
for(a=0;a<Pages.length;a++){
var TitrePage = Pages[a].getAttribute('title');
if(CatArray.indexOf(TitrePage)==-1) CatArray.push(TitrePage);
}
var CatContinue = ElementTraitement.getElementsByTagName('query-continue')[0];
if(CatContinue){
var AutreRequeteContinue = '&cmcontinue=' + encodeURIComponent(CatContinue.firstChild.getAttribute("cmcontinue"));
CheckEvalInCat.Fonctions.ListPages(CatArray, category, AutreRequeteContinue);
}else{
if(CatArray.length>0) CheckEvalInCat.Fonctions.CreatePanel(CatArray);
else alert("Pas de page");
}
}
CheckEvalInCat.Fonctions.ClosePanel = function(){
var Div = document.createElementById("CheckEvalInCat_Div");
if(Div) Div.parentNode.removeChild(Div);
}
CheckEvalInCat.Fonctions.CreatePanel = function(CatArray){
CheckEvalInCat.Variables.PageList = CatArray;
var Div = document.createElement('div');
Div.id = "CheckEvalInCat_Div";
Div.setAttribute("style", "position:fixed;left:0;right:0;width:100%;height:100%;overflow:auto;-moz-column-count:3;-webkit-column-count:3;column-count:3;text-align:left;font-size:13px;");
document.body.appendChild(Div);
var Buttons = document.createElement('p');
Div.appendChild(Buttons);
ButtonText = ''
+ '<center>'
+ '<input type="button" style="cursor:pointer;" '
+ ' value="'+CheckEvalInCat.Textes.AllEvalButtonText+'" title="'+CheckEvalInCat.Textes.AllEvalButtonTitle+'" '
+ ' onclick="CheckEvalInCat.Fonctions.getEval(0, true);" onselect="CheckEvalInCat.Fonctions.getEval(0, true);"/>'
+ ' '
+ '<input type="button" style="cursor:pointer;" '
+ ' value="'+CheckEvalInCat.Textes.CloseButtonText+'" title="'+CheckEvalInCat.Textes.CloseButtonTitle+'" '
+ ' onclick="CheckEvalInCat.Fonctions.ClosePanel();" onselect="CheckEvalInCat.Fonctions.ClosePanel();"/>'
+ '</center>';
Buttons.innerHTML = ButtonText;
var Ul = document.createElement('ul');
Div.appendChild(Ul);
for(var index=0,l=CatArray.length;index<l;index++){
var Page = CatArray[index];
var Li = document.createElement('li');
Li.id = "CheckEvalInCat_Li_"+index;
Ul.appendChild(Li);
var Text = '<a href="'+mw.config.get('wgArticlePath').split("$1").join(encodeURIComponent(Page))+'" title="'+Page+'">'+Page+'</a> <small id="CheckEvalInCat_Small_'+index+'"><a href="javascript:CheckEvalInCat.Fonctions.getEval('+index+')" title="'+CheckEvalInCat.Textes.PanelLinkTitle+'">'+CheckEvalInCat.Textes.PanelLinkText+'</a></small>'
Li.innerHTML = Text;
}
}
CheckEvalInCat.Fonctions.getEval = function(position, getAll){
}
if(mw.config.get('wgNamespaceNumber')==14) addOnloadHook(CheckEvalInCat.Fonctions.Link);