Utilisateur:Louistisserand/Scripts/portail-eval.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.//var cpeSpecialPage = "Spécial:Portail-éval";
var cpeSpecialPage = "Utilisateur:Louistisserand/Spécial/Portail-éval";
$(function () {
mw.loader.using( 'mediawiki.util', function () {
mw.util.addPortletLink('p-tb', mw.config.get("wgArticlePath").replace(/\$1/, cpeSpecialPage), 'Portail-éval', 'r-cpe', 'Portail-éval');
});
});
if (mw.config.get("wgPageName") == cpeSpecialPage) {
/* Génération de la liste */
function cpeArticleLink(article) {
return "<a href=\"" + mw.config.get("wgArticlePath").replace(/\$1/, encodeURIComponent(article)) + "\">" + mw.html.escape(article) + "</a>";
}
function cpeArticleActionLink(article) {
//var encodeArticle= encodeURIComponent(article).replace(/'/g, "'");
var encodeArticle= encodeURIComponent(article.replace(/'/g, "'"));
var sOut="";
//var sOut="<a href=\"#\" onclick=\"cpeCBArticle('" + encodeArticle + "');return false;\">Run JavaScript Code on " + encodeURIComponent(article) + "</a>";
//console.log(sOut);
return sOut;
// --- problème avec la ligne qui suit: cas des titres d'article contenant un apostrophe '
//return "<a href=\"#\" onclick=\"cpeCBArticle('" + encodeURIComponent(article) + "');return false;\">Run JavaScript Code on " + encodeURIComponent(article) + "</a>";
//return "<a href=\"#\" onclick=\"function(){cpeCBArticle(\"" + encodeURIComponent(article) + "\");return false;}\">Run JavaScript Code on " + encodeURIComponent(article) + "</a>";
/***
var CAT_EVAL_PREFIX = "Catégorie:Article ";
var portail, catEval;
portail = $('#cpePortail').val();
if (portail == "") {
return "Erreur : le champ 'Portail' est vide.";
}
if ($('#cpeCatTypeAuto').attr('checked')) {
catEval = $('#cpeCatAuto').text();
if (catEval.substr(0, CAT_EVAL_PREFIX.length) != CAT_EVAL_PREFIX) {
return "Erreur : le champ 'Préfixe des catégories' n'est pas valide.";
}
} else {
catEval = $("#cpeCatManuel").val();
catEval = CAT_EVAL_PREFIX + catEval;
}
portail = portail.substr(0, 1).toUpperCase() + portail.substr(1);
var directLink = location.protocol + mw.config.get("wgServer") + mw.config.get("wgScript")
+ "?title=" + encodeURIComponent(cpeSpecialPage)
+ "&portail=" + encodeURIComponent(portail)
+ "&cateval=" + encodeURIComponent(catEval.substr(CAT_EVAL_PREFIX.length))
+ "&updatepage=" + encodeURIComponent(article);
return "<a href=\"" + mw.html.escape(directLink) + "\">" + " change link :" + mw.html.escape(directLink) + "</a>";
***/
}
function cpeReadCat(categ, callbackFun, progressFun) {
var query = {format: 'json', action: 'query', list: 'categorymembers', cmtitle: categ, cmlimit: 500, rawcontinue: ''}; /* SLD : 500 => 4 = catastrophe */
var catMembers = [];
function readCatLoop(obj) {
$.merge(catMembers, obj.query.categorymembers);
progressFun(catMembers.length);
if (obj["query-continue"]) {
query.cmcontinue = obj["query-continue"].categorymembers.cmcontinue;
$.getJSON(mw.util.wikiScript('api'), query, readCatLoop);
} else {
callbackFun(catMembers);
}
}
$.getJSON(mw.util.wikiScript('api'), query, readCatLoop);
}
function cpeComputeLists(portail, evalCatPrefix, callbackFun) {
var cpeImp = ["inconnue", "faible", "moyenne", "élevée", "maximum"];
var cpeListePortail = new Object;
var cpeListeEval = new Object;
function initReadInfo(cat) {
$("#cpeResult").html("Lecture de <tt>" + mw.html.escape(cat) + "</tt> <span id=\"cpeCatReadCount\"></span>");
}
function updateReadInfo(size) {
$("#cpeCatReadCount").text("(" + size + " lus)");
}
function listeEval(index) {
if (index < cpeImp.length) {
initReadInfo(evalCatPrefix + " d'importance " + cpeImp[index]);
cpeReadCat(evalCatPrefix + " d'importance " + cpeImp[index],
function (catMembers) {
for (var i = 0; i < catMembers.length; i++) {
if (catMembers[i].ns == 1) {
var talkTitle = catMembers[i].title;
var title = talkTitle.substr(talkTitle.indexOf(":") + 1);
cpeListeEval[title] = true;
}
}
listeEval(index + 1);
}, updateReadInfo
);
} else {
callbackFun(cpeListePortail, cpeListeEval);
}
}
initReadInfo("Catégorie:Portail:" + portail + "/Articles liés");
cpeReadCat("Catégorie:Portail:" + portail + "/Articles liés",
function (catMembers) {
for (var i = 0; i < catMembers.length; i++) {
cpeListePortail[catMembers[i].title] = true;
}
listeEval(0);
}, updateReadInfo
);
}
/* Formulaire */
var cpeTimeout = false, cpeUpdateCatId = 0, cpeCatCache = {};
function cpeCompute() {
var CAT_EVAL_PREFIX = "Catégorie:Article ";
var portail, catEval;
portail = $('#cpePortail').val();
if (portail === "") {
$("#cpeResult").text("Erreur : le champ 'Portail' est vide.");
return;
}
if ($('#cpeCatTypeAuto').attr('checked')) {
catEval = $('#cpeCatAuto').text();
if (catEval.substr(0, CAT_EVAL_PREFIX.length) != CAT_EVAL_PREFIX) {
$("#cpeResult").text("Erreur : le champ 'Préfixe des catégories' n'est pas valide.");
return;
}
} else {
catEval = $("#cpeCatManuel").val();
if (catEval === "") {
$("#cpeResult").text("Erreur : le champ 'Préfixe des catégories' est vide.");
}
catEval = CAT_EVAL_PREFIX + catEval;
}
portail = portail.substr(0, 1).toUpperCase() + portail.substr(1);
$("#cpeCompute").prop('disabled', true);
cpeComputeLists(portail, catEval,
function (listePortail, listeEval) {
var inputNB = parseInt($('#cpeRequestSize').val()); /* SLT */
if (isNaN(inputNB) || inputNB < 1) inputNB = 6; /* SLT */
var directLink = location.protocol + mw.config.get("wgServer") + mw.config.get("wgScript")
+ "?title=" + encodeURIComponent(cpeSpecialPage)
+ "&portail=" + encodeURIComponent(portail)
+ "&cateval=" + encodeURIComponent(catEval.substr(CAT_EVAL_PREFIX.length));
var html = "<p><small>Lien direct pour revenir à cette requête : <a href=\"" + mw.html.escape(directLink) + "\">" + mw.html.escape(directLink) + "</a></small></p>";
html += '<p><a href="#" id="cpeDisplayWikicode" class="cpe-closed">Version en wikicode à copier-coller</a></p>';
var list1 = '', list2 = '';
var wikicodeList1 = '', wikicodeList2 = '';
var listCount1 = 0, listCount2 = 0, maxListCount = inputNB; //4; /* SLD : 500 => 4 */
for (var article in listePortail) {
if (!listeEval[article]) {
listCount1++;
if (listCount1 <= maxListCount) {
list1 += "<li>" + cpeArticleLink(article);
//
// --- try and add second link to action
list1 += " ";
list1 += cpeArticleActionLink(article);
//
wikicodeList1 += '*[[' + article + ']]\n';
}
} else { // added 3/5/2018 for dump of all articles related to portal
listCount2++;
if (listCount2 <= maxListCount) {
list2 += "<li>" + cpeArticleLink(article);
//
}
}
}
/***
for (article in listeEval) {
if (!listePortail[article]) {
listCount2++;
if (listCount2 <= maxListCount) {
list2 += "<li>" + cpeArticleLink(article);
wikicodeList2 += '*[[' + article + ']]\n';
}
}
}
***/
function formatCount(c) {
if (c === 0) {
return "Aucun article";
} else if (c == 1) {
return "1 article";
} else if (c <= maxListCount) {
return c + " articles";
} else {
return c + " articles (seulement " + maxListCount + " affichés)";
}
}
html += "<h2>Articles du portail non évalués</h2>"
+ "<p>" + formatCount(listCount1) + "</p><ul>" + list1 + "</ul>" //;
//
+ "<h2>Articles du portail évalués </h2>"
+ "<p>" + formatCount(listCount2) + "</p><ul>" + list2 + "</ul>";
//
/***
+ "<h2>Articles évalués sans le portail</h2>"
+ "<p>" + formatCount(listCount2) + "</p><ul>" + list2 + "</ul>";
***/
$("#cpeResult").html(html);
$("#cpeCompute").prop('disabled', false);
$("#cpeDisplayWikicode").click(function() {
var link = $(this);
link.toggleClass('cpe-closed cpe-opened');
if (link.hasClass('cpe-opened')) {
link.after('<div id="cpeWikicodeDiv"><textarea id="cpeWikicode" cols="80" rows="25" readonly></textarea></div>');
$('#cpeWikicode').val('== Articles du portail non évalués ==\n' + wikicodeList1 + '\n== Articles évalués sans le portail ==\n' + wikicodeList2);
} else {
$('#cpeWikicodeDiv').remove();
}
});
}
);
}
function cpeUpdateCatSpan() {
var indexSel = $('#cpeCatTypeAuto').attr('checked') ? 0 : 1;
$("#cpeCatAuto").css("display", indexSel == 0 ? "" : "none");
$("#cpeCatManuelSpan").css("display", indexSel == 1 ? "" : "none");
}
function cpeInitForm(portail, catEval) {
$('head').append('<style>'
+ '.cpe-closed {padding: 0 0 0 16px; background: url(//upload.wikimedia.org/wikipedia/commons/4/41/MediaWiki_Vector_skin_right_arrow.png) no-repeat left center;}'
+ '.cpe-opened {padding: 0 0 0 16px; background: url(//upload.wikimedia.org/wikipedia/commons/1/10/MediaWiki_Vector_skin_action_arrow.png) no-repeat left center;}'
+ '</style>');
html = '<p>Ce formulaire sert à calculer la liste des articles qui ont un portail mais pas une évaluation, et réciproquement.</p>'
+ '<p>Portail (par exemple <i>Chemin de fer</i>)<br /><input id="cpePortail" size="64" value="'
+ mw.html.escape(portail) + '" /></p>'
+ '<p>Taille requete<br /><input id="cpeRequestSize" size="4" value="2" /></p>'
+ '<p>Préfixe des catégories liées à l\'évaluation (la casse doit être respectée ; par exemple <tt>Catégorie:Article <i>ferroviaire</i></tt>)<br />'
+ '<input name="cpeCatType" id="cpeCatTypeAuto" type="radio" ' + (catEval ? '' : 'checked="checked" ') + '/>'
+ '<label for="cpeCatTypeAuto">Automatique</label> '
+ '<input name="cpeCatType" id="cpeCatTypeManuel" type="radio" ' + (catEval ? 'checked="checked" ' : '') + '/>'
+ '<label for="cpeCatTypeManuel">Manuel</label><br />'
+ '<span id="cpeCatAuto" style="display:none"></span><span id="cpeCatManuelSpan" style="display:none"><tt>Catégorie:Article </tt>'
+ '<input size="40" id="cpeCatManuel" value="' + mw.html.escape(catEval) + '" /></span></p>'
+ '<p><input type="button" id="cpeCompute" onclick="cpeCompute();" value="Calculer" /></p><div id="cpeResult"></div>'
$("#bodyContent").html(html);
mw.loader.using(["jquery.ui"], function () {
var inputPortail = $("#cpePortail");
inputPortail.autocomplete({source:
function (request, response) {
if (/[{}|<>\[\]]/.test(request.term)) {
response([]);
return;
}
var prefix = "Portail " + request.term.substr(0, 1).toUpperCase() + request.term.substr(1);
var query = {format: 'json', action: 'query', list: 'allpages', apprefix: prefix, apnamespace: 10, rawcontinue: ''};
$.getJSON(mw.util.wikiScript('api'), query, function (obj) {
var portails = [];
for (var i = 0; i < obj.query.allpages.length; i++) {
var portail = obj.query.allpages[i].title;
portails.push(portail.substr(portail.indexOf(':') + 9));
}
if (portails.length == 1 && portails[0] == request.term) {
response([]);
} else {
response(portails);
}
});
}, select: cpeInvalidateCat});
inputPortail.bind("change", cpeInvalidateCat);
$("#cpeCatManuel").bind("change", function() {$("#cpeCatTypeManuel").prop('checked', true);});
$("#cpeCatTypeAuto,#cpeCatTypeManuel").bind("change", cpeUpdateCatSpan);
if (portail) cpeInvalidateCat();
cpeUpdateCatSpan();
});
}
function cpeActiveProject()
{
//
var portail = $('#cpePortail').val();
//
//console.log("***** cpeActiveProject *** portail : [" + portail + "] *****");
for(var i=0; i<window.evaluation_multiprojets.length;i++)
{
if (portail==window.evaluation_multiprojets.project[i])
{
window.evaluation_multiprojets.state[t] = true;
return;
}
else
{
window.evaluation_multiprojets.state[t] = false;
}
// if (window.evaluation_multiprojets.avancement[t] == null)
// window.evaluation_multiprojets.avancement[t] ="?";
}
//
var t = window.evaluation_multiprojets.project.length;
//console.log("***** cpeActiveProject *** portail : [" + portail + "] non trouvé parmi "+t+" *****");
window.evaluation_multiprojets.project[t] = portail;
window.evaluation_multiprojets.importance[t] = "?";
window.evaluation_multiprojets.state[t] = true;
window.evaluation_multiprojets.avancement[t] = null;
}
function cpeCBArticle(encodedArticle)
{
//console.log("***** cpeCBArticle in "+encodedArticle+" (encodé) *****");
var decodeArt=decodeURIComponent(encodedArticle);
//console.log("***** cpeCBArticle in "+decodeArt+" (décodé) *****");
var replacedArt=decodeArt.replace(/'/g, "'");
//console.log("***** cpeCBArticle in "+replacedArt+" (remplacé) *****");
var article= encodeURIComponent(replacedArt);
//var article=encodedArticle.replace(/"'"/g, /'/);
//console.log("***** cpeCBArticle décodé: "+article+" puis appel ev_initVars(); *****");
ev_initVars();
// ---
var portail = $('#cpePortail').val();
//
//console.log("***** cpeCBArticle *** portail : [" + portail + "] *****");
//
var req=new XMLHttpRequest();
var dummy = new Date().getTime();
var discussionPage=mw.config.get( 'wgFormattedNamespaces' )[1]+":" + article;
var decodedPage=mw.config.get( 'wgFormattedNamespaces' )[1]+":" + decodeURIComponent(article);
//--// var forDump = mw.config.get( 'wgScript' ) +"?title="+ mw.config.get( 'wgFormattedNamespaces' )[1]+":" + encodeURIComponent( mw.config.get( 'wgPageName') ) + "&action=raw&_dum=" + dummy
var toOpen = mw.config.get( 'wgScript' ) +"?title="+ discussionPage + "&action=raw&_dum=" + dummy
//console.log("***** cpeCBArticle open demandé avec :["+toOpen+"] *****");
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
if(req.status==200)
{
//console.log("***** cpeCBArticle open OK avec :["+toOpen+"] => appel ev_ExtractEvaluation *****");
ev_ExtractEvaluation(req.responseText);
//console.log("***** cpeCBArticle appel ev_AddMyProjects(); *****");
ev_AddMyProjects();
cpeActiveProject();
//console.log("***** cpeCBArticle appel wpEditPage(); *****");
wpEditPage(decodedPage, {}, ev_editFoo, ev_saveFoo, {});
//console.log("***** cpeCBArticle après wpEditPage(); *****");
//??//ev_drawEvaluation();
}
else if(req.status==404) //la pdd n'existe pas
{
//console.log("***** cpeCBArticle open KO avec :["+toOpen+"] *****");
//console.log("***** cpeCBArticle appel ev_AddMyProjects(); *****");
ev_AddMyProjects();
cpeActiveProject();
//console.log("***** cpeCBArticle appel wpEditPage(); *****");
wpEditPage(decodedPage, {}, ev_editFoo, ev_saveFoo, {});
//console.log("***** cpeCBArticle après wpEditPage(); *****");
//??//ev_drawEvaluation();
}
}//fin readyState == 4
};
req.open("GET", toOpen , true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(null);
return;
}
function cpeInvalidateCat() {
if (cpeTimeout) clearTimeout(cpeTimeout);
cpeUpdateCatId++;
var portail = $('#cpePortail').val();
if (portail == "") {
$('#cpeCatAuto').text("");
} else if (cpeCatCache[portail]) {
$('#cpeCatAuto').html(cpeCatCache[portail]);
} else {
$('#cpeCatAuto').text("...");
cpeTimeout = setTimeout(cpeUpdateCat, 300);
}
}
function cpeUpdateCat() {
var portail = $('#cpePortail').val();
if (/[{}|<>\[\]]/.test(portail)) {
$('#cpeCatAuto').text('');
return;
} else if (cpeCatCache[portail]) {
$('#cpeCatAuto').html(cpeCatCache[portail]);
return;
}
var initId = cpeUpdateCatId;
$.getJSON(mw.util.wikiScript('api'),
{format: 'json', action: 'expandtemplates', text: 'Article du projet {{ucfirst:' + portail + '}}'},
function(obj) {
var catPrefix = "Catégorie:" + obj.expandtemplates['*'];
$.getJSON(mw.util.wikiScript('api'),
{format: 'json', action: 'query', titles: catPrefix + " d'importance faible", prop: 'revisions', rvprop: 'timestamp'},
function (obj) {
if (initId != cpeUpdateCatId) return;
var catPrefixHTML = '<span style="color:red">Impossible de trouver les catégories d\'évaluation</span>';
for (var pageId in obj.query.pages) {
if (pageId != "-1") {
catPrefixHTML = "<tt>" + mw.html.escape(catPrefix) + "</tt>";
break;
}
}
cpeCatCache[portail] = catPrefixHTML;
$('#cpeCatAuto').html(catPrefixHTML);
}
);
}
);
}
/*
* Fonctions extraites du gadget Evaluation
*/
//initialise les variables
function ev_initVars()
{
if(typeof window.initEvalProjectNames != "undefined")
window.initEvalProjectNames();
else
window.evalProjectNames=new Array();
try {if(window.evalProjectNames){}}
catch(e){ window.evalProjectNames = new Array(); }
window.evaluation_multiprojets = new Object();
window.evaluation_multiprojets.project = new Array();
window.evaluation_multiprojets.importance = new Array();
window.evaluation_multiprojets.avancement = new Array();
window.evaluation_multiprojets.state = new Array();
window.evaluation_multiprojets.avancement_global = "?";
window.evaluation_multiprojets.autres = {}; // pour ramasser le reste (WP1.0, todo, wikiconcours, ...)
}
function ev_AddMyProjects()
{
for(var i=0; i<window.evalProjectNames.length;i++)
{
if(window.evaluation_multiprojets.project.indexOf(window.evalProjectNames[i]) == -1)
{
var t = window.evaluation_multiprojets.project.length;
window.evaluation_multiprojets.project[t] = window.evalProjectNames[i];
window.evaluation_multiprojets.importance[t] = "?";
window.evaluation_multiprojets.state[t] = false;
window.evaluation_multiprojets.avancement[t] = null;
}
}
}
function ev_ExtractEvaluation(discussion)
{
var modeles;
discussion = " " + discussion;
modeles = discussion.split(/\{\{[W|w]ikiprojet /);
modeles.shift();
var reg_plus_consultes = /{{([lL]es plus consultés\s*\|[^}]*}})/;
var m = reg_plus_consultes.exec(discussion);
if(m) { modeles.push(m[1]); }
var tab_anc_eval = new Array();
for(var i=0;i<modeles.length;i++)
{
try
{
modeles[i] = modeles[i].split("}}")[0];
var temp = modeles[i].split("|");
window.evaluation_multiprojets.project[i] = temp[0];
tab_anc_eval.push(temp[0]);
window.evaluation_multiprojets.avancement[i] = "?";
window.evaluation_multiprojets.importance[i] = "?";
if(temp.length >= 2) ev_getOldEval(temp[1], i);
if(temp.length >= 3) ev_getOldEval(temp[2], i);
if(temp.length >= 4) ev_getOldEval(temp[3], i);
window.evaluation_multiprojets.state[i] = true;
}
catch(e){alert(e);}
}
var reg_modele_multiprojet = /{{([wW]ikiprojet|[éÉ]valuation multiprojet)\s*\|([^}]*)}}/;
var regAv = /avancement\s*((\s\S.*)?)$/;
m = reg_modele_multiprojet.exec(discussion);
if(m)
{
var tab = m[2].split("|");
var i=0;
var ind=window.evaluation_multiprojets.project.length;
var tab_avancement=new Array();
while(i<tab.length)
{
var t = tab[i].split("=");
if(t.length == 2)
{
var mm = regAv.exec(t[0]);
if(mm)
{
if(mm[1] == "")
window.evaluation_multiprojets.avancement_global = ev_cleanAvancement(t[1].replace(/^\s+|\s+$/g, ''));
else
tab_avancement[mm[1].replace(/^\s+|\s+$/g, '')] = ev_cleanAvancement(t[1].replace(/^\s+|\s+$/g, ''));
}
else
{
window.evaluation_multiprojets.autres[t[0]] = t[1].replace(/^\s+|\s+$/g, '');
}
}
else if(t.length == 1)
{
var _proj =tab[i].replace(/^\s+|\s+$/g, '');
if(_proj in tab_anc_eval) { i+= 2 ; continue; }
window.evaluation_multiprojets.project[ind] =_proj;
if(i==tab.length-1) alert("Erreur de lecture du modèle {{éÉvaluation multiprojet}}");
window.evaluation_multiprojets.importance[ind] = ev_cleanImportance(tab[i+1].replace(/^\s+|\s+$/g, ''));
window.evaluation_multiprojets.avancement[ind] = null;
window.evaluation_multiprojets.state[ind] = true;
ind++;
i++;
}
i++;
}
for(var i=0; i<window.evaluation_multiprojets.project.length; i++)
{
if(window.evaluation_multiprojets.project[i] in tab_avancement)
window.evaluation_multiprojets.avancement[i] = tab_avancement[window.evaluation_multiprojets.project[i]];
}
}
}
function ev_cleanAvancement(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" || val=="E") return "ébauche";
return "?";
}
function ev_cleanImportance(val)
{
if(val.toLowerCase()=="maximum" || val.toLowerCase()=="maximale") return "maximum";
if(val.toLowerCase()=="élevée") return "élevée";
if(val.toLowerCase()=="moyenne") return "moyenne";
if(val.toLowerCase()=="faible") return "faible";
return "?";
}
function ev_getOldEval(str,i)
{
var params = str.split("=");
if(params[0]=="importance") window.evaluation_multiprojets.importance[i] = ev_cleanImportance(params[1]);
else if(params[0]=="avancement") window.evaluation_multiprojets.avancement[i] = ev_cleanAvancement(params[1]);
}
window.ev_setEvaluation = function()
{
//xx//document.getElementById("EvalButton").disabled = true;
wpEditPage("Discuter:" + mw.config.get( 'wgPageName' ), {}, ev_editFoo, ev_saveFoo, {});
};
function ev_editFoo(text, summary, doc, data)
{
summary = "by-script: "+ev_getSummary_multiprojects();
text = ev_suppr_anc_eval(text);
text = ev_process_multiprojects(text);
text = ev_remise_en_tete(text);
//console.log("***** ev_editFoo *** text ["+text+"] *****");
//console.log("***** ev_editFoo *** summary ["+summary+"] *****");
return { wpTextbox1: text, wpSummary: summary, data: data };
}
function ev_saveFoo()
{
//xx//document.getElementById("EvalButton").disabled = false;
}
function ev_getSummary_multiprojects()
{
var summary = " Multiprojet ("+window.evaluation_multiprojets.avancement_global+")";
for(var i=0; i<window.evaluation_multiprojets.project.length; i++)
{
if(window.evaluation_multiprojets.state[i])
{
summary += " "+window.evaluation_multiprojets.project[i] + "|" + window.evaluation_multiprojets.importance[i];
if(window.evaluation_multiprojets.avancement[i] != null)
summary += "|"+window.evaluation_multiprojets.avancement[i];
}
}
return summary+")";
}
function ev_suppr_anc_eval(text)
{
var regtxt =new RegExp("\\{\\{([W|w]ikiprojet [^\\}|]|[lL]es plus consultés)[^\\}]*\\}\\}", "g");
// return eval("text.replace(" + regtxt + ",'')")
var regtext_b = new RegExp("\\{\\{[éÉ]valuations[ _]WP1[^\\}\\{]*\\}\\}", "g");
return text.replace(regtxt, '').replace(regtext_b, '');
}
function ev_process_multiprojects(text)
{
var regtxt = /\{\{([wW]ikiprojet|[éÉ]valuation multiprojet)\s*\|[^\}]*\}\}/;
var newtxt = "{{Wikiprojet";
var regtodo=/\{\{([tT]odo\|?\*?|[àÀ] faire\|?\*?)\}\}/;
var ok = false;
for(var i=0; i<window.evaluation_multiprojets.project.length; i++)
{
if(window.evaluation_multiprojets.state[i])
{
newtxt += "\n|"+window.evaluation_multiprojets.project[i]+"|"+window.evaluation_multiprojets.importance[i];
if(window.evaluation_multiprojets.avancement[i] != null)
newtxt += "|avancement "+window.evaluation_multiprojets.project[i]+"="+window.evaluation_multiprojets.avancement[i];
ok = true;
}
}
ok = ok || (window.evaluation_multiprojets.avancement_global != "?");
newtxt += "\n|avancement="+window.evaluation_multiprojets.avancement_global;
for(var i in window.evaluation_multiprojets.autres)
{
newtxt += "\n|"+i+"="+window.evaluation_multiprojets.autres[i];
}
newtxt += "\n}}";
if(ok)
{
if(regtxt.test(text))
text = text.replace(regtxt, newtxt);
else
text = newtxt + "\n" + text;
text = text.replace(regtodo, "");
}
return text;
}
function ev_remise_en_tete(text)
{
var reg = /(\{\{[tT]raduit de\s*\|[^}]*\}\})/;
var m = reg.exec(text);
if(m)
{
var left = RegExp.leftContext;
var right = RegExp.rightContext;
text = m[1]+"\n"+left.replace(/\s+$/, '')+"\n"+right.replace(/^\s+/, '');
}
return text;
}
// URL encode
if (typeof(wpURLEncode) == "undefined") {
wpURLEncode = function(string) {
if (!string) return "";
return string.replace(/ /g, "_").replace(/[\x00-\x2C\x3B-\x40\x5B-\x5E\x60\x7B-\uFFFF]/g,
function (match) {
var c = match.charCodeAt(0);
var s = new Array();
if (c < 0x80) s.push(c);
else if (c < 0x0800) s.push(c >> 6 | 0xC0, c & 0x3F | 0x80);
else if (c < 0x010000) s.push(c >> 12 | 0xE0, c >> 6 & 0x3F | 0x80, c & 0x3F | 0x80);
else if (c < 0x110000) s.push(c >> 18 | 0xF0, c >> 12 & 0x3F | 0x80, c >> 6 & 0x3F | 0x80, c & 0x3F | 0x80);
for (var i = 0, len = s.length; i < len; i++)
s[i] = (s[i] < 16 ? "%0" : "%") + s[i].toString(16).toUpperCase();
return s.join("");
});
};
}
// getElementById
if (typeof(getElementById) == "undefined") {
getElementById = function(id) {
var element = null;
if (this.id == id) {
element = this;
element.getElementsByClassName = document.getElementsByClassName;
}
for (var child = this.firstChild; !element && child; child = child.nextSibling)
if (child.nodeType == 1) {
child.getElementById = getElementById;
element = child.getElementById(id);
}
return element;
};
}
// HTTP
if (typeof(httpRequest) == "undefined") {
httpRequest = function(url, options, data) {
// options.async
// options.method
// options.headers
// options.content
// options.onSuccess(request,data)
// options.onFailure(request,data)
var request;
try {
request = new XMLHttpRequest();
} catch(e) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
request = false;
}
}
}
if (request) {
request.onreadystatechange = function() {
if (request.readyState == 4)
httpComplete(request, options, data);
};
request.open(options.method ? options.method : "GET", url, options.async == false ? false : true);
if (options.headers) {
for (var field in options.headers)
request.setRequestHeader(field, options.headers[field]);
}
request.send(options.content ? options.content : null);
}
return request;
};
}
if (typeof(httpComplete) == "undefined") {
httpComplete = function(request, options, data) {
if (request.status >= 200 && request.status < 300) {
if (options.onSuccess) {
var contentType = request.getResponseHeader("Content-Type");
var regex = new RegExp(/^([^\/]+\/[^;]+).*/);
contentType = contentType.replace(regex, "$1");
if (contentType == "text/html") {
var doc = document.createElement("div");
doc.innerHTML = request.responseText;
doc.getElementsByClassName = document.getElementsByClassName;
doc.getElementById = getElementById;
options.onSuccess(doc, data);
} else if (contentType == "text/xml") {
var xml = null;
if (navigator.appName == "Microsoft Internet Explorer") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(request.responseText);
} else if (window.DOMParser) {
xml = new DOMParser();
xml = xml.parseFromString(request.responseText, 'text/xml');
}
options.onSuccess(xml, data);
} else {
options.onSuccess(request, data);
}
}
} else if (options.onFailure) {
options.onFailure(request, data);
} else {
alert(request.statusText);
}
};
}
// Edit WP page
if (typeof(wpEditPage) == "undefined") {
wpEditPage = function(title, params, editFunction, saveFunction, data) {
//console.log("***** wpEditPage *** in *****");
var url = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) + '?title=' + wpURLEncode(title)
+ '&action=edit';
for (var name in params)
url += '&' + name + '=' + wpURLEncode(params[name]);
//console.log("***** wpEditPage *** url to edit ["+url +"] *****");
var options = { onSuccess: wpSavePage };
data.title = title;
data.editFunction = editFunction;
data.saveFunction = saveFunction;
//console.log("***** wpEditPage *** calling httpRequest *****");
httpRequest(url, options, data);
//console.log("***** wpEditPage *** out *****");
};
}
// Save WP page
if (typeof(wpSavePage) == "undefined") {
wpSavePage = function(doc, data) {
//console.log("***** wpSavePage *** in *****");
//console.log("***** wpSavePage *** doc ["+doc+"]*****");
var inputs = doc.getElementById('editform').getElementsByTagName('input');
var editform = new Array();
for (var i = 0, len = inputs.length; i < len; i++)
{
var value = inputs[i].value;
if(inputs[i].type != "checkbox" || inputs[i].checked)
editform[inputs[i].name] = value;
}
var wpTextbox1 = doc.getElementById('wpTextbox1').value;
var wpSummary = editform['wpSummary'];
var regex = new RegExp(/var wgArticleId = "(\d+)";(?:\n.*)*var wgCurRevisionId = "(\d+)";/m);
var match = regex.exec(doc.textContent);
if (match) {
data.pageId = match[1];
data.curRevId = match[2];
}
//console.log("***** wpSavePage *** call editFunction *****");
var edit = data.editFunction(wpTextbox1, wpSummary, doc, data);
if (typeof(edit.error) == "undefined") {
//console.log("***** wpSavePage *** after editFunction no error *****");
editform['wpTextbox1'] = edit.wpTextbox1;
editform['wpSummary'] = edit.wpSummary;
var params = [ 'wpTextbox1', 'wpSummary', 'wpSection',
'wpStarttime', 'wpEdittime', 'wpEditToken', 'wpSave' ];
if(editform['wpWatchthis']) params.push('wpWatchthis');
var content = params.map(function(name) { return name + '=' + encodeURIComponent(editform[name]); }).join("&");
var url = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) + '?title=' + wpURLEncode(data.title)
+ '&action=submit';
var headers = new Object();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
var options = { method: 'POST', headers: headers, content: content, onSuccess: data.saveFunction };
data = edit.data;
httpRequest(url, options, data);
} else {
//console.log("***** wpSavePage *** after editFunction with error *****");
edit.error(edit.data);
}
};
}
var wpfunctions = 1;
$(function () {
//console.log("*** ENTREE de script ***");
var title = "Comparaison portail et articles évalués";
var portail = "", catEval = "", updatePage="";
window.document.title = title;
$('#firstHeading').html(title);
var bInitForm=true;
var params = location.search.substr(1).split("&");
for (var i = 0; i < params.length; i++) {
var nameVal = params[i].split("=");
if (nameVal.length < 2) continue;
if (nameVal[0] == "portail")
portail = decodeURIComponent(nameVal[1]);
else if (nameVal[0] == "cateval")
catEval = decodeURIComponent(nameVal[1]);
/***
else if (nameVal[0] == "updatepage")
{
updatePage = decodeURIComponent(nameVal[1]);
//console.log("*** TROUVE page " + updatePage + " ***");
bInitForm=false;
} ***/
}
//if (bInitForm == true)
cpeInitForm(portail, catEval);
/***
else
//console.log("*** appel cpeUpdatePage ***");
cpeUpdatePage(updatePage,portail,catEval); ***/
});
//console.log("*** SORTIE de script ***");
}