User:OldBee/MassEval.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
//<source lang=javascript>
if(typeof(window.PortalEval_Portals)==="undefined")
window.PortalEval_DefaultPortal = "Colombie";
window.PortalEval = {
texts : {
"LinkText" : "Évaluer",
"LinkTitle" : "Évaluer les articles de cette catégorie",
"Portal" : "Thème à évaluer",
"EvalResume" : "[[m:User:OldBee/PortalEval.js|Mise à jour de l'évaluation]]",
"GoListText" : "Vérifier l'évaluation",
"GoListTitle" : "Vérifier l'évaluation des pages de cette catégorie",
"GoSortText" : "Trier",
"GoSortTitle" : "Trier les pages de la liste",
"SortTitle" : "Pages",
"SortTitleTip" : "Tri alphabétique selon le titre de la page",
"SortEval" : "Évaluation",
"SortEvalTip" : "Tri selon le statut d'évaluation",
"SortStub" : "Ébauches",
"SortStubTip" : "Tri selon le statut d'ébauche",
"SortAVT" : "Avancement",
"SortAVTTip" : "Tri selon l'avancement",
"SortIMP" : "Importance",
"SortIMPTip" : "Tri selon l'importance dans le thème sélectionné",
"GoChangeLabel" : "Changements",
"GoChangeText" : "Valider",
"GoChangeTitle" : "Valider les changements d'évaluation des pages de cette catégorie",
"GoCancelText" : "Annuler",
"GoCancelTitle" : "Annuler les changements d'évaluation des pages de cette catégorie",
"GoCloseTitle" : "Fermer",
"TalkText" : "D",
"PreviewText" : "$1 (preview)",
"PreviewDown" : "Agrandir la prévisualisation",
"PreviewUp" : "Rétrécir la prévisualisation",
"PreviewClose" : "Fermer la prévisualisation",
"GoChangeOneText" : "Valider",
"GoChangeOneTitle" : "Valider les changements d'évaluation de cette page",
"GoCancelOneText" : "Annuler",
"GoCancelOneTitle" : "Annuler les changements d'évaluation de cette page",
"DeleteIMPText" : "(-)",
"DeleteIMPTitle" : "Supprimer cette évaluation d'importance",
"AddIMPText" : "(+)",
"AddIMPTitle" : "Ajouter une évaluation d'importance",
"THtexts" : ["Page", "Ébauche ?", "Évaluée ?", "Avancement", "Importances", "Actions"],
},
params : {
"THwidths" : ["", "75px", "75px", "150px", "250px", "100px" ],
"PreviewHeight" : 200,
"PreviewHeightStep" : 20,
"StubTemplate" : "Ébauche",
"EvalTemplate" : "Wikiprojet",
"EvalCategory" : "Wikiprojet",
"EvalCatPrefixes" : ["Wikiprojet ", "Wikiprojet:"],
"ImageURL" : "//upload.wikimedia.org/wikipedia/commons/",
"YesSymbol" : "thumb/f/fb/Yes_check.svg/16px-Yes_check.svg.png",
"NoSymbol" : "thumb/1/1d/Arbcom_ru_declined.svg/16px-Arbcom_ru_declined.svg.png",
"CloseIcon" : "thumb/8/80/Icon_no.svg/24px-Icon_no.svg.png",
"DownIcon" : "thumb/f/f3/HSR_1996_II_3.4f.svg/16px-HSR_1996_II_3.4f.svg.png",
"UpIcon" : "thumb/1/1a/HSR_1996_II_3.4i.svg/16px-HSR_1996_II_3.4i.svg.png",
"RunningIcon" : "a/a7/HAPPI_Loading.gif",
"LinkPortletID" : "p-cactions",
"ManuPortals" : ["GNU/Linux"],
"Importance" : [
{ wiki : "maximum", text : "Maximum", color : "#FF00FF" },
{ wiki : "élevée", text : "Élevée", color : "#FF88FF" },
{ wiki : "moyenne", text : "Moyenne", color : "#FFCCFF" },
{ wiki : "faible", text : "Faible", color : "#FFEEFF" },
{ wiki : "?", text : "Inconnue", color : "#666666", textcolor:"white" }
],
"Avancement" : [
{ wiki : "AdQ", text : "Article de qualité", color : "#6699FF" },
{ wiki : "BA", text : "Bon article", color : "#66FF66" },
{ wiki : "A", text : "Avancé", color : "#66FFFF" },
{ wiki : "B", text : "Bien", color : "#FFFF66" },
{ wiki : "BD", text : "Bon début", color : "#FFAA66" },
{ wiki : "ébauche", text : "Ébauche", color : "#FF6666" },
{ wiki : "?", text : "Inconnu", color : "#666666", textcolor:"white" }
],
"AllPortals" : [],
"PageList" : [],
"Namespaces" : mw.config.get("wgFormattedNamespaces"),
"APILimit" : ((mw.config.get("wgUserGroups").indexOf("bot")!==-1 || mw.config.get("wgUserGroups").indexOf("syspo")!==-1) ? 4999 : 499),
},
functions : {
ucFirst : function(text){
return text.substr(0,1).toUpperCase() + text.substr(1,text.length);
},
lcFirst : function(text){
return text.substr(0,1).toLowerCase() + text.substr(1,text.length);
},
getTalkPage : function(page){
return PortalEval.params.Namespaces[(PortalEval.functions.getNamespaceInfoFromPage(page)+1)]+":"+page;
},
getMainPage : function(page){
var NS = PortalEval.functions.getNamespaceInfoFromPage(page);
if(NS % 2 == 0) return page;
else return (NS==1 ? "" : PortalEval.params.Namespaces[(NS-1)]+":")+PortalEval.functions.getNamespaceInfoFromPage(page, "PageName");
},
getNamespaceInfoFromPage : function(Page, ToReturn){
if(!ToReturn || !Page) ToReturn = false;
var NamespaceNumber = 0;
var NamespaceName = "";
var PageName = Page;
var Found = false;
var AllNS = PortalEval.params.Namespaces;
for(var NS in AllNS ){
if(Found) continue;
var ThisNamespaceName = AllNS[NS];
if(ThisNamespaceName==="") continue;
var NamespaceNameRegExp = new RegExp("^"+ThisNamespaceName+":", "ig");
var Matches = Page.match(NamespaceNameRegExp);
if(Matches!=null && Matches.length == 1){
NamespaceNumber = parseInt(NS);
NamespaceName = ThisNamespaceName;
PageName = Page.replace(NamespaceNameRegExp, "");
Found = true;
continue;
}
}
if(ToReturn==="NamespaceName") return NamespaceName;
if(ToReturn==="PageName") return PageName;
return NamespaceNumber;
},
getPages : function(portal, queryopt){
if(!queryopt){
PortalEval.functions.alertControl("Getting Category Members", true);
PortalEval.params.PageList = [];
queryopt = {
action : 'query',
list : 'categorymembers',
cmlimit : PortalEval.params.APILimit,
cmtitle : mw.config.get("wgPageName"),
cmtype : 'page'
};
}
var api = new mw.Api();
api.get(queryopt).then(function(data){
if(data.query.categorymembers){
for(var a=0,l=data.query.categorymembers.length;a<l;a++){
var page = data.query.categorymembers[a];
var title = PortalEval.functions.getMainPage(page.title);
PortalEval.params.PageList.push({
"title" : title,
"talktitle" : PortalEval.functions.getTalkPage(title),
});
PortalEval.functions.alertControl("Getting Category Members : "+title, true);
}
}
if(data.continue && data.continue.cmcontinue){
queryopt.cmcontinue = data.continue.cmcontinue;
PortalEval.functions.getPages(portal, queryopt);
}else{
PortalEval.functions.getPageEval(portal);
}
});
},
getPageEval : function(portal, index){
if(!index) index = 0;
var page = PortalEval.params.PageList[index];
if(!page){
PortalEval.functions.alertControl();
PortalEval.functions.sortPagesGo.SortTitle(portal, true);
return;
}
PortalEval.functions.alertControl("Getting Eval : "+page.title, true);
PortalEval.functions.getPageStub(portal, index, function(portal, index, queryopt){
var page = PortalEval.params.PageList[index];
var title = page.title;
var talktitle = page.talktitle;
if(!queryopt){
queryopt = {
action : 'query',
prop : 'templates',
tllimit : PortalEval.params.APILimit,
titles : talktitle,
tltemplates : mw.config.get("wgFormattedNamespaces")[10]+":"+PortalEval.params.EvalTemplate,
};
}
var api = new mw.Api();
api.get(queryopt).then(function(data){
if(data.query.pages){
for(var id in data.query.pages){
var templates = data.query.pages[id].templates;
if(templates){
for(var a=0,l=templates.length;a<l;a++){
var template = templates[a].title;
if(template.indexOf(":"+PortalEval.params.EvalTemplate)===-1) continue;
PortalEval.params.PageList[index]["eval"] = 1;
}
}else{
var missing = (id == -1);
if(missing) PortalEval.params.PageList[index]["talkmissing"] = 1;
}
}
}
if(PortalEval.params.PageList[index]["eval"] == 1){
var URL = mw.config.get('wgServer')+mw.config.get('wgScript')+ "?title="+encodeURIComponent(talktitle)+"&action=raw";
$.ajax({url:URL, complete: function(Req){
PortalEval.functions.getEvalParams(Req.responseText, index, portal);
PortalEval.functions.fillBoardLine(index, portal);
PortalEval.functions.getPageEval(portal, (index+1));
}});
}else{
PortalEval.functions.fillBoardLine(index, portal);
PortalEval.functions.getPageEval(portal, (index+1));
}
});
});
},
getPageStub : function(portal, index, callback, queryopt){
var page = PortalEval.params.PageList[index];
var title = page.title;
if(!queryopt){
queryopt = {
action : 'query',
prop : 'templates',
tllimit : PortalEval.params.APILimit,
titles : title,
tltemplates : mw.config.get("wgFormattedNamespaces")[10]+":"+PortalEval.params.StubTemplate,
};
}
var api = new mw.Api();
api.get(queryopt).then(function(data){
if(data.query.pages){
for(var id in data.query.pages){
var templates = data.query.pages[id].templates;
if(templates){
for(var a=0,l=templates.length;a<l;a++){
var template = templates[a].title;
if(template.indexOf(":"+PortalEval.params.StubTemplate)===-1) continue;
PortalEval.params.PageList[index]["stub"] = 1;
return callback(portal, index);
}
}
}
}
if(data.continue && data.continue.tlcontinue){
queryopt.tlcontinue = data.continue.tlcontinue;
PortalEval.functions.getPageStub(portal, index, callback, queryopt);
}else{
return callback(portal, index);
}
});
},
getEvalParams : function(WikiText, index, portal){
var Reg = new RegExp("\\{\\{ *"+PortalEval.params.EvalTemplate+"[^\\{]*\\}\\}", "ig");
var matches = WikiText.match(Reg);
var Wikitext = "";
if(matches != null){
for(var a=0,l=matches.length;a<l;a++){
var thismatch = matches[a];
Wikitext += thismatch;
thismatch = thismatch.split("\n").join("");
thismatch = thismatch.split("{{").join("");
thismatch = thismatch.split("}}").join("");
thismatch = thismatch.split("||").join("|?|");
var implicitparams = [];
thismatch = thismatch.split("|");
for(var av=0,avlen=thismatch.length;av<avlen;av++){
var thisparam = thismatch[av];
if(thisparam === "") thisparam = "?";
thisparam = thisparam.replace(/^[ ]*/g, "");
thisparam = thisparam.replace(/[ ]*$/g, "");
if(thisparam.indexOf("=") == -1) implicitparams.push(thisparam);
if(thisparam.indexOf("avancement")!=-1){
var AVT = thisparam.replace(/.*=[ ]*/g, "").replace(/\\n/g, "").replace(/\W/g, "");
for(var avt=0,avtlen=PortalEval.params.Avancement.length;avt<avtlen;avt++){
var thisavt = PortalEval.params.Avancement[avt];
if(AVT == thisavt.wiki.replace(/\W/g, "")) PortalEval.params.PageList[index].evalAVT = avt;
}
}
}
for(var p=0,plen=implicitparams.length;p<plen;p++){
var thisimplicitparam = implicitparams[p];
for(var imp=0,implen=PortalEval.params.Importance.length;imp<implen;imp++){
var thisimp = PortalEval.params.Importance[imp];
if(thisimplicitparam.replace(/\W/g, "") == thisimp.wiki.replace(/\W/g, "")){
if(implicitparams[(p-1)].toLowerCase() == portal.toLowerCase()){
PortalEval.params.PageList[index].evalIMP = imp;
}
if(!PortalEval.params.PageList[index].allIMP) PortalEval.params.PageList[index].allIMP = {};
PortalEval.params.PageList[index].allIMP[implicitparams[(p-1)]] = imp;
}
}
}
}
}
PortalEval.params.PageList[index].evalWT = Wikitext;
},
getPortals : function(queryopt){
if(!queryopt){
PortalEval.functions.alertControl("Listage des thèmes", true);
queryopt = {
action : 'query',
list : 'categorymembers',
cmlimit : PortalEval.params.APILimit,
cmtitle : mw.config.get("wgFormattedNamespaces")[14]+":"+PortalEval.params.EvalCategory,
cmtype : 'subcat'
};
}
var api = new mw.Api();
api.get(queryopt).then(function(data){
if(data.query.categorymembers){
for(var a=0,l=data.query.categorymembers.length;a<l;a++){
var page = data.query.categorymembers[a];
var title = page.title
for(var p=0,plen=PortalEval.params.EvalCatPrefixes.length;p<plen;p++){
var EvalCatPrefix = PortalEval.params.EvalCatPrefixes[p];
title = title.split(mw.config.get("wgFormattedNamespaces")[14]+":"+EvalCatPrefix).join("");
}
title = PortalEval.functions.ucFirst(title);
if(title.indexOf("/")!==-1 && PortalEval.params.ManuPortals.indexOf(title) === -1) continue;
if(PortalEval.params.AllPortals.indexOf(title)!==-1) continue;
PortalEval.params.AllPortals.push(title);
PortalEval.functions.alertControl("Listage des thèmes : "+title, true);
}
}
if(data.continue && data.continue.cmcontinue){
queryopt.cmcontinue = data.continue.cmcontinue;
PortalEval.functions.getPortals(queryopt);
}else{
PortalEval.params.AllPortals.sort();
var PortalSelect = document.getElementById("PortalEval_OptionPortal");
if(PortalSelect) PortalEval.functions.createThemeSelect(PortalSelect, PortalEval_DefaultPortal);
PortalEval.functions.alertControl();
}
});
},
createThemeSelect : function(Select, defaultoption){
if(!Select){
Select = document.createElement('select');
Select.style.width = "150px";
}else{
while(Select.firstChild) Select.removeChild(Select.firstChild);
}
for(var a=0,l=PortalEval.params.AllPortals.length;a<l;a++){
var title = PortalEval.params.AllPortals[a];
var opt = document.createElement('option');
opt.innerHTML = title;
opt.value = title;
if(typeof(defaultoption)!=="undefined" && title == defaultoption) opt.selected = "selected";
Select.appendChild(opt);
}
return Select;
},
createLink : function(page, options){
var link = document.createElement("a");
link.href = mw.config.get("wgServer")+mw.config.get("wgArticlePath").split("$1").join(page);
link.title = (options && options.title ? options.title : page );
link.innerHTML = (options && options.text ? options.text : page );
if(options && options.class) link.className = options.class;
if(options && typeof(options.preview)=="number"){
link.title = PortalEval.texts.PreviewText.split("$1").join(link.title);
link.onclick = function(){ PortalEval.functions.previewPage(page, options.preview); return false; }
}
return link;
},
createBoard : function(){
var board = document.getElementById("PortalEvalBoard");
if(board) return;
var globalWrapper = document.getElementById("globalWrapper");
if(globalWrapper) globalWrapper.style.display = "none";
board = document.createElement("div");
board.id = "PortalEvalBoard";
document.body.appendChild(board);
var boardHead = document.createElement("div");
boardHead.id = "PortalEvalBoardHead";
var HeadTable = document.createElement("table");
HeadTable.width = "100%";
var HeadTR = document.createElement("tr");
var TDControl = document.createElement("td");
TDControl.id = "PortalEvalBoardControl";
TDControl.width = "10%";
var TDMainHead = document.createElement("td");
TDMainHead.style.textAlign = "center";
var OptionForm = document.createElement("form");
OptionForm.onsubmit = function(){ return false; };
OptionForm.id = "PortalEvalBoardOptions";
var PortalLabel = document.createElement('label');
PortalLabel.setAttribute("for", "Portal");
PortalLabel.innerHTML = PortalEval.texts.Portal
OptionForm.appendChild(PortalLabel);
OptionForm.appendChild(document.createTextNode(" : "));
var PortalSelect = document.createElement('select');
PortalSelect.id = "PortalEval_OptionPortal";
PortalSelect.name = "PortalEval_OptionPortal";
PortalSelect.style.width = "300px";
OptionForm.appendChild(document.createTextNode(" "));
OptionForm.appendChild(PortalSelect);
var PortalListInput = document.createElement("input");
PortalListInput.type = "button";
PortalListInput.value = PortalEval.texts.GoListText;
PortalListInput.title = PortalEval.texts.GoListTitle;
PortalListInput.onclick = function(){
PortalEval.functions.clearBoard();
var Select = document.getElementById("PortalEval_OptionPortal");
PortalEval.functions.getPages(Select.value);
}
OptionForm.appendChild(document.createTextNode(" "));
OptionForm.appendChild(PortalListInput);
var SortHidden = document.createElement('input');
SortHidden.id = "PortalEval_SortHidden";
SortHidden.type = "hidden";
var SortSelect = document.createElement('select');
SortSelect.id = "PortalEval_OptionSort";
SortSelect.name = "PortalEval_OptionSort";
var SortOptions = ["SortTitle","SortEval","SortStub","SortAVT","SortIMP"];
for(var a=0,l=SortOptions.length;a<l;a++){
var optD = document.createElement('option');
optD.innerHTML = PortalEval.texts[SortOptions[a]] + " ↓";
optD.title = PortalEval.texts[(SortOptions[a]+"Tip")];
optD.value = SortOptions[a]+"_DOWN";
if(a==0){
optD.selected = "selected";
SortHidden.value = optD.value;
}
SortSelect.appendChild(optD);
var optU = document.createElement('option');
optU.innerHTML = PortalEval.texts[SortOptions[a]] + " ↑";
optU.title = PortalEval.texts[(SortOptions[a]+"Tip")];
optU.value = SortOptions[a]+"_UP";
SortSelect.appendChild(optU);
}
SortSelect.onchange = function(){
var SortSelect = document.getElementById("PortalEval_OptionSort");
var SortHidden = document.getElementById("PortalEval_SortHidden");
var SortButton = document.getElementById("PortalEval_SortButton");
var dis = ((SortHidden.value == SortSelect.value) ? "disabled" : false);
SortButton.disabled = dis;
}
OptionForm.appendChild(document.createTextNode(" • "));
OptionForm.appendChild(SortHidden);
OptionForm.appendChild(SortSelect);
var SortListInput = document.createElement("input");
SortListInput.type = "button";
SortListInput.id = "PortalEval_SortButton";
SortListInput.value = PortalEval.texts.GoSortText;
SortListInput.title = PortalEval.texts.GoSortTitle;
SortListInput.disabled = "disabled";
SortListInput.onclick = function(){
var Portal_Select = document.getElementById("PortalEval_OptionPortal");
var Sort_Select = document.getElementById("PortalEval_OptionSort");
var Sort_Hidden = document.getElementById("PortalEval_SortHidden");
Sort_Hidden.value = Sort_Select.value;
this.disabled = "disabled";
PortalEval.functions.sortPages(Sort_Select.value, Portal_Select.value);
}
OptionForm.appendChild(document.createTextNode(" "));
OptionForm.appendChild(SortListInput);
var ChangeLabel = document.createElement('label');
ChangeLabel.setAttribute("for", "Change");
ChangeLabel.innerHTML = PortalEval.texts.GoChangeLabel;
var GlobalChangeInput = document.createElement("input");
GlobalChangeInput.name = "Change";
GlobalChangeInput.id = "GlobalChangeInput";
GlobalChangeInput.type = "button";
GlobalChangeInput.value = PortalEval.texts.GoChangeText;
GlobalChangeInput.title = PortalEval.texts.GoChangeTitle;
GlobalChangeInput.disabled = "disabled";
GlobalChangeInput.onclick = function(){
var SortInput = document.getElementById("PortalEval_SortButton");
var CancelInput = document.getElementById("GlobalCancelInput");
SortInput.disabled = "disabled";
CancelInput.disabled = "disabled";
this.disabled = "disabled";
var boardList = document.getElementById("PortalEvalBoardList");
var TRs = boardList.getElementsByTagName("tr");
for(var a=1,l=TRs.length;a<l;a++){
PortalEval.functions.processThatLineChanges((a-1));
}
}
var GlobalCancelInput = document.createElement("input");
GlobalCancelInput.type = "button";
GlobalCancelInput.name = "Change";
GlobalCancelInput.id = "GlobalCancelInput";
GlobalCancelInput.value = PortalEval.texts.GoCancelText;
GlobalCancelInput.title = PortalEval.texts.GoCancelTitle;
GlobalCancelInput.disabled = "disabled";
GlobalCancelInput.onclick = function(){
PortalEval.functions.cancelAllChanges();
}
OptionForm.appendChild(document.createTextNode(" • "));
OptionForm.appendChild(ChangeLabel);
OptionForm.appendChild(document.createTextNode(" : "));
OptionForm.appendChild(GlobalChangeInput);
OptionForm.appendChild(document.createTextNode(" "));
OptionForm.appendChild(GlobalCancelInput);
TDMainHead.appendChild(OptionForm);
var TDButtons = document.createElement("td");
TDButtons.width = "10%";
TDButtons.style.textAlign = "right";
TDButtons.valign = "top";
var CloseButton = document.createElement("a");
CloseButton.href = "javascript:PortalEval.functions.removeBoard()";
CloseButton.title = PortalEval.texts.GoCloseTitle;
var CloseButtonImage = document.createElement("img");
CloseButtonImage.width = 24;
CloseButtonImage.height = 24;
CloseButtonImage.src = PortalEval.params.ImageURL + PortalEval.params.CloseIcon;
CloseButton.appendChild(CloseButtonImage);
TDButtons.appendChild(CloseButton);
HeadTR.appendChild(TDControl);
HeadTR.appendChild(TDMainHead);
HeadTR.appendChild(TDButtons);
HeadTable.appendChild(HeadTR);
boardHead.appendChild(HeadTable);
board.appendChild(boardHead);
var boardListDiv = document.createElement("div");
boardListDiv.id = "PortalEvalBoardListDiv";
var boardList = document.createElement("table");
boardList.className = "wikitable centre";
boardList.width = "100%";
boardList.id = "PortalEvalBoardList";
var TR1 = document.createElement("tr");
boardList.appendChild(TR1);
for(var a=0,l=PortalEval.texts.THtexts.length;a<l;a++){
var TH = document.createElement("th");
TH.innerHTML = PortalEval.texts.THtexts[a];
if(PortalEval.params.THwidths[a]) TH.width = PortalEval.params.THwidths[a];
TR1.appendChild(TH);
}
boardListDiv.appendChild(boardList);
board.appendChild(boardListDiv);
PortalEval.functions.getPortals();
},
alertControl : function(text, running){
var control = document.getElementById("PortalEvalBoardControl");
if(!control) return;
if(!text){
control.innerHTML = '<img width="16" height="16" src="'+PortalEval.params.ImageURL + PortalEval.params.YesSymbol +'" />';
return;
}else{
control.innerHTML = ''
+ (running ? ('<img width="16" height="16" src="'+PortalEval.params.ImageURL + PortalEval.params.RunningIcon+'" />' + " ") : "")
+ text;
}
},
removeBoard : function(){
var board = document.getElementById("PortalEvalBoard");
if(board) board.parentNode.removeChild(board);
var globalWrapper = document.getElementById("globalWrapper");
if(globalWrapper) globalWrapper.style.display = "";
},
clearBoard : function(){
var boardList = document.getElementById("PortalEvalBoardList");
if(boardList){
while(boardList.getElementsByTagName("tr").length > 1){
boardList.getElementsByTagName("tr")[1].parentNode.removeChild(boardList.getElementsByTagName("tr")[1]);
if(boardList.getElementsByTagName("tr").length < 2) break;
}
};
},
fillBoardLine : function(index, portal){
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
var Target = BoardList.getElementsByTagName("tr")[0].parentNode;
var TR = document.createElement('tr');
Target.appendChild(TR);
var pagedatas = PortalEval.params.PageList[index];
var title = pagedatas.title;
var talktitle = pagedatas.talktitle;
var talkmissing = pagedatas.talkmissing;
var isstub = pagedatas.stub === 1;
var eval = pagedatas.eval === 1;
var evalWT = pagedatas.evalWT;
var evalAVT = pagedatas.evalAVT;
var evalIMP = pagedatas.evalIMP;
var allIMP = pagedatas.allIMP;
TR.id = "IDtr_"+index;
var classes = [];
if(eval) classes.push("evaluated");
if(isstub) classes.push("stub");
if(typeof(evalAVT)=="number") classes.push("AVT_"+evalAVT);
if(typeof(evalIMP)=="number") classes.push("IMP_"+evalIMP);
TR.className = classes.join(" ");
var TD1 = document.createElement("td"); // "Page"
TD1.className = "TD1";
var PageLink = PortalEval.functions.createLink(title, {preview:index});
var TalkPageLink = PortalEval.functions.createLink(talktitle, {text:PortalEval.texts.TalkText, preview:index, class:(talkmissing ? "new" : "")});
TD1.appendChild(PageLink)
TD1.appendChild(document.createTextNode(" ("))
TD1.appendChild(TalkPageLink)
TD1.appendChild(document.createTextNode(")"))
var TD2 = document.createElement("td"); // "Ébauche ?"
TD2.className = "TD2";
TD2.style.textAlign = "center";
var StubImage = document.createElement('img');
StubImage.width = 16
StubImage.height = 16;
StubImage.src = PortalEval.params.ImageURL + (isstub ? PortalEval.params.YesSymbol : PortalEval.params.NoSymbol );
TD2.appendChild(StubImage);
var TD3 = document.createElement("td"); // "Éval ?"
TD3.className = "TD3";
TD3.style.textAlign = "center";
var EvalImage = document.createElement('img');
EvalImage.width = 16
EvalImage.height = 16;
EvalImage.src = PortalEval.params.ImageURL + (eval ? PortalEval.params.YesSymbol : PortalEval.params.NoSymbol );
if(eval) EvalImage.title = evalWT
TD3.appendChild(EvalImage);
var TD4 = document.createElement("td"); // "Avancement"
TD4.className = "TD4";
TD4.style.textAlign = "center";
if(typeof(evalAVT)=="number"){
TD4.appendChild(PortalEval.functions.createAVTSelect(evalAVT, index));
var col = PortalEval.params.Avancement[evalAVT].color;
var textcolor = PortalEval.params.Avancement[evalAVT].textcolor;
TD4.style.backgroundColor = col;
if(textcolor) TD4.style.color = textcolor;
if( (isstub && evalAVT != 5) || (!isstub && evalAVT == 5) ){
TD2.style.border = "2px solid red";
TD4.style.border = "2px solid red";
}
}else{
TD4.appendChild(PortalEval.functions.createAVTSelect(-1, index, true));
}
var TD5 = document.createElement("td"); // "Importances"
TD5.className = "TD5";
TD5.style.textAlign = "right";
if(typeof(evalIMP)=="number"){
TD5.appendChild(PortalEval.functions.createIMPSelect(evalIMP, portal, index, 0));
var col = PortalEval.params.Importance[evalIMP].color;
var textcolor = PortalEval.params.Importance[evalIMP].textcolor;
TD5.style.backgroundColor = col;
if(textcolor) TD5.style.color = textcolor;
}
if(allIMP){
var count = 1;
for(var port in allIMP){
if(port == portal) continue;
var thisimp = allIMP[port];
TD5.appendChild(PortalEval.functions.createIMPSelect(thisimp, port, index, count));
count++
}
}
var AddIMPForm = document.createElement('form');
AddIMPForm.id = "add_"+index;
var AddInput = document.createElement("input");
AddInput.type = "button";
AddInput.value = PortalEval.texts.AddIMPText;
AddInput.title = PortalEval.texts.AddIMPTitle;
AddInput.onclick = function(){
PortalEval.functions.addOneIMPForm(index);
}
AddIMPForm.appendChild(AddInput);
TD5.appendChild(AddIMPForm);
var TD6 = document.createElement("td"); // "Actions"
TD6.className = "TD6";
TD6.style.textAlign = "center";
var ChangeInput = document.createElement("input");
ChangeInput.id = "change_"+index;
ChangeInput.type = "button";
ChangeInput.value = PortalEval.texts.GoChangeOneText;
ChangeInput.title = PortalEval.texts.GoChangeOneTitle;
ChangeInput.disabled = "disabled";
ChangeInput.onclick = function(){
PortalEval.functions.processThatLineChanges(index);
}
TD6.appendChild(ChangeInput);
TD6.appendChild(document.createElement("br"));
var CancelInput = document.createElement("input");
CancelInput.type = "button";
CancelInput.id = "cancel_"+index;
CancelInput.value = PortalEval.texts.GoCancelOneText;
CancelInput.title = PortalEval.texts.GoCancelOneTitle;
CancelInput.disabled = "disabled";
CancelInput.onclick = function(){
PortalEval.functions.cancelOneChanges(index);
}
TD6.appendChild(CancelInput);
TR.appendChild(TD1);
TR.appendChild(TD2);
TR.appendChild(TD3);
TR.appendChild(TD4);
TR.appendChild(TD5);
TR.appendChild(TD6);
return TR;
},
createIMPSelect : function(evalIMP, portal, index, count){
var form = document.createElement("form");
form.onsubmit = function(){ return false; };
form.id = "IMPform_"+count+"_"+index;
form.style.whiteSpace = "nowrap";
var Hidden = document.createElement("input");
Hidden.type = "hidden";
Hidden.id = "IMP_"+count+"_"+index;
form.appendChild(Hidden);
var Label = document.createElement('label');
Label.setAttribute("for", "Importance "+portal);
Label.innerHTML = portal;
if(count==0){
Label.style.fontWeight = "bold";
Label.className = "portal";
}
form.appendChild(Label);
form.appendChild(document.createTextNode(" : "));
var Select = document.createElement("select");
Select.name = "Importance "+portal;
for(var a=0,l=PortalEval.params.Importance.length;a<l;a++){
var thisimp = PortalEval.params.Importance[a];
var opt = document.createElement('option');
opt.innerHTML = thisimp.text;
opt.value = a;
opt.style.backgroundColor = thisimp.color;
if(thisimp.textcolor) opt.style.color = thisimp.textcolor;
if(a == evalIMP){
opt.selected = "selected";
Hidden.value = opt.value;
}
Select.appendChild(opt);
}
Select.onchange = function(){
PortalEval.functions.setChangeCancelOneIMPInputDisabled(this, count, index);
}
form.appendChild(Select);
var suplink = document.createElement("input");
suplink.type = "button";
suplink.value = PortalEval.texts.DeleteIMPText;
suplink.title = PortalEval.texts.DeleteIMPTitle;
suplink.onclick = function(){
var F = this.parentNode;
thisSelect = F.getElementsByTagName("select")[0];
thisSelect.disabled = "disabled";
F.style.display = "none";
$(F).addClass("Removed");
PortalEval.functions.setChangeCancelOneIMPInputDisabled(this, count, index);
}
form.appendChild(document.createTextNode(" "));
form.appendChild(suplink);
return form;
},
setChangeCancelOneIMPInputDisabled : function(Select, count, index) {
var val = (Select.tagName.toLowerCase == "select" ? Select.value : false);
var defval = document.getElementById("IMP_"+count+"_"+index).value;
var dis = (val == defval ? "disabled" : false );
var F = Select.parentNode;
if(dis) $(F).removeClass("Modified");
else $(F).addClass("Modified");
PortalEval.functions.setChangeCancelOneInputDisabled(index);
PortalEval.functions.setChangeCancelInputDisabled();
},
setChangeCancelOneInputDisabled : function(index) {
var TR = document.getElementById("IDtr_"+index);
var ChangeInput = document.getElementById("change_"+index);
var CancelInput = document.getElementById("cancel_"+index);
var forms = TR.getElementsByTagName("form");
var dis = "disabled";
for(var a=0,l=forms.length;a<l;a++){
if($(forms[a]).hasClass("Modified")) dis = false;
}
if(dis) $(TR).removeClass("Modified");
else $(TR).addClass("Modified");
CancelInput.disabled = dis;
ChangeInput.disabled = dis;
},
createAVTSelect : function(evalAVT, index, empty){
var form = document.createElement("form");
form.onsubmit = function(){ return false; };
form.style.whiteSpace = "nowrap";
var Hidden = document.createElement("input");
Hidden.type = "hidden";
Hidden.id = "AVT_"+index;
form.appendChild(Hidden);
var Select = document.createElement("select");
Select.name = "Avancement";
if(empty){
var emptyopt = document.createElement('option');
emptyopt.innerHTML = "";
emptyopt.value = "???";
Select.appendChild(emptyopt);
Hidden.value = "???";
}
for(var a=0,l=PortalEval.params.Avancement.length;a<l;a++){
var thisavt = PortalEval.params.Avancement[a];
var opt = document.createElement('option');
opt.innerHTML = thisavt.text;
opt.value = a;
opt.style.backgroundColor = thisavt.color;
if(thisavt.textcolor) opt.style.color = thisavt.textcolor;
if(a == evalAVT){
opt.selected = "selected";
Hidden.value = a;
}
Select.appendChild(opt);
}
Select.onchange = function(){
var val = this.value;
var defval = document.getElementById("AVT_"+index).value;
var dis = (val == defval ? "disabled" : false );
var F = Select.parentNode;
if(dis) $(F).removeClass("Modified");
else $(F).addClass("Modified");
PortalEval.functions.setChangeCancelOneInputDisabled(index);
PortalEval.functions.setChangeCancelInputDisabled();
}
form.appendChild(Select);
return form;
},
setChangeCancelInputDisabled : function() {
var BoardList = document.getElementById("PortalEvalBoardList");
var ChangeInput = document.getElementById("GlobalChangeInput");
var CancelInput = document.getElementById("GlobalCancelInput");
if(!BoardList || !ChangeInput || !CancelInput ) return;
var AnyChange = false;
var TRs = BoardList.getElementsByTagName('tr');
for(var a=0,l=TRs.length;a<l;a++){
if($(TRs[a]).hasClass("Modified")){
ChangeInput.disabled = false;
CancelInput.disabled = false;
return;
}
}
ChangeInput.disabled = "disabled";
CancelInput.disabled = "disabled";
},
cancelOneChanges : function(index){
var TR = document.getElementById("IDtr_"+index);
var forms = TR.getElementsByTagName("form");
for(var a=0,l=forms.length;a<l;a++){
var thisform = forms[a];
if(!($(thisform).hasClass("Modified"))) continue;
if($(thisform).hasClass("Added")){
thisform.parentNode.removeChild(thisform);
a--;
continue;
}
var Select = thisform.getElementsByTagName("select")[0];
var Hidden = thisform.getElementsByTagName("input")[0];
var opt = Select.getElementsByTagName("option");
for(o=0,olen=opt.length;o<olen;o++){
var thisopt = opt[o];
if(thisopt.value == Hidden.value) thisopt.selected = "selected";
}
$(thisform).removeClass("Modified");
$(thisform).removeClass("Removed");
thisform.style.display = "";
Select.disabled = false;
}
PortalEval.functions.setChangeCancelOneInputDisabled(index);
PortalEval.functions.setChangeCancelInputDisabled();
},
cancelAllChanges : function(){
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
var TRs = BoardList.getElementsByTagName('tr');
for(var a=0,l=TRs.length;a<l;a++){
var TR = TRs[a];
if(!TR.id) continue;
var index = parseInt(TR.id.replace(/[^0-9]/g, ""));
PortalEval.functions.cancelOneChanges(index);
}
},
addOneIMPForm : function(index){
var AddIMPForm = document.getElementById("add_"+index);
var TD = AddIMPForm.parentNode;
var count = (TD.getElementsByTagName('form').length);
var form = document.createElement("form");
form.onsubmit = function(){ return false; };
form.id = "IMPform_"+count+"_"+index;
form.className = "Modified Added";
form.style.whiteSpace = "nowrap";
var Hidden = document.createElement("input");
Hidden.type = "hidden";
Hidden.id = "IMP_"+count+"_"+index;
Hidden.value = ".";
form.appendChild(Hidden);
var ThemeSelect = PortalEval.functions.createThemeSelect();
var Label = document.createElement('input');
ThemeSelect.name = "portal";
form.appendChild(ThemeSelect);
form.appendChild(document.createTextNode(" : "));
var Select = document.createElement("select");
Select.name = "Importance NEW";
for(var a=0,l=PortalEval.params.Importance.length;a<l;a++){
var thisimp = PortalEval.params.Importance[a];
var opt = document.createElement('option');
opt.innerHTML = thisimp.text;
opt.value = a;
opt.style.backgroundColor = thisimp.color;
if(thisimp.textcolor) opt.style.color = thisimp.textcolor;
if(a == (PortalEval.params.Importance.length-1)) opt.selected = "selected";
Select.appendChild(opt);
}
Select.onchange = function(){
PortalEval.functions.setChangeCancelOneIMPInputDisabled(this, count, index);
}
form.appendChild(Select);
var suplink = document.createElement("input");
suplink.type = "button";
suplink.value = PortalEval.texts.DeleteIMPText;
suplink.title = PortalEval.texts.DeleteIMPTitle;
suplink.onclick = function(){
var F = this.parentNode;
F.parentNode.removeChild(F);
PortalEval.functions.setChangeCancelOneInputDisabled(index);
}
form.appendChild(document.createTextNode(" "));
form.appendChild(suplink);
AddIMPForm.parentNode.insertBefore(form, AddIMPForm);
Label.focus();
PortalEval.functions.setChangeCancelOneIMPInputDisabled(Select, count, index);
},
sortPages : function(selectvalue, portal) {
var DOWN = selectvalue.indexOf("_DOWN")!==-1;
selectvalue = selectvalue.replace(/_.*/g, "");
PortalEval.functions.sortPagesGo[selectvalue](portal, DOWN);
},
sortPagesGo : {
SortTitle : function(portal, updown) {
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
PortalEval.functions.clearBoard();
var PageList = PortalEval.params.PageList;
var NewPageList = [];
var b, m, added = false;
while(PageList.length > 0){
var thispage = PageList[0];
var thispagetitle = thispage.title;
added = false;
for(b=0, m=NewPageList.length;b<m;b++){
if(added) continue;
var thisnewpage = NewPageList[b];
var thisnewpagetitle = thisnewpage.title;
var comparison = (updown ? thispagetitle : thisnewpagetitle);
if([thisnewpagetitle, thispagetitle].sort()[0] == comparison){
NewPageList.splice(b, 0, thispage);
PageList.shift();
added = true;
}
}
if(!added){
NewPageList.push(thispage);
PageList.shift();
}
if(PageList.length == 0) break;
}
PortalEval.params.PageList = NewPageList;
for(var a=0,l=NewPageList.length;a<l;a++){
PortalEval.functions.fillBoardLine(a, portal);
}
},
SortEval : function(portal, updown) {
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
PortalEval.functions.clearBoard();
var PageList = PortalEval.params.PageList;
var NewPageList = [];
var b, m, added = false;
while(PageList.length > 0){
var thispage = PageList[0];
var thispageeval = ( thispage.eval ? 0 : 1);
added = false;
for(b=0, m=NewPageList.length;b<m;b++){
if(added) continue;
var thisnewpage = NewPageList[b];
var thisnewpageeval = (thisnewpage.eval ? 0 : 1);
var comparison = (updown ? thispageeval : thisnewpageeval);
if([thisnewpageeval, thispageeval].sort()[0] == comparison){
NewPageList.splice(b, 0, thispage);
PageList.shift();
added = true;
}
}
if(!added){
NewPageList.push(thispage);
PageList.shift();
}
if(PageList.length == 0) break;
}
PortalEval.params.PageList = NewPageList;
for(var a=0,l=NewPageList.length;a<l;a++){
PortalEval.functions.fillBoardLine(a, portal);
}
},
SortStub : function(portal, updown) {
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
PortalEval.functions.clearBoard();
var PageList = PortalEval.params.PageList;
var NewPageList = [];
var b, m, added = false;
while(PageList.length > 0){
var thispage = PageList[0];
var thispagestub = ( thispage.stub ? 1 : 0);
added = false;
for(b=0, m=NewPageList.length;b<m;b++){
if(added) continue;
var thisnewpage = NewPageList[b];
var thisnewpagestub = (thisnewpage.stub ? 1 : 0);
var comparison = (updown ? thispagestub : thisnewpagestub);
if([thisnewpagestub, thispagestub].sort()[0] == comparison){
NewPageList.splice(b, 0, thispage);
PageList.shift();
added = true;
}
}
if(!added){
NewPageList.push(thispage);
PageList.shift();
}
if(PageList.length == 0) break;
}
PortalEval.params.PageList = NewPageList;
for(var a=0,l=NewPageList.length;a<l;a++){
PortalEval.functions.fillBoardLine(a, portal);
}
},
SortAVT : function(portal, updown) {
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
PortalEval.functions.clearBoard();
var PageList = PortalEval.params.PageList;
var NewPageList = [];
var b, m, added = false;
while(PageList.length > 0){
var thispage = PageList[0];
var thispageevalAVT = thispage.evalAVT;
if(typeof(thispageevalAVT)!="number") thispageevalAVT = 99;
added = false;
for(b=0, m=NewPageList.length;b<m;b++){
if(added) continue;
var thisnewpage = NewPageList[b];
var thisnewpageevalAVT = thisnewpage.evalAVT;
if(typeof(thisnewpageevalAVT)!="number") thisnewpageevalAVT = 99;
var comparison = (updown ? thisnewpageevalAVT : thispageevalAVT);
if([thisnewpageevalAVT, thispageevalAVT].sort()[0] == comparison){
NewPageList.splice(b, 0, thispage);
PageList.shift();
added = true;
}
}
if(!added){
NewPageList.push(thispage);
PageList.shift();
}
if(PageList.length == 0) break;
}
PortalEval.params.PageList = NewPageList;
for(var a=0,l=NewPageList.length;a<l;a++){
PortalEval.functions.fillBoardLine(a, portal);
}
},
SortIMP : function(portal, updown) {
var BoardList = document.getElementById("PortalEvalBoardList");
if(!BoardList) return;
PortalEval.functions.clearBoard();
var PageList = PortalEval.params.PageList;
var NewPageList = [];
var b, m, added = false;
while(PageList.length > 0){
var thispage = PageList[0];
var thispageevalIMP = 99;
try{
thispageevalIMP = thispage.allIMP[portal];
if(typeof(thispageevalIMP)!="number") thispageevalIMP = 99;
}catch(e){ }
added = false;
for(b=0, m=NewPageList.length;b<m;b++){
if(added) continue;
var thisnewpage = NewPageList[b];
var thisnewpageevalIMP = 99;
try{
thisnewpageevalIMP = thisnewpage.allIMP[portal];
if(typeof(thisnewpageevalIMP)!="number") thisnewpageevalIMP = 99;
}catch(e){ }
var comparison = (updown ? thispageevalIMP : thisnewpageevalIMP);
if([thisnewpageevalIMP, thispageevalIMP].sort()[0] == comparison){
NewPageList.splice(b, 0, thispage);
PageList.shift();
added = true;
}
}
if(!added){
NewPageList.push(thispage);
PageList.shift();
}
if(PageList.length == 0) break;
}
PortalEval.params.PageList = NewPageList;
for(var a=0,l=NewPageList.length;a<l;a++){
PortalEval.functions.fillBoardLine(a, portal);
}
}
},
processThatLineChanges : function(index){
var TR = document.getElementById("IDtr_"+index);
if(!($(TR).hasClass("Modified"))) return;
var OldParams = PortalEval.params.PageList[index];
var NewParams = {
title : OldParams.title,
talktitle : OldParams.talktitle,
talkmissing : 0,
eval : 1,
stub : OldParams.stub,
allIMP : {}
};
var TD1 = TR.getElementsByTagName('td')[0];
var IMG = document.createElement('img');
IMG.width = 14;
IMG.height = 14;
IMG.src = PortalEval.params.ImageURL + PortalEval.params.RunningIcon;
TD1.insertBefore(document.createTextNode(" "), TD1.firstChild);
TD1.insertBefore(IMG, TD1.firstChild);
var ChangeInput = document.getElementById("change_"+index);
ChangeInput.disabled = "disabled";
var CancelInput = document.getElementById("cancel_"+index);
CancelInput.disabled = "disabled";
var Forms = TR.getElementsByTagName('form');
for(var a=0,l=Forms.length;a<l;a++){
var thisForm = Forms[a];
if($(thisForm).hasClass("Removed")) continue;
var Label = thisForm.getElementsByTagName("label")[0];
var Inputs = thisForm.getElementsByTagName("input");
for(var i=0,ilen=Inputs.length;i<ilen;i++){
var ThisInput = Inputs[i];
if(ThisInput.type == "button" || ThisInput.type == "text") ThisInput.disabled = "disabled";
}
var Selects = thisForm.getElementsByTagName("select");
for(var s=0,slen=Selects.length;s<slen;s++){
var ThisSelect = Selects[s];
ThisSelect.disabled = "disabled";
var SelectValue = ThisSelect.value;
var SelectName = ThisSelect.name;
if(SelectName == "Avancement"){
NewParams.evalAVT = parseInt(SelectValue);
}else if(SelectName == "Importance NEW"){
var ThemeSelect = Selects[(s-1)];
var thisportal = ThemeSelect.value;
if(thisportal != ""){
NewParams.allIMP[thisportal] = parseInt(SelectValue);
var PortalSelect = document.getElementById("PortalEval_OptionPortal");
if(PortalSelect && PortalSelect.value == thisportal) NewParams.evalIMP = parseInt(SelectValue);
}
}else if(SelectName.indexOf("Importance")==0){
if($(Label).hasClass("portal")) NewParams.evalIMP = parseInt(SelectValue);
NewParams.allIMP[Label.innerHTML] = parseInt(SelectValue);
}
}
}
var NewWikitext = "{{"+PortalEval.params.EvalTemplate+"\n";
for(var imp in NewParams.allIMP){
NewWikitext += "|"+imp+"|"+PortalEval.params.Importance[NewParams.allIMP[imp]].wiki+"\n"
}
NewWikitext += "|avancement="+PortalEval.params.Avancement[NewParams.evalAVT].wiki+"\n"
var OldWikitext = OldParams.evalWT;
if(OldWikitext){
OldWikitext = OldParams.evalWT.split("\n").join("");
OldWikitext = OldWikitext.split("|");
for(var a=1,l=OldWikitext.length;a<l;a++){
var thisparam = OldWikitext[a].split("}}").join("");
if(thisparam.indexOf("=")===-1) continue;
if(thisparam.indexOf("avancement")!==-1) continue;
NewWikitext += "|"+thisparam+"\n";
}
}
NewWikitext += "}}";
NewParams.evalWT = NewWikitext;
// return alert(NewWikitext);
PortalEval.functions.doThatLineChanges(index, OldParams, NewParams);
},
doThatLineChanges : function(index, OldParams, NewParams){
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
prop: 'revisions',
rvlimit : 1,
rvprop: 'timestamp|content',
titles: NewParams.talktitle,
format: 'json',
},
success: function(data) {
var NewWikitext = "";
var timestamp = "now";
if(OldParams.talkmissing){
NewWikitext = NewParams.evalWT;
}else{
timestamp = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0].timestamp;
var OldWikitext = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]["*"];
var Reg = new RegExp("\\{\\{ *"+PortalEval.params.EvalTemplate+"[^\\{]*\\}\\}", "ig");
var matches = OldWikitext.match(Reg);
if(matches == null){
NewWikitext = NewParams.evalWT + "\n" + OldWikitext;
}else{
for(var a=0,l=matches.length;a<l;a++){
var thismatch = matches[a];
if(a!==0){
NewWikitext = OldWikitext.replace(thismatch, "");
}else{
NewWikitext = OldWikitext.replace(thismatch, NewParams.evalWT);
}
}
}
}
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
meta: 'tokens',
format: 'json',
type: 'csrf',
},
dataType: 'json'
}).then(function(data) {
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: {
action: 'edit',
title: NewParams.talktitle,
text: NewWikitext,
summary: PortalEval.texts.EvalResume,
basetimestamp: timestamp,
format: 'json',
token: data.query.tokens.csrftoken
},
dataType: 'json',
success: function(data){
PortalEval.functions.updateThatLine(index, NewParams);
}
});
});
}
});
},
updateThatLine : function(index, NewParams){
PortalEval.params.PageList[index] = NewParams;
var portalSelect = document.getElementById("PortalEval_OptionPortal");
var portal = portalSelect.value;
var OldTR = document.getElementById("IDtr_"+index);
var NewTR = PortalEval.functions.fillBoardLine(index, portal);
OldTR.parentNode.insertBefore(NewTR, OldTR);
OldTR.parentNode.removeChild(OldTR);
},
previewPage : function(title, index){
var previewDiv = document.getElementById("previewDiv_"+index);
if(previewDiv) return;
previewDiv = document.createElement('div');
previewDiv.id = "previewDiv_"+index;
previewDiv.style.maxHeight = PortalEval.params.PreviewHeight + "px";
previewDiv.style.width = "100%";
previewDiv.style.overflowY = "scroll";
previewDiv.style.borderTop = "1px dashed #a2a9b1";
previewDiv.innerHTML = '<img width="16" height="16" src="'+PortalEval.params.ImageURL + PortalEval.params.RunningIcon+'" /> Loading preview';
var TR = document.getElementById("IDtr_"+index);
var TD1 = TR.getElementsByTagName('td')[0];
TD1.appendChild(previewDiv);
var URL = mw.config.get('wgServer')+mw.config.get('wgArticlePath').split("$1").join(encodeURIComponent(title));
$.ajax({url:URL, complete: function(Req){
var TEMP = document.createElement("div");
TEMP.style.display = "none";
TEMP.innerHTML = Req.responseText;
document.body.appendChild(TEMP);
var Divs = TEMP.getElementsByTagName('div');
while(previewDiv.firstChild){ previewDiv.removeChild(previewDiv.firstChild); }
for(var a=0,l=Divs.length;a<l;a++){
var thisDiv = Divs[a];
if(!thisDiv) continue;
if(thisDiv.id && thisDiv.id === "mw-content-text"){
var contentdiv = document.createElement('div');
previewDiv.insertBefore(contentdiv, previewDiv.firstChild);
contentdiv.innerHTML = thisDiv.innerHTML;
var closespan = document.createElement('span');
closespan.style.float = "right";
TD1.insertBefore(closespan, TD1.firstChild);
var downlink = document.createElement('a');
downlink.title = PortalEval.texts.PreviewDown;
downlink.innerHTML = '<img width="16" height="16" src="'+PortalEval.params.ImageURL + PortalEval.params.DownIcon+'" />';
downlink.href = "javascript:;";
downlink.onclick = function(){ PortalEval.functions.updownPreview(PortalEval.params.PreviewHeightStep, previewDiv); return false; }
var uplink = document.createElement('a');
uplink.title = PortalEval.texts.PreviewUp;
uplink.innerHTML = '<img width="16" height="16" src="'+PortalEval.params.ImageURL + PortalEval.params.UpIcon+'" />';
uplink.href = "javascript:;";
uplink.onclick = function(){ PortalEval.functions.updownPreview(-PortalEval.params.PreviewHeightStep, previewDiv); return false; }
closespan.appendChild(downlink);
closespan.appendChild(uplink);
closespan.appendChild(document.createTextNode(" "));
var closelink = document.createElement('a');
closelink.title = PortalEval.texts.PreviewClose;
closelink.innerHTML = '<img width="16" height="16" src="'+PortalEval.params.ImageURL + PortalEval.params.CloseIcon+'" />';
closelink.href = "javascript:;";
closelink.onclick = function(){ PortalEval.functions.closePreview(index, closespan); return false; }
closespan.appendChild(closelink);
}else if(thisDiv.id && thisDiv.id === "catlinks"){
previewDiv.appendChild(thisDiv);
}
}
TEMP.parentNode.removeChild(TEMP);
PortalEval.functions.enhancePreview(previewDiv);
}});
},
enhancePreview : function(previewDiv){ // See MediaWiki:Commons.js
try{ Palette(previewDiv); }catch(e){}
try{ BoiteDeroulante(previewDiv); }catch(e){}
try{ GeoBox_Init(previewDiv); }catch(e){}
},
updownPreview(val, previewDiv){
var oldval = parseInt(previewDiv.style.maxHeight.split("px").join(""));
previewDiv.style.maxHeight = (oldval+val) + "px";
},
closePreview : function(index, link){
var previewDiv = document.getElementById("previewDiv_"+index);
if(previewDiv) previewDiv.parentNode.removeChild(previewDiv);
link.parentNode.removeChild(link);
},
addlink : function() {
if(mw.config.get("wgNamespaceNumber") != 14) return;
var portlet = document.getElementById(PortalEval.params.LinkPortletID);
if(!portlet)return;
var tabs = portlet.getElementsByTagName('ul')[0];
var newli = document.createElement('li');
tabs.appendChild(newli);
var link = document.createElement("a");
link.innerHTML = PortalEval.texts.LinkText;
link.title = PortalEval.texts.LinkTitle;
link.href = "javascript:PortalEval.functions.createBoard();";
newli.appendChild(link);
}
}
}
if( mw.config.get('wgServer') == '//fr.wikipedia.org' && mw.config.get('wgNamespaceNumber')==14 && ["edit","submit"].indexOf(mw.config.get('wgAction')) === -1 ){
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function(){
if(typeof(PortalEval_LangCustom) == "function") PortalEval_LangCustom();
if(typeof(PortalEval_SiteCustom) == "function") PortalEval_SiteCustom();
if(typeof(PortalEval_UserCustom) == "function") PortalEval_UserCustom();
$(PortalEval.functions.addlink);
});
}
//</source>