MediaWiki:Gadget-LiveRC.js/Extensions/MarkQuestionableExtension.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) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
--------------------------------------------------------------------------------------
---------LLLL---------III--------------------------RRRRRRRRRR--------CCCCC------------
---------LLLL---------III--------------------------RRRRRRRRRRRR----CCCCCCCCC----------
---------LLLL--------------------------------------RRR------RRR---CCC-----CCC---------
---------LLLL---------III--VV-----VV--EEEEEEEEE----RRR------RRR--CCC------------------
---------LLLL---------III---VV---VV---EEE----------RRRRRRRRRRR---CCC------------------
---------LLLL---------III---VV---VV---EEEEEE-------RRRRRRRRRR----CCC------------------
---------LLLL---------III----VV-VV----EEEEEE-------RRR-----RRR----CCC-----CCC---------
---------LLLLLLLLLLL--III----VVVVV----EEE----------RRR------RRR----CCCCCCCCC----------
---------LLLLLLLLLLL--III-----VVV-----EEEEEEEEE----RRR-------RRR-----CCCCC------------
--------------------------------------------------------------------------------------
'''Extension de LiveRC'''
// Instaure un système de modifications marquées comme douteuses
// Script de base = [[Utilisateur:0x010C/script/DrapeauJaune.js]]
{{Catégorisation JS|LiveRC}}
************************************************************************************************************************************************ */
if (typeof(LiveRC_AddHook)==="function" ) { // DÉBUT IF
LiveRC_Config["InstalledLiveRCExtensions"].push("MarkQuestionable");
/* ************************************************************************************************************************************************ */
/* </source>
== Variables globales ==
<source lang=javascript> */
lrcParams["MQE_CheckPage"] = "Wikipédia:Patrouille RC/Modifications à relire";
lrcParams["MQE_HideCheckPageEdits"] = true;
lrcParams["MQE_ActivateInDiffs"] = true;
lrcIcons["MQE_UnpatrolledIcon"] = {
type:0,
src:"thumb/2/2f/Crystal_Clear_app_help_index.svg/16px-Crystal_Clear_app_help_index.svg.png",
width:16,
height:16
}
lrcTexts["MQE_UnpatrolledIcon_Title"] = "Cette modification fait l’objet d’une demande de vérification";
lrcTexts["MQE_Unpatrollink_Text"] = "Marquer comme douteuse";
lrcTexts["MQE_Unpatrollink_Title"] = "Demander une vérification de cette modification";
lrcTexts["MQE_Patrollink_Title"] = "Approuver cette modification";
lrcTexts["MQE_Unpatrolled_Reason"] = "Raison de la demande de vérification";
lrcTexts["MQE_Unpatrolled_pop"] = "Marquée comme douteuse";
lrcTexts["MQE_Patrolled_Reason"] = "Commentaire de la relecture";
lrcTexts['liveQuestionableTitle'] = 'Modifications douteuses';
UnTranslatedTexts["MQE_Unpatrolled_resume"] = "Marquée comme douteuse";
lrcParamDesc["DescMQE_CheckPage"] = "[MarkQuestionable] Page de suivi des modifications douteuses";
lrcParamDesc["DescMQE_HideCheckPageEdits"] = "[MarkQuestionable] Masquer les modifications faites sur la page de suivi des modifications douteuses";
lrcParamDesc["DescMQE_ActivateInDiffs"] = "[MarkQuestionable] Activer dans les diff normaux (nécessite DiffExtension)";
lrcParamDesc["DescMQE_UnpatrolledIcon"] = "[MarkQuestionable] Modification douteuse";
lrcParamDesc["DescMQE_UnpatrolledIcon_Title"] = "Modification douteuse";
lrcParamDesc["DescMQE_Unpatrollink_Text"] = "Texte du lien pour marquer une modification comme douteuse";
lrcParamDesc["DescMQE_Unpatrollink_Title"] = "Infobulle du lien pour marquer une modification comme douteuse";
lrcParamDesc["DescMQE_Patrollink_Title"] = "Infobulle du lien pour marquer une modification comme relue"
lrcParamDesc["DescMQE_Unpatrolled_Reason"] = "Texte de la demande de raison de vérification";
lrcParamDesc["DescMQE_Unpatrolled_pop"] = "Confirmation du marquage d’une modification comme douteuse";
lrcParamDesc["DescMQE_Patrolled_Reason"] = "Texte de la vérification";
lrcParamDesc["DescMQE_Unpatrolled_resume"] = "[MarkQuestionable] Résume de modification du marquage d’une modification comme douteuse";
lrcParamDesc['DescDisplayliveQuestionable'] = 'Afficher le journal des modifications douteuses';
lrcParamDesc['DescliveQuestionableTitle'] = 'Titre de la liste de suivi des modifications douteuses';
LiveRC_addNeededMessages("markaspatrolleddiff");
LiveRC_addNeededMessages("markedaspatrolled");
LiveRC_Config["LimitationsRight"]["MarkQuestionable"] = "autopatrol";
LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"] = {
"Values" : {},
"DefaultState" : true
}
/* </source>
== Fonctions utilitaires ==
<source lang=javascript> */
function LRCMQE_parselink(chaine){
if(!chaine) return "";
var precedent;
var reg = new RegExp("\\[\\[([^\\[\\]]+)\\|([^\\[\\]]+)\\]\\]");
do {
precedent = chaine;
chaine = chaine.replace(reg, '<a href="'+mw.config.get("wgServer")+mw.config.get("wgArticlePath")+'">$2</a>');
} while(chaine != precedent);
reg = new RegExp("\\[\\[([^\\[\\]]+)\\]\\]");
do {
precedent = chaine;
chaine = chaine.replace(reg, '<a href="'+mw.config.get("wgServer")+mw.config.get("wgArticlePath")+'">$1</a>');
} while(chaine != precedent);
return chaine;
}
/* </source>
== Vérification initiale du statut d'un diff ==
<source lang=javascript> */
function LRCMQE_Init() {
if(!lrcUserCan("MarkQuestionable")) return;
var DivTitle = document.getElementById('mw-diff-ntitle1');
if(!DivTitle) return;
var link = DivTitle.getElementsByTagName('a')[0];
if(!link) return;
var oldid = lrcGetArgFromURL(link.href, "oldid");
var pagetitle = lrcGetArgFromURL(link.href, "title").replace(/_/g, " ");
var CheckPage = lrcMakeParam("MQE_CheckPage");
var URL = lrcGetAPIURL({format:'xml',action:'query',prop:'revisions',rvlimit:1,rvprop:'content',titles:CheckPage,continue:""});
wpajax.http({url: URL, onSuccess: LRCMQE_CheckPatrolStatus, oldid:oldid, pagetitle:pagetitle});
}
function LRCMQE_CheckPatrolStatus(Req, data){
var oldid = data.oldid;
var FoundOldid = false;
var comment = "";
var ObjXML = Req.responseXML;
var R = ObjXML.getElementsByTagName('rev')[0];
if(R){
var wikicode = (R.firstChild ? R.firstChild.nodeValue : "");
if(wikicode){
var pattern = new RegExp("\\* ?\\[\\[Sp(é|e)cial:Diff\\/"+oldid+"\\|[^\\[\\]]+\\]\\]");
if(pattern.test(wikicode)){
var lines = wikicode.split('\n');
for(var i=0,l=lines.length; i<l;i++){
if(pattern.test(lines[i])){
FoundOldid = true;
comment = lines[i].replace(pattern, "");
break;
}
}
}
}
}
LRCMQE_UpdatePatrolLink(oldid, data.pagetitle, FoundOldid, comment);
}
function LRCMQE_UpdatePatrolLink(oldid, pagetitle, FoundOldid, comment){
var TargetDiv = document.getElementById('mw-diff-ntitle4');
var span = document.createElement('span');
span.className = "unpatrollink";
span.appendChild(document.createTextNode("["));
if(FoundOldid===true){
var imagespan = document.createElement('span');
imagespan.id = "unpatrollink";
imagespan.innerHTML = lrcMakeIcon("MQE_UnpatrolledIcon", {after:" "}) + LRCMQE_parselink(comment);
span.appendChild(imagespan);
}else{
var link = document.createElement('a');
link.id = "unpatrollink";
link.style.color = "darkgreen";
link.style.cursor = "pointer";
link.href= "javascript:;";
link.onclick = function(){ LRCMQE_MarkUnPatrolled(oldid, pagetitle); return false; }
link.innerHTML = lrcMakeText("MQE_Unpatrollink_Text");
link.title = lrcMakeText("MQE_Unpatrollink_Title");
span.appendChild(link);
}
span.appendChild(document.createTextNode("]"));
var patrollink = lrcGetElementsByClass('patrollink',TargetDiv,null)[0];
if(patrollink){
patrollink.parentNode.insertBefore(document.createElement('br'), patrollink);
var patrollink = patrollink.getElementsByTagName('a')[0];
patrollink.id = "patrollink"
patrollink.style.color = "darkgreen";
patrollink.title = lrcMakeText("MQE_Patrollink_Title");
patrollink.onclick = function(){ lrcPatrolEdit(this); LRCMQE_MarkPatrolled(oldid, pagetitle); return false; }
}else if(FoundOldid===true){
var patrolspan = document.createElement('span');
patrolspan.className = 'patrollink';
var newpatrollink = document.createElement('a');
newpatrollink.innerHTML = lrcGetMediawikiMessage("markaspatrolleddiff", true);
newpatrollink.title = lrcMakeText("MQE_Patrollink_Title");
newpatrollink.onclick = function(){ LRCMQE_MarkPatrolled(oldid, pagetitle); return false; }
newpatrollink.id = "patrollink";
newpatrollink.style.color = "darkgreen";
newpatrollink.style.cursor = "pointer";
patrolspan.appendChild(document.createTextNode("["));
patrolspan.appendChild(newpatrollink);
patrolspan.appendChild(document.createTextNode("]"));
TargetDiv.appendChild(document.createElement('br'));
TargetDiv.appendChild(patrolspan);
}else{
TargetDiv.appendChild(document.createElement('br'));
}
TargetDiv.appendChild(span);
}
/* </source>
== Marquer comme douteuse ==
<source lang=javascript> */
function LRCMQE_MarkUnPatrolled(oldid, pagetitle){
var CheckPage = lrcMakeParam("MQE_CheckPage");
wpajax.http({ url: lrcGetAPIURL({format:'xml',action:'query',prop:'info',meta:'tokens',type:'csrf',inprop:'protection',titles:CheckPage}),
onSuccess: LRCMQE_MarkUnPatrolled_gettoken,
oldid:oldid,
page:CheckPage,
pagetitle:pagetitle
});
}
function LRCMQE_MarkUnPatrolled_gettoken(Req, data){
var ObjetXML = Req.responseXML;
var Isprotected = false;
var PR = ObjetXML.getElementsByTagName("pr");
for(var a=0,l=PR.length;a<l;a++){
var Type = PR[a].getAttribute("type");
var Level = PR[a].getAttribute("level");
if(Type=="edit" && !lrcUserHasGroup(Level)) Isprotected = true;
}
if(Isprotected){
LiveRC_alert("<b>"+lrcMakeText("PROTECTEDPAGE").split("$1").join(page)+"</b>");
return;
}
function LRCMQE_MarkUnPatrolled_getrawtext(comment){
var CheckPage = lrcMakeParam("MQE_CheckPage");
wpajax.http({ url: lrcGetUglyPageURL(CheckPage, "&action=raw"),
onSuccess: LRCMQE_MarkUnPatrolled_adddiff,
page:data.page,
oldid:data.oldid,
token:ObjetXML.getElementsByTagName('tokens')[0].getAttribute('csrftoken'),
comment:comment,
pagetitle:data.pagetitle
});
}
LiveRC_prompt(lrcMakeText("MQE_Unpatrolled_Reason"), LRCMQE_MarkUnPatrolled_getrawtext);
}
function LRCMQE_MarkUnPatrolled_adddiff(Req, data){
var page = data.page;
var oldid = data.oldid;
var pagetitle = data.pagetitle
var token = data.token
var wikicode = Req.responseText;
var comment = data.comment;
var newline = "* [[Special:Diff/"+oldid+"|"+data.pagetitle+" <small>(oldid="+oldid+")</small>]] : "+comment;
var newwikicode = wikicode + "\n" + newline;
var EditParam = {};
EditParam["text"] = newwikicode;
EditParam["summary"] = lrcMakeText("RESUMESTART") + "[[Special:Diff/"+oldid+"|"+pagetitle+"]] = " +lrcMakeText("MQE_Unpatrolled_resume") + " ("+comment+")";
EditParam["minor"] = "1";
EditParam["title"] = page;
EditParam["watchlist"] = "preferences";
if(lrcMakeParam("BypassWatchdefault")) EditParam["watchlist"] = "nochange";
EditParam["token"] = token;
var Params = [];
for(var Param in EditParam){
Params.push(Param+"="+encodeURIComponent(EditParam[Param]));
}
Params = Params.join("&");
var headers = {'Content-Type':'application/x-www-form-urlencoded'};
wpajax.http({ url: lrcGetAPIURL('action=edit'),
method: "POST", headers: headers,
data: Params,
onSuccess: LRCMQE_MarkUnPatrolled_proceed,
params:EditParam,
oldid:oldid,
comment:comment,
pagetitle:pagetitle
});
}
function LRCMQE_MarkUnPatrolled_proceed(Req, data){
var oldid = data.oldid
var text = "<b>"+LRCMQE_parselink("[[Special:Diff/"+oldid+"]]") +" : "+ lrcMakeText("MQE_Unpatrolled_pop")+ "</b> <small>("+data.comment+")</small>";
LiveRC_alert(text);
LRCMQE_MarkUnPatrolled_updatelinks(oldid, data.pagetitle, data.comment);
}
function LRCMQE_MarkUnPatrolled_updatelinks(oldid, pagetitle, comment){
var unpatrollink = document.getElementById('unpatrollink');
var unpatrolspan = unpatrollink.parentNode;
var imagespan = document.createElement('span');
imagespan.id = "unpatrollink";
imagespan.innerHTML = lrcMakeIcon("MQE_UnpatrolledIcon", {after:" "}) + LRCMQE_parselink(comment);
unpatrolspan.insertBefore(imagespan, unpatrollink);
unpatrolspan.removeChild(unpatrollink);
var patrollink = document.getElementById('patrollink');
if(patrollink){
patrollink.parentNode.style.display = "";
}else{
var patrolspan = document.createElement('span');
patrolspan.className = 'patrollink';
var newpatrollink = document.createElement('a');
newpatrollink.innerHTML = lrcGetMediawikiMessage("markaspatrolleddiff", true);
newpatrollink.title = lrcMakeText("MQE_Patrollink_Title");
newpatrollink.onclick = function(){ LRCMQE_MarkPatrolled(oldid, pagetitle); return false; }
newpatrollink.id = "patrollink"
newpatrollink.style.color = "darkgreen";
newpatrollink.style.cursor = "pointer";
patrolspan.appendChild(document.createTextNode("["));
patrolspan.appendChild(newpatrollink);
patrolspan.appendChild(document.createTextNode("]"));
unpatrolspan.parentNode.insertBefore(patrolspan, unpatrolspan);
}
}
/* </source>
== Marquer comme relue ==
<source lang=javascript> */
function LRCMQE_MarkPatrolled(oldid, pagetitle){
var CheckPage = lrcMakeParam("MQE_CheckPage");
wpajax.http({ url: lrcGetAPIURL({format:'xml',action:'query',prop:'info',meta:'tokens',type:'csrf',inprop:'protection',titles:CheckPage}),
onSuccess: LRCMQE_MarkPatrolled_gettoken,
oldid:oldid,
page:CheckPage,
pagetitle:pagetitle
});
}
function LRCMQE_MarkPatrolled_gettoken(Req, data){
var ObjetXML = Req.responseXML;
var Isprotected = false;
var PR = ObjetXML.getElementsByTagName("pr");
for(var a=0,l=PR.length;a<l;a++){
var Type = PR[a].getAttribute("type");
var Level = PR[a].getAttribute("level");
if(Type=="edit" && !lrcUserHasGroup(Level)) Isprotected = true;
}
if(Isprotected){
LiveRC_alert("<b>"+lrcMakeText("PROTECTEDPAGE").split("$1").join(page)+"</b>");
return;
}
function LRCMQE_MarkPatrolled_getrawtext(comment){
var CheckPage = lrcMakeParam("MQE_CheckPage");
wpajax.http({ url: lrcGetUglyPageURL(CheckPage, "&action=raw"),
onSuccess: LRCMQE_MarkPatrolled_deletediff,
page:data.page,
oldid:data.oldid,
token:ObjetXML.getElementsByTagName('tokens')[0].getAttribute('csrftoken'),
comment:comment,
pagetitle:data.pagetitle
});
}
LiveRC_prompt(lrcMakeText("MQE_Patrolled_Reason"), LRCMQE_MarkPatrolled_getrawtext);
}
function LRCMQE_MarkPatrolled_deletediff(Req, data){
var page = data.page;
var oldid = data.oldid;
var pagetitle = data.pagetitle;
var token = data.token
var comment = data.comment;
var wikicode = Req.responseText;
var newwikicode = [];
var pattern = new RegExp("\\* ?\\[\\[Sp(é|e)cial:Diff\\/"+oldid+"\\|[^\\[\\]]+\\]\\]");
var lines = wikicode.split('\n');
for(var i=0,l=lines.length; i<l;i++){
if(!pattern.test(lines[i])){
newwikicode.push(lines[i]);
}
}
newwikicode = newwikicode.join("\n");
var EditParam = {};
EditParam["text"] = newwikicode;
EditParam["summary"] = lrcMakeText("RESUMESTART") + "[[Special:Diff/"+oldid+"|"+pagetitle+"]] = " +lrcGetMediawikiMessage("markedaspatrolled") + " ("+comment+")";
EditParam["minor"] = "1";
EditParam["title"] = page;
EditParam["watchlist"] = "preferences";
if(lrcMakeParam("BypassWatchdefault")) EditParam["watchlist"] = "nochange";
EditParam["token"] = token;
var Params = [];
for(var Param in EditParam){
Params.push(Param+"="+encodeURIComponent(EditParam[Param]));
}
Params = Params.join("&");
var headers = {'Content-Type':'application/x-www-form-urlencoded'};
wpajax.http({ url: lrcGetAPIURL('action=edit'),
method: "POST", headers: headers,
data: Params,
onSuccess: LRCMQE_MarkPatrolled_proceed,
params:EditParam,
oldid:oldid,
comment:comment,
pagetitle:pagetitle
});
}
function LRCMQE_MarkPatrolled_proceed(Req, data){
var oldid = data.oldid
var text = "<b>"+LRCMQE_parselink("[[Special:Diff/"+oldid+"]]") +" : "+ lrcGetMediawikiMessage("markedaspatrolled", true) + "</b> <small>("+data.comment+")</small>";
LiveRC_alert(text);
LRCMQE_MarkPatrolled_updatelinks(oldid, data.pagetitle);
}
function LRCMQE_MarkPatrolled_updatelinks(oldid, pagetitle){
var patrollink = document.getElementById('patrollink');
patrollink.parentNode.style.display = "none";
var unpatrollink = document.getElementById('unpatrollink');
var unpatrolspan = unpatrollink.parentNode;
var link = document.createElement('a');
link.id = "unpatrollink";
link.href= "javascript:;";
link.onclick = function(){ LRCMQE_MarkUnPatrolled(oldid, pagetitle); return false; }
link.innerHTML = lrcMakeText("MQE_Unpatrollink_Text");
link.title = lrcMakeText("MQE_Unpatrollink_Title");
link.style.color = "darkgreen";
unpatrolspan.insertBefore(link, unpatrollink);
unpatrolspan.removeChild(unpatrollink);
}
/* </source>
== Gestion d'une modif "MarkQuestionable" dans la table RC de LiveRC ==
<source lang=javascript> */
function LRCMQE_AfterRC(Args){
var TRid = Args.id;
var TR = document.getElementById(TRid);
var rc = Args.rc;
var title = rc.title;
var state = rc.state;
if( lrcHasState(state, "EXTERNAL") || lrcHasState(state, "LOG") || title !== lrcMakeParam("MQE_CheckPage")) return;
if(lrcMakeParam("DescMQE_HideCheckPageEdits") && TR) TR.parentNode.removeChild(TR);
LRCMQE_getEditTR(rc);
}
function LRCMQE_getEditTR(rc){
var allquestionnablevars = LRCMQE_getInfosFromComment(rc.comment);
if(!allquestionnablevars) return;
var questionnable = allquestionnablevars.questionnable;
var oldid = allquestionnablevars.oldid;
var pagetitle = allquestionnablevars.pagetitle;
var patrolcomment = allquestionnablevars.patrolcomment;
var TRs = document.getElementById("tabRC").getElementsByTagName("tr");
for(var a=0,l=TRs.length;a<l;a++){
var TR = TRs[a];
var id = TR.id;
if(id.match(new RegExp("\d*_"+oldid))!==null){
if(questionnable){
lrcAddClass(TR, "RcQuestionable");
LRCMQE_addQuestionnableIcon(TR, patrolcomment);
}else{
lrcRemoveClass(TR, "RcQuestionable");
LRCMQE_removeQuestionnableIcon(TR);
}
}
}
}
function LRCMQE_addQuestionnableIcon(TR, patrolcomment){
var DiffLink = lrcGetElementsByClass("diffDiffLink", TR, "a")[0];
if(!DiffLink) return;
var ParentSpan = DiffLink.parentNode;
var Span = document.createElement('span');
Span.className = "UnpatrolledIcon";
Span.innerHTML = lrcMakeIcon("MQE_UnpatrolledIcon", {after:" "})
ParentSpan.insertBefore(Span,DiffLink);
var IMG = Span.getElementsByTagName('img')[0];
if(IMG) IMG.title = IMG.title + " (" + patrolcomment + ")";
}
function LRCMQE_removeQuestionnableIcon(TR){
var UnpatrolledIcon = lrcGetElementsByClass("UnpatrolledIcon", TR, "span")[0];
if(UnpatrolledIcon) UnpatrolledIcon.parentNode.removeChild(UnpatrolledIcon);
}
/* </source>
== Mise en place de la liste de suivi des modifs douteuses ==
<source lang=javascript> */
function LRCMQE_AfterSpecialLogList(){
lrcAddSpecialLogList("liveQuestionable", true, false);
}
/* </source>
=== Mise à jour de la liste de suivi des modifs douteuses ===
<source lang=javascript> */
function LRCMQE_getInfosFromComment(comment){
var allquestionnablevars = false;
var difflinkpattern = new RegExp("\\[\\[Special:Diff[^\\|]*\\|[^\\]]*\\]\\]", "g");
var difflink = comment.match(difflinkpattern);
if(difflink !== null){
var wikitextlink = difflink[0];
var oldid = wikitextlink.split("[[Special:Diff/").join("");
oldid = oldid.replace(/\|.*/g, "");
var pagetitle = wikitextlink.split("[[Special:Diff/"+oldid+"|").join("").split("]]").join("");
var questionnable = (comment.indexOf(lrcGetMediawikiMessage("markedaspatrolled")) === -1);
var patrolcomment = comment.split(wikitextlink)[1];
if(questionnable) patrolcomment = patrolcomment.split(lrcMakeText("MQE_Unpatrolled_resume"))[1];
else patrolcomment = patrolcomment.split(lrcGetMediawikiMessage("markedaspatrolled"))[1];
patrolcomment = patrolcomment.replace(/ *\(/g, "").replace(/\)$/, "");
allquestionnablevars = {questionnable:questionnable,oldid:oldid,pagetitle:pagetitle,patrolcomment:patrolcomment};
}
return allquestionnablevars;
}
function LRCMQE_AfterSpecialLogListUpdated(Args){
var TRid = Args.id;
var TR = document.getElementById(TRid);
var rc = Args.rc;
var timestamp = rc.timestamp;
var title = rc.title;
var state = rc.state;
var comment = rc.comment;
if( lrcHasState(state, "EXTERNAL") || lrcHasState(state, "LOG") || title !== lrcMakeParam("MQE_CheckPage")) return;
var allquestionnablevars = LRCMQE_getInfosFromComment(comment);
if(allquestionnablevars){
var questionnable = allquestionnablevars.questionnable;
var oldid = allquestionnablevars.oldid;
var pagetitle = allquestionnablevars.pagetitle;
var patrolcomment = allquestionnablevars.patrolcomment;
if(questionnable){ // add diff to the list)
rc.questionableargs = allquestionnablevars;
if(!LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle]){
LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle] = {};
LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle].edits = [];
}
LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle].ts = timestamp;
lrcSubFollowAddItem("liveQuestionable", pagetitle, rc);
}else{
var pageitem = LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle];
if(pageitem){
var rcList = LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle]["edits"];
if(rcList.length!==0){
for(var a=0,l=rcList.length;a<l;a++){
var ThisQuestionnable = rcList[a].questionableargs;
if(ThisQuestionnable.oldid !== oldid) continue;
LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle]["edits"].splice(a,1);
}
if(LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][pagetitle]["edits"].length===0)
lrcSubFollowDelete("liveQuestionable", pagetitle);
}
}
}
LRCMQE_AfterAllSpecialLogListUpdated();
}
}
function LRCMQE_AfterAllSpecialLogListUpdated(){
lrcDisplayDebug("Update list (liveQuestionable)");
var tempAr = [];
for(var title in LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"]){
if(!LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"].hasOwnProperty(title)) continue;
if(LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][title].edits.length === 0) continue;
var timestamp = LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"][title].ts;
var Line = document.createElement('li');
Line.id = 'questionable-' + timestamp;
var TS = document.createElement('span');
TS.innerHTML = getTimeTag(timestamp);
var uremove = document.createElement('a');
uremove.className = "hidelineLink";
uremove.href = "javascript:;";
uremove.title = lrcMakeText("HIDE_THIS");
uremove.onclick = function(){ lrcSubFollowDelete("liveQuestionable", title, LRCMQE_AfterAllSpecialLogListUpdated); };
uremove.innerHTML = 'x';
var watchbutton = document.createTextNode(' · ');
if(lrcGetFlowStatusForAction(title, "watch")) watchbutton = lrcCreateWatchPageLink(title, LiveRC_Config["SpecialLogListConfig"]["liveSuivi"]["Values"][title], 0);
var sdelete = lrcGetDeleteLink({title:title});
var sarti = lrcGetPageLink({title:title});
var MoreLink = LRCMQE_lrcGetAllQuestionable(title);
var Small = document.createElement('small');
Small.appendChild(uremove);
Small.appendChild(document.createTextNode(' · '));
Small.appendChild(TS);
Small.appendChild(document.createTextNode(' : '));
Small.appendChild(watchbutton);
if(sdelete){
Small.appendChild(document.createTextNode(' • '));
Small.appendChild(sdelete);
}
Small.appendChild(document.createTextNode(' • '));
Line.appendChild(Small);
Line.appendChild(sarti);
if(MoreLink) Line.appendChild(MoreLink);
tempAr.push(Line);
}
tempAr = lrcSortFollow(tempAr);
var liveQuestionable = document.getElementById('liveQuestionable');
if(!liveQuestionable) return;
liveQuestionable.innerHTML = "";
var List = document.createElement('ul');
List.className = "FollowList";
var len = tempAr.length;
for(var n=(tempAr.length)-1; n>=0; n--){
if(tempAr[n]) List.appendChild(tempAr[n]);
}
liveQuestionable.appendChild(List);
}
function LRCMQE_lrcGetAllQuestionable(title){
var GlobalVar = LiveRC_Config["SpecialLogListConfig"]["liveQuestionable"]["Values"];
if(!GlobalVar[title]) return false;
var edits = GlobalVar[title].edits;
if(edits.length<1) return false;
var display = ( GlobalVar[title].display ? '' : 'none');
var SubListSpan = document.createElement('span');
SubListSpan.appendChild(document.createTextNode(' - '+edits.length));
var ToggleLink = document.createElement('a');
ToggleLink.className = "FollowSublistToggleLink";
ToggleLink.href="javascript:;";
ToggleLink.onclick = function(){ lrcSubFollowShowHide(this, "liveQuestionable", title); };
ToggleLink.title = lrcMakeText("FollowSublistToggleTitle");
ToggleLink.innerHTML = '<b>±</b>';
SubListSpan.appendChild(ToggleLink);
var SubList = document.createElement('ul');
SubList.className = "FollowSublist";
SubList.style.display = display;
SubListSpan.appendChild(SubList);
var Lines = [];
for(var a=0,l=edits.length;a<l;a++){
var thisedit = edits[a];
var questionableargs = thisedit.questionableargs;
var Line = document.createElement('span');
Line.innerHTML = questionableargs.oldid;
Line.appendChild(document.createTextNode(' – '));
var diff = document.createElement('a');
diff.className = "lrc_PreviewLink diffDiffLink";
diff.href = lrcGetUglyPageURL(questionableargs.pagetitle, '&diff=prev&oldid='+questionableargs.oldid+'&unhide=1');
diff.onclick = function(){ liveDiff(questionableargs.pagetitle, "prev", questionableargs.oldid ); return false; };
diff.title = lrcMakeText("DIFF_TIP");
diff.innerHTML = lrcMakeText("DIFF_SHORT");
Line.appendChild(diff);
Line.appendChild(document.createTextNode(' : '));
var comment = document.createElement('span');
comment.innerHTML = '<small>'+questionableargs.patrolcomment+'</small>';
Line.appendChild(comment);
Lines.push(Line);
}
for(var a=0,l=Lines.length;a<l;a++){
var Li = document.createElement('li');
Li.appendChild(Lines[a]);
SubList.appendChild(Li);
}
return SubListSpan;
}
/* </source>
== Hooks ==
<source lang=javascript> */
LiveRC_AddHook("AfterSpecialLogList", LRCMQE_AfterSpecialLogList);
LiveRC_AddHook("AfterRC", LRCMQE_AfterRC);
LiveRC_AddHook("AfterSpecialLogListUpdated", LRCMQE_AfterSpecialLogListUpdated);
LiveRC_AddHook("AfterAllSpecialLogListUpdated", LRCMQE_AfterAllSpecialLogListUpdated);
LiveRC_AddHook("AfterPreviewDiff", LRCMQE_Init);
LiveRC_AddHook("AfterDiffExtension", function(){
if(lrcMakeParam("MQE_ActivateInDiffs")) LRCMQE_Init();
});
/* *************************************************************************************************************************** */
} // FIN IF
//</source>