Utilisateur:Dr Brains/LiveRC/AskForRevisionDeleteFromHistExtension.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
--------------------------------------------------------------------------------------
---------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'''
Ajoute des cases à cocher et un bouton dans la prévisualisation d'un historique pour demander un masquage (non sysop)
* Licence : ...?
* Documentation :
* Auteur : [[:fr:User:Dr Brains]]
* Développement et maintenance :
{{Catégorisation JS|LiveRC}}
<source lang=javascript> */
if(typeof(LiveRC_AddHook)=="function") { // DÉBUT IF
LiveRC_Config["InstalledLiveRCExtensions"].push("AskForRevisionDeleteFromHistExtension");
/* *************************************************************************************************************************** */
// textes traduits
try{
lrcTexts["AFRDFH_ButtonText"] = "Demander le masquage des versions sélectionnées (live)";
lrcTexts["AFRDFH_AskReason"] = "Raison de la demande de masquage";
lrcTexts["AFRDFH_NoSelection"] = "Vous devez sélectionner au moins une révision";
lrcTexts["AFRDFH_NoReason"] = "Vous devez indiquer une raison";
}catch(e){ }
// textes non traduits
try{
UnTranslatedTexts["AFRDFH_Resume"] = "{{a-court|$1}}";
}catch(e){ }
// paramètres
try{
lrcParams["AFRDFH_RequestPage"] = "Wikipédia:Demande de purge d'historique";
lrcParams["AFRDFH_Template"] = "Wikipédia:LiveRC/Modèles/Demande de purge d'historique|page=$page|url=$url|raison=$reason";
lrcParams["AFRDFH_ReasonInputSize"] = 35;
lrcParams["AFRDFH_UseOutOfLiveRC"] = true;
}catch(e){ }
// descriptions de variables
try{
lrcParamDesc["DescAFRDFH_ButtonText"] = "[AskForRevisionDeleteFromHist] Texte du bouton de demande de masquage";
lrcParamDesc["DescAFRDFH_AskReason"] = "[AskForRevisionDeleteFromHist] Texte de la pop-up pour la raison de la demande de masquage";
lrcParamDesc["DescAFRDFH_NoSelection"] = "[AskForRevisionDeleteFromHist] Erreur si pas de révision sélectionnée";
lrcParamDesc["DescAFRDFH_NoReason"] = "[AskForRevisionDeleteFromHist] Erreur si pas de raison donnée";
lrcParamDesc["DescAFRDFH_Resume"] = "[AskForRevisionDeleteFromHist] Résumé de modification de la demande de masquage";
lrcParamDesc["DescAFRDFH_RequestPage"] = "[AskForRevisionDeleteFromHist] Page de requête pour la demande de masquage";
lrcParamDesc["DescAFRDFH_Template"] = "[AskForRevisionDeleteFromHist] Modèle pour la demande de masquage";
lrcParamDesc["DescAFRDFH_ReasonInputSize"] = "[AskForRevisionDeleteFromHist] Taille du champ « Raison » ";
lrcParamDesc["DescAFRDFH_UseOutOfLiveRC"] = "[AskForRevisionDeleteFromHist] Activer dans les pages d’historique normales";
lrcParamDesc["DesclstAskForRevisionReasons_short"] = "Masquage";
lrcParamDesc["DesclstAskForRevisionReasons"] = "Raisons de requête de masquage";
}catch(e){ }
// Limitation
LiveRC_Config["LimitationsRight"]["AskForRevisionDeleteFromHist"] = "autopatrol";
// Liste de raisons
window.Custom_lstAskForRevisionReasons = [];
window.lstAskForRevisionReasons = [
{ reason : "Violation de copyright", text : "copyvio" },
{ reason : "Diffamation", text : "diffamation" },
{ reason : "Renseignements personnels inappropriés", text : "vie privée" }
];
// Personnalisation auto
window.defineCustomAskForRevisionReasons = function(AskForRevisionReasons){
Custom_lstAskForRevisionReasons = AskForRevisionReasons;
}
LiveRC_AddHook("AfterFillParamPanel", function(){
LiveRC_ManageParams_Fill(lstAskForRevisionReasons, "lstAskForRevisionReasons", "defineCustomAskForRevisionReasons", true);
});
// ********************************************************************************************************* //
window.LiveRC_AskForRevisionDeleteFromHistExtension_PreProcess = function(){
if(!lrcMakeParam("AFRDFH_UseOutOfLiveRC") ) return;
LiveRC_Config["LaunchProcessForce"]["InterfaceLang"] = true;
LiveRC_Config["LaunchProcessForce"]["UserInfos"] = true;
LiveRC_Config["LaunchProcessForce"]["TranslationsLoaded"] = true;
LiveRC_Config["LaunchProcessForce"]["InitTranslations"] = true;
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_InitHist = function(){
if(!lrcUserCan("AskForRevisionDeleteFromHist") || lrcUserHasRight("deleterevision")) return;
LiveRC_Config["LaunchProcess"].push({functions:LiveRC_AskForRevisionDeleteFromHistExtension_RunHist});
}
if(mw.config.get('wgAction') == "history"){
LiveRC_AddHook("BeforeInitActivationProcess", LiveRC_AskForRevisionDeleteFromHistExtension_PreProcess);
LiveRC_AddHook("AfterGotUserInfos", LiveRC_AskForRevisionDeleteFromHistExtension_InitHist);
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_InitLog = function(){
if(!lrcUserCan("AskForRevisionDeleteFromHist") || lrcUserHasRight("deleterevision")) return;
LiveRC_Config["LaunchProcess"].push({functions:LiveRC_AskForRevisionDeleteFromHistExtension_RunLog});
}
/*
if(mw.config.get('wgCanonicalSpecialPageName')== "Log"){
LiveRC_AddHook("BeforeInitActivationProcess", LiveRC_AskForRevisionDeleteFromHistExtension_PreProcess);
LiveRC_AddHook("AfterGotUserInfos", LiveRC_AskForRevisionDeleteFromHistExtension_InitLog);
}
*/
window.LiveRC_AskForRevisionDeleteFromHistExtension_RunHist = function(data){
if(!lrcUserCan("AskForRevisionDeleteFromHist") || lrcUserHasRight("deleterevision")) return LiveRC_LaunchProcessNextStep();
var HistForm = getElementWithId("mw-history-compare", 'form', document);
var HistUL = getElementWithId("pagehistory", 'ul', Form);
if(!HistForm || !HistUL) return LiveRC_LaunchProcessNextStep();
var Lis = HistUL.getElementsByTagName('li');
for(var a=0,l=Lis.length;a<l;a++){
var Li = Lis[a];
var AlreadyCheckboxes = false;
for(var i=0,ilen=Inputs.length;i<ilen;i++){
var Input = Inputs[i];
if(Input.type !== "checkbox") continue;
if(!Input.name) continue;
if(Input.name.indexOf("ids[") !== -1){
$(Input).addClass("AFRDFH_checkbox");
AlreadyCheckboxes = true;
}
}
if(AlreadyCheckboxes) continue;
var Target = lrcGetElementsByClass("mw-changeslist-date", Li, "a")[0];
if(!Target) continue; // revision already hidden
var Input = document.createElement('input');
Input.type = "checkbox";
Input.className = "AFRDFH_checkbox";
Input.name = "ids["+lrcGetArgFromURL(Target.href, "oldid")+"]";
Input.value = "1";
Target.parentNode.insertBefore(Input, Target);
}
var revisionactionsDiv = lrcGetElementsByClass("mw-history-revisionactions", HistForm, "div");
if(revisionactionsDiv.length > 0){
for(var a=0,l=revisionactionsDiv.length;a<l;a++){
revisionactionsDiv[a].insertBefore(LiveRC_AskForRevisionDeleteFromHistExtension_CreateSubmitInput(), revisionactionsDiv[a].firstChild);
}
}else{
var CompareInputs = lrcGetElementsByClass("mw-history-compareselectedversions-button", HistForm, "input");
if(CompareInputs.length > 0){
for(var a=0,l=CompareInputs.length;a<l;a++){
CompareInputs[a].parentNode.appendChild(LiveRC_AskForRevisionDeleteFromHistExtension_CreateSubmitInput());
}
}
}
LiveRC_LaunchProcessNextStep();
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_RunLog = function(data){
if(!lrcUserCan("AskForRevisionDeleteFromHist") || lrcUserHasRight("deleterevision")) return LiveRC_LaunchProcessNextStep();
var Form = getElementWithId("mw-log-deleterevision-submit", 'form', document);
if(!Form) return LiveRC_LaunchProcessNextStep();
var UL = Form.getElementsByTagName('ul')[0];
if(!UL) return LiveRC_LaunchProcessNextStep();
var Lis = UL.getElementsByTagName('li');
for(var a=0,l=Lis.length;a<l;a++){
var Li = Lis[a];
var Checkboxes = Li.getElementsByTagName('input');
var AlreadyCheckboxes = false;
for(var i=0,ilen=Inputs.length;i<ilen;i++){
var Input = Inputs[i];
if(Input.type !== "checkbox") continue;
if(!Input.name) continue;
if(Input.name.indexOf("ids[") !== -1){
$(Input).addClass("AFRDFH_checkbox");
AlreadyCheckboxes = true;
}
}
if(AlreadyCheckboxes) continue;
// Comment récupérer l'ID de l'entrée ?
var Target = lrcGetElementsByClass("mw-changeslist-date", Li, "a")[0];
if(!Target) continue; // revision already hidden
var Input = document.createElement('input');
Input.type = "checkbox";
Input.className = "AFRDFH_checkbox";
Input.name = "ids["+lrcGetArgFromURL(Target.href, "oldid")+"]";
Input.value = "1";
Li.insertBefore(Input, Li.firstChild);
}
var DivButtons = Form.getElementsByTagName('div');
for(var a=0,l=DivButtons.length;a<l;a++){
var Div = DivButtons[a];
var SubmitInput = document.createElement('input');
SubmitInput.id = "AFRDFH_button_"+a;
SubmitInput.type = "button";
SubmitInput.className = "AFRDFH_buttonReason";
SubmitInput.value = lrcMakeText("AFRDFH_ButtonText");
SubmitInput.onclick = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_CreateReasonForm(this); };
Div.appendChild(SubmitInput);
}
LiveRC_LaunchProcessNextStep();
}
LiveRC_AddHook("AfterPreviewHistory", LiveRC_AskForRevisionDeleteFromHistExtension_RunHist);
// LiveRC_AddHook("AfterPreviewLog", LiveRC_AskForRevisionDeleteFromHistExtension_RunLog);
window.LiveRC_AskForRevisionDeleteFromHistExtension_CreateSubmitInput = function(){
var SubmitInput = document.createElement('input');
SubmitInput.id = "AFRDFH_button_"+a;
SubmitInput.type = "button";
SubmitInput.className = "AFRDFH_buttonReason";
SubmitInput.value = lrcMakeText("AFRDFH_ButtonText");
SubmitInput.onclick = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_CreateReasonForm(this); };
return SubmitInput;
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_DisAbleCheckboxes = function(Disable){
var Form = getElementWithId("mw-history-compare", 'form', document);
if(!Form) Form = getElementWithId("mw-log-deleterevision-submit", 'form', document);
if(!Form) return;
var UL = getElementWithId("pagehistory", 'ul', Form);
if(!UL) UL = Form.getElementsByTagName('ul')[0];
if(!UL) return;
var Checkboxes = lrcGetElementsByClass("AFRDFH_checkbox", UL, "input");
for(var a=0,l=Checkboxes.length;a<l;a++){
Checkboxes[a].disabled = ( Disable ? "disabled" : false );
}
var SubmitInputs = lrcGetElementsByClass("AFRDFH_buttonReason", Form, "input");
for(var a=0,l=SubmitInputs.length;a<l;a++){
SubmitInputs[a].style.display = ( Disable ? "none" : "" );
}
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_GetIds = function(){
var Form = getElementWithId("mw-history-compare", 'form', document);
if(!Form) Form = getElementWithId("mw-log-deleterevision-submit", 'form', document);
if(!Form) return false;
var Params = getFormParams(Form);
var ids = [];
for(var paramname in Params){
if(paramname.indexOf("ids[")===0) ids.push(encodeURIComponent(paramname)+"=1");
}
if(ids.length===0){
LiveRC_alert(lrcMakeText("AFRDFH_NoSelection"));
return false;
}
return ids;
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_CreateReasonForm = function(Button){
if(!Button) return;
var ids = LiveRC_AskForRevisionDeleteFromHistExtension_GetIds();
if(!ids) return;
LiveRC_AskForRevisionDeleteFromHistExtension_DisAbleCheckboxes(true);
var Form = document.createElement("form");
Form.id = "AFRDFH_form";
Form.style.display = "inline";
Form.submit = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Process(); return false; };
var InputText = document.createElement('input');
InputText.type = "text";
InputText.id = "AFRDFH_inputtext";
InputText.size = lrcMakeParam("AFRDFH_ReasonInputSize");
InputText.title = lrcMakeText("AFRDFH_AskReason");
Form.appendChild(InputText);
var InputOK = document.createElement('input');
InputOK.type = "button";
InputOK.value = lrcMakeText("OK");
InputOK.onclick = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Process(); };
InputOK.onselect = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Process(); };
Form.appendChild(InputOK);
var CancelInput = document.createElement('input');
CancelInput.type = "button";
CancelInput.value = lrcMakeText("Cancel");
CancelInput.onclick = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_CloseReasonForm(); }
CancelInput.onselect = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_CloseReasonForm(); }
Form.appendChild(CancelInput);
Button.parentNode.insertBefore(Form, Button.nextSibling);
LiveRC_AskForRevisionDeleteFromHistExtension_Init(Button);
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_Init = function(Button){
var Input = document.getElementById("AFRDFH_inputtext");
if(!Input) return;
var Bottom = parseInt(Button.id.replace(/[^0-9]/g, ""));
var Select = document.createElement('select');
Select.id = "AFRDFH_SelectList";
Select.style.zIndex = 100;
Select.className = "LiveRC_Opacity_100";
var OptZero = '<option selected="selected" onClick="LiveRC_AskForRevisionDeleteFromHistExtension_Update()" value=""> </option>';
Select.innerHTML = OptZero;
var Reasons = Custom_lstAskForRevisionReasons;
if(!Reasons || Reasons.length==0) Reasons = lstAskForRevisionReasons;
for(var a=0,l=Reasons.length;a<l;a++){
var Reason = Reasons[a];
var Opt = document.createElement('option');
Opt.value = Reason.reason;
Opt.title = Reason.reason;
Opt.onclick = LiveRC_AskForRevisionDeleteFromHistExtension_Update;
Opt.name = a;
Opt.innerHTML = Reason.text;
Select.appendChild(Opt);
}
var Taille = (Reasons.length+1);
Select.style.display = "none";
Select.style.position = "relative" ;
Select.style.width = Input.offsetWidth + "px" ;
// Select.style.height = ((Reasons.length+1) * 20) + "px" ;
Select.size = Taille;
if(!Bottom){
Select.style.top = parseInt(Input.offsetHeight) + "px";
Select.style.marginBottom = "-" + (20 * Taille) + "px";
}else{
Select.style.marginTop = "-" + (16.5 * Taille) + "px" ;
}
Select.style.marginLeft = "-"+Input.offsetWidth+"px" ;
Input.parentNode.insertBefore(Select, Input.nextSibling);
Select.onkeyup = LiveRC_AskForRevisionDeleteFromHistExtension_KeyPress;
Select.onchange = LiveRC_AskForRevisionDeleteFromHistExtension_Update;
Input.onmouseover = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Toggle(true); };
Select.onmouseover = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Toggle(true); };
Input.onmouseout = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Toggle(false); };
Select.onmouseout = function(){ LiveRC_AskForRevisionDeleteFromHistExtension_Toggle(false); };
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_Toggle = function(show){
var Select = document.getElementById("AFRDFH_SelectList");
if(!Select) return;
if(show){
clearTimeout(LiveRC_Config["Timeout"]["AFRDFH_SelectList"]);
Select.className = "LiveRC_Opacity_100";
Select.style.display = "inline";
}else{
LiveRC_Config["Timeout"]["AFRDFH_SelectList"] = setTimeout("LiveRC_alert_setOpacity("+lrcEscapeStr("AFRDFH_SelectList")+", function(){document.getElementById("+lrcEscapeStr("AFRDFH_SelectList")+").style.display = "+lrcEscapeStr("none")+";}, 5, 50);", 200);
}
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_KeyPress = function(e){
if (!e) var e = window.event;
if (e.keyCode != 13) return;
LiveRC_AskForRevisionDeleteFromHistExtension_Update();
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_Update = function(){
var Input = document.getElementById("AFRDFH_inputtext");
var Select = document.getElementById("AFRDFH_SelectList");
if(!Input || !Select) return;
var InputValue = Input.value;
var Options = Select.getElementsByTagName('option');
for(var a=0,l=Options.length;a<l;a++){
if(!Options[a].selected) continue;
Input.value = Options[a].value;
Input.focus();
return;
}
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_CloseReasonForm = function(){
var Form = document.getElementById("AFRDFH_form");
if(Form) Form.parentNode.removeChild(Form);
LiveRC_AskForRevisionDeleteFromHistExtension_DisAbleCheckboxes(false);
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_Process = function(){
var ids = LiveRC_AskForRevisionDeleteFromHistExtension_GetIds();
if(!ids) return;
var type;
var Form = getElementWithId("mw-history-compare", 'form', document);
if(Form){
type = "revision";
}else{
Form = getElementWithId(""mw-log-deleterevision-submit", 'form', document);
type = "logging";
}
if(!Form) return;
var Params = getFormParams(Form);
var title = Params["title"];
if(!title) title = lrcGetNamespaceName(-1, true) + ":Log";
var ReasonInput = document.getElementById("AFRDFH_inputtext");
Reason = ReasonInput.value;
if(!Reason){
LiveRC_alert(lrcMakeText("AFRDFH_NoReason"));
return;
}
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?action=revisiondelete&type=' + type + "&" + ids.join("&"));
var Template = lrcMakeParam("AFRDFH_Template");
Template = Template.split("$page").join(title);
Template = Template.split("$url").join(URL);
Template = Template.split("$reason").join(Reason);
LiveRC_AskForRevisionDeleteFromHistExtension_CreateRequest(Template, title);
return false;
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_CreateRequest = function(Template, title){
var Page = buildReportPageMagicWords(lrcMakeParam("AFRDFH_RequestPage"));
var summary = lrcMakeText("AFRDFH_Resume").split("$1").join(title);
var URL = lrcGetAPIURL('format=xml&action=query&prop=info&intoken=edit&inprop=protection&titles='+encodeURIComponent(Page));
wpajax.http({ url : URL,
onSuccess : LiveRC_AskForRevisionDeleteFromHistExtension_SendRequest,
template : Template,
summary : summary,
page : Page
});
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_SendRequest = function(Req, data){
var page = data.page;
var message = data.template;
var summary = data.summary;
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;
}
var Page = ObjetXML.getElementsByTagName("page")[0];
var EditParam = new Array();
EditParam["token"] = Page.getAttribute("edittoken");
EditParam["section"] = "new";
EditParam["sectiontitle"] = summary;
EditParam["text"] = '\n{{subst:' + message +'}}\n';
EditParam["title"] = page;
EditParam["notminor"] = "1";
EditParam["watchlist"] = "preferences";
if(lrcMakeParam("BypassWatchdefault")) EditParam["watchlist"] = "nochange";
var Params = new Array();
for(var Param in EditParam){
Params.push(Param+"="+encodeURIComponent(EditParam[Param]));
}
Params = Params.join("&");
var headers = new Array();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
wpajax.http({ url: lrcGetAPIURL('action=edit'),
method: "POST", headers: headers,
data: Params,
onSuccess: LiveRC_AskForRevisionDeleteFromHistExtension_SendRequestDone,
params:EditParam
});
}
window.LiveRC_AskForRevisionDeleteFromHistExtension_SendRequestDone = function(Req, data){
var params = data.params;
var text = "<b>"+params["title"]+ " : " + lrcMakeText("REPORTING_DONE") + "</b> <small>("+params["text"]+")</small>";
LiveRC_alert(text);
LiveRC_AskForRevisionDeleteFromHistExtension_CloseReasonForm();
}
/* *************************************************************************************************************************** */
} // FIN IF
//</source>