Utilisateur:Dr Brains/AskForRevisionDeleteFromHistExtension.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./*
--------------------------------------------------------------------------------------
---------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
var Custom_lstAskForRevisionReasons = [];
var lstAskForRevisionReasons = [
{ reason : "Violation de copyright", text : "copyvio" },
{ reason : "Diffamation", text : "diffamation" },
{ reason : "Renseignements personnels inappropriés", text : "vie privée" }
];
// Personnalisation auto
function defineCustomAskForRevisionReasons(AskForRevisionReasons){
Custom_lstAskForRevisionReasons = AskForRevisionReasons;
}
LiveRC_AddHook("AfterFillParamPanel", function(){
LiveRC_ManageParams_Fill(lstAskForRevisionReasons, "lstAskForRevisionReasons", "defineCustomAskForRevisionReasons", true);
});
// ********************************************************************************************************* //
function LiveRC_AskForRevisionDeleteFromHistExtension_PreProcess(){
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;
}
function LiveRC_AskForRevisionDeleteFromHistExtension_Init(){
// if(!lrcUserCan("AskForRevisionDeleteFromHist") || lrcUserHasRight("deleterevision")) return;
LiveRC_Config["LaunchProcess"].push({functions:LiveRC_AskForRevisionDeleteFromHistExtension_Run});
}
if(mw.config.get('wgAction')=="history"){
LiveRC_AddHook("BeforeInitActivationProcess", LiveRC_AskForRevisionDeleteFromHistExtension_PreProcess);
LiveRC_AddHook("AfterGotUserInfos", LiveRC_AskForRevisionDeleteFromHistExtension_Init);
}
function LiveRC_AskForRevisionDeleteFromHistExtension_Run(data){
// if(!lrcUserCan("AskForRevisionDeleteFromHist") || lrcUserHasRight("deleterevision")) return LiveRC_LaunchProcessNextStep();
var HistForm = getElementWithId("mw-history-compare", 'form', document);
var HistUL = getElementWithId("pagehistory", 'ul', document);
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 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 DivButtons = HistForm.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_Run);
function LiveRC_AskForRevisionDeleteFromHistExtension_DisAbleCheckboxes(Disable){
var HistForm = getElementWithId("mw-history-compare", 'form', document);
var HistUL = getElementWithId("pagehistory", 'ul', document);
if(!HistForm || !HistUL) return;
var Checkboxes = lrcGetElementsByClass("AFRDFH_checkbox", HistUL, "input");
for(var a=0,l=Checkboxes.length;a<l;a++){
Checkboxes[a].disabled = ( Disable ? "disabled" : false );
}
var SubmitInputs = lrcGetElementsByClass("AFRDFH_buttonReason", HistForm, "input");
for(var a=0,l=SubmitInputs.length;a<l;a++){
SubmitInputs[a].style.display = ( Disable ? "none" : "" );
}
}
function LiveRC_AskForRevisionDeleteFromHistExtension_GetIds(){
var HistForm = getElementWithId("mw-history-compare", 'form', document);
var HistParams = getFormParams(HistForm);
var ids = [];
for(var paramname in HistParams){
if(paramname.indexOf("ids[")===0) ids.push(encodeURIComponent(paramname)+"=1");
}
if(ids.length===0){
LiveRC_alert(lrcMakeText("AFRDFH_NoSelection"));
return false;
}
return ids;
}
function LiveRC_AskForRevisionDeleteFromHistExtension_CreateReasonForm(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);
}
function LiveRC_AskForRevisionDeleteFromHistExtension_Init(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); };
}
function LiveRC_AskForRevisionDeleteFromHistExtension_Toggle(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);
}
}
function LiveRC_AskForRevisionDeleteFromHistExtension_KeyPress(e){
if (!e) var e = window.event;
if (e.keyCode != 13) return;
LiveRC_AskForRevisionDeleteFromHistExtension_Update();
}
function LiveRC_AskForRevisionDeleteFromHistExtension_Update(){
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;
}
}
function LiveRC_AskForRevisionDeleteFromHistExtension_CloseReasonForm(){
var Form = document.getElementById("AFRDFH_form");
if(Form) Form.parentNode.removeChild(Form);
LiveRC_AskForRevisionDeleteFromHistExtension_DisAbleCheckboxes(false);
}
function LiveRC_AskForRevisionDeleteFromHistExtension_Process(){
var ids = LiveRC_AskForRevisionDeleteFromHistExtension_GetIds();
if(!ids) return;
var HistForm = getElementWithId("mw-history-compare", 'form', document);
var HistParams = getFormParams(HistForm);
var title = HistParams["title"];
var ReasonInput = document.getElementById("AFRDFH_inputtext");
Reason = ReasonInput.value;
if(!Reason){
LiveRC_alert(lrcMakeText("AFRDFH_NoReason"));
return;
}
var URL = lrcGetUglyPageURL(title, "&action=revisiondelete&"+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;
}
function LiveRC_AskForRevisionDeleteFromHistExtension_CreateRequest(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
});
}
function LiveRC_AskForRevisionDeleteFromHistExtension_SendRequest(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
});
}
function LiveRC_AskForRevisionDeleteFromHistExtension_SendRequestDone(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>