Utilisateur:Dr Brains/ListRedirects.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.if(mw.config.get('wgNamespaceNumber')!=14 && mw.config.get('wgNamespaceNumber')>-1){
addOnloadHook(ListRedirects_AddLink);
}
var ListRedirects_ajax = {
http: function(bundle) {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false
}
}
}
if (xmlhttp) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4)
ListRedirects_ajax.httpComplete(xmlhttp,bundle);
};
xmlhttp.open(bundle.method ? bundle.method : "GET",bundle.url,bundle.async == false ? false : true);
if (bundle.headers) {
for (var field in bundle.headers)
try {
xmlhttp.setRequestHeader(field,bundle.headers[field]);
}catch(err){ }
}
xmlhttp.send(bundle.data ? bundle.data : null);
}
return xmlhttp;
},
httpComplete: function(xmlhttp,bundle) {
if (xmlhttp.status == 200 || xmlhttp.status == 302) {
if (bundle.onSuccess)
bundle.onSuccess(xmlhttp,bundle);
} else if (bundle.onFailure) {
bundle.onFailure(xmlhttp,bundle);
}else{ }
}
};
function ListRedirects_AddLink(){
try{
var OngletsCactions = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
OngletsCactions.innerHTML += '<li><a href="javascript:ListRedirects_GetRedirections();">Redirections</a></li>';
}catch(e){ }
}
function ListRedirects_GetRedirections(RedirectList, BLContinue){
var Sub = document.getElementById("contentSub");
if(!Sub) return;
var Div = document.getElementById("ListRedirect");
if(Div){
Div.parentNode.removeChild(Div);
return;
}
if(!RedirectList) RedirectList = new Array();
if(!BLContinue) BLContinue = "";
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=backlinks'
+ '&blfilterredir=redirects'
+ '&bllimit=' + ( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1||mw.config.get('wgUserGroups').indexOf('bot')!=-1) ? 4999 : 499 )
+ '&bltitle='+encodeURIComponent(mw.config.get('wgPageName'))
+ BLContinue;
ListRedirects_ajax.http({url : URL,
onSuccess : ListRedirects_ListRedirections,
thelist : RedirectList
});
}
function ListRedirects_ListRedirections(Req, data){
var ObjetXML = Req.responseXML;
if(!ObjetXML) return;
var RedirectList = data.thelist;
var Pages = ObjetXML.getElementsByTagName('bl');
for(var a=0,l=Pages.length;a<l;a++){
RedirectList.push(Pages[a].getAttribute('title'));
}
var MustContinue = ObjetXML.getElementsByTagName('query-continue');
if(MustContinue && MustContinue[0]){
var ContinueValue = "&blcontinue=" + encodeURIComponent(MustContinue[0].firstChild.getAttribute('blcontinue'));
ListRedirects_GetRedirections(RedirectList, ContinueValue);
}else{
ListRedirects_ShowRedirections(RedirectList);
}
}
function ListRedirects_ShowRedirections(List){
var Sub = document.getElementById("contentSub");
if(!Sub) return;
var Div = document.createElement('div');
Div.id = "ListRedirect";
Sub.insertBefore(Div, Sub.firstChild);
Div.appendChild(ListRedirects_CreateNewRedirectForm());
Div.appendChild(document.createElement('hr'));
if(List.length>0){
for(var a=0,l=List.length;a<l;a++){
ListRedirects_AddRedirect(List[a]);
}
}else{
var Span = document.createElement('span');
Span.id = "NoRedirectSpan";
Span.appendChild(document.createTextNode("Pas de redirections • "));
Div.insertBefore(Span, Div.firstChild);
}
}
function ListRedirects_CreateNewRedirectForm(){
var Span = document.createElement('span');
Span.id = "NewRedirectSpan";
var Input = document.createElement('input');
Input.id = "NewRedirectInput";
Input.type = "text";
Input.setAttribute('style', 'padding:0');
var OK = document.createElement('input');
OK.type = "button";
OK.value = "OK";
OK.setAttribute('style', 'padding:0');
OK.onclick = function(){ ListRedirects_CreateNewRedirect(); };
OK.onselect = function(){ ListRedirects_CreateNewRedirect(); };
Span.appendChild(Input);
Span.appendChild(OK);
return Span;
}
function ListRedirects_CreateNewRedirect(){
var Input = document.getElementById("NewRedirectInput");
if(!Input) return;
var NewRedirectName = Input.value;
if(!NewRedirectName) return;
var ThisPageName = mw.config.get('wgPageName').replace(/_/g, " ");
var OKConfirm = confirm("Voulez-vous créer la page « "+NewRedirectName+" » redirigeant vers la page « "+ThisPageName+" » ?");
if(!OKConfirm) return;
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=info&intoken=edit'
+ '&titles='+encodeURIComponent(NewRedirectName);
ListRedirects_ajax.http({url : URL,
onSuccess : ListRedirects_CreateRedirect,
Redirect : NewRedirectName,
Page : ThisPageName
});
}
function ListRedirects_CreateRedirect(Req, data){
var ObjetXML = Req.responseXML;
if(!ObjetXML) return;
try{
var Token = ObjetXML.getElementsByTagName('page')[0].getAttribute('edittoken');
var Missing = ObjetXML.getElementsByTagName('page')[0].getAttribute('missing');
}catch(e){ return; }
if(!Token) return;
if(Missing==null){
alert("Une page existe déjà sous le titre « "+data.Redirect+" »");
return;
}
var EditParam = new Array();
EditParam["token"] = encodeURIComponent(Token);
EditParam["title"] = encodeURIComponent(data.Redirect);
EditParam["watchlist"] = "nochange";
EditParam["minor"] = "1";
EditParam["text"] = encodeURIComponent("#REDIRECTION[["+data.Page+"]]");
var Params = new Array();
for(var Param in EditParam){
if(EditParam[Param] || EditParam[Param]=="") Params.push(Param+"="+EditParam[Param]);
}
Params = Params.join("&");
var headers = new Array();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
ListRedirects_ajax.http({ url : mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=edit',
method : "POST", headers: headers, data: Params,
onSuccess : ListRedirects_AddRedirectDone,
newRedirect : data.Redirect
});
}
function ListRedirects_AddRedirectDone(Req, data){
ListRedirects_AddRedirect(data.newRedirect);
}
function ListRedirects_AddRedirect(Title){
var Span = document.getElementById("NewRedirectSpan");
var Input = document.getElementById("NewRedirectInput");
if(!Span || !Input || !Title) return;
var NewLink = document.createElement('a');
NewLink.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title="+encodeURIComponent(Title)+"&redirect=no";
NewLink.innerHTML = Title;
Span.parentNode.insertBefore(NewLink, Span);
Span.parentNode.insertBefore(document.createTextNode(" • "), Span);
Input.value = "";
var NoRedirectSpan = document.getElementById("NoRedirectSpan");
if(NoRedirectSpan) NoRedirectSpan.parentNode.removeChild(NoRedirectSpan);
}