Utilisateur:Sebleouf/moved.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./*
Javascript qui s'active lors du renommage d'une page.
# résumés de modification prédéfinis (personnalisables, voir plus bas)
# nombre de pages liées à la page en cours.
# correction automatiquement les éventuelles doubles redirections.
Documentation : [[Projet:JavaScript/Notices/MoveDeluxe]]
Licence : Domaine Public
{{Projet:JavaScript/Script|MoveDeluxe}}
*/
//<source lang=javascript>//<pre><nowiki>
if(mw.config.get('wgUserGroups')!=null){
if((mw.config.get('wgCanonicalSpecialPageName')=="Movepage")&&(mw.config.get('wgUserGroups').indexOf("autoconfirmed")!=-1)){
if(typeof(MoveDeluxe_Reason)=='undefined'){
////////////////////////////////////////////// PARTIE PERSONNALISABLE ///////////////////////////////////
var MoveDeluxe_Reason = new Array();
MoveDeluxe_Reason.push("Conventions typographiques");
MoveDeluxe_Reason.push("Orthographe");
MoveDeluxe_Reason.push("Mauvais espace de noms");
MoveDeluxe_Reason.push("Titre imprécis");
////////////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////
}
addOnloadHook(MoveDeluxe);
if(mw.config.get('wgAction')=="submit") addOnloadHook(MoveDeluxe_CorrectRedirects_AddLink);
}
}
function MoveDeluxe(){
var MoveForm = document.getElementById('movepage');
if(!MoveForm) return;
// Résumé de renommage
var TextArea = document.getElementById('wpReason');
if(TextArea) MoveDeluxe_GetReasons();
//Pages liées
var Page = document.getElementById('contentSub');
if(!Page) return;
var TitrePage = Page.getElementsByTagName('a')[0].innerHTML;
if(!TitrePage) return;
var Recapitulatif = document.createElement('div');
Recapitulatif.innerHTML = '<h2>Pages liées</h2><span id="MovePageRecap">0</span> pages sont liées à la page « '+TitrePage + ' » : <a href="'+mw.config.get('wgServer') + '/wiki/Special:Whatlinkshere/' + TitrePage + '" target="_blank" title="Voir les pages liées (nouvel onglet)">Détails</a>';
MoveForm.parentNode.insertBefore(Recapitulatif, MoveForm.nexSibling );
MoveDeluxe_GetPages(TitrePage, '');
}
//////////////////////////////////////////////////////////////////// Résumé de renommage
function MoveDeluxe_GetReasons(){
if(MoveDeluxe_Reason.length<1) return;
var TextArea = document.getElementById('wpReason');
var NewSelect = document.createElement('select');
NewSelect.id='ReasonSelect';
TextArea.parentNode.insertBefore(NewSelect, TextArea);
NewSelect.onchange = function(){
var Selected = this.getElementsByTagName('option');
for(var a=0;a<Selected.length;a++){
if(Selected[a].selected){
var TextSelected = Selected[a].value;
document.getElementById('wpReason').value = TextSelected;
document.getElementById('wpReason').focus();
}
}
}
for(var a=0;a<MoveDeluxe_Reason.length;a++){
NewSelect.innerHTML += '<option value="'+MoveDeluxe_Reason[a]+'" '
+'>'+MoveDeluxe_Reason[a]+'</option>';
}
}
//////////////////////////////////////////////////////////////////// Compteur de pages liées
var MoveDeluxe_PagesCount = 0;
function MoveDeluxe_GetPages(TitrePage, RequeteContinue){
if(!RequeteContinue) RequeteContinue ='';
var APILimit = 499;
if((mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
APILimit = 4999;
}
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=backlinks&bllimit='+APILimit+'&blnamespace=0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101|102|103|104|105&bltitle=' + TitrePage + RequeteContinue;
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
//document.body.appendChild(ElementTraitement);
var Informations = ElementTraitement.getElementsByTagName('span');
var AutreRequeteNecessaire = false;
for(var a=0;a<Informations.length;a++){
var ContenuInformation = Informations[a].innerHTML;
if(ContenuInformation.indexOf('title=')!=-1){
MoveDeluxe_PagesCount++
}
if(ContenuInformation.indexOf('blcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = '&blcontinue=' + ContenuInformation.split('blcontinue="')[1].split('"')[0];
}
}
var Recap = document.getElementById("MovePageRecap");
if(AutreRequeteNecessaire==true){
Recap.innerHTML = MoveDeluxe_PagesCount;
MoveDeluxe_GetPages(TitrePage, AutreRequeteContinue);
}else{
Recap.innerHTML = '<b>'+MoveDeluxe_PagesCount+'</b>';
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////
function MoveDeluxe_CorrectRedirects_AddLink(){
var Titre = document.getElementsByTagName('h1')[0];
if(Titre.innerHTML.indexOf("réussi")==-1) return;
var Content = document.getElementById('bodyContent');
if(!Content) Content = document.getElementById('article');
if(!Content) Content = document.getElementById('mw_contentholder');
var Ps = Content.getElementsByTagName('p');
for(var a=0,l=Ps.length;a<l;a++){
if(Ps[a].innerHTML.indexOf("a été renommée")==-1) continue;
Ps[a].getElementsByTagName('a')[0].id = "OldTitle";
Ps[a].getElementsByTagName('a')[1].id = "NewTitle";
}
var NewP = document.createElement('p');
var NewB = document.createElement('b');
var NewLink = document.createElement('a');
NewLink.id = "CorrRedirectsLink";
NewLink.innerHTML = "Corriger les redirections";
NewLink.href = "javascript:MoveDeluxe_CorrectRedirects_GetRedirects();";
NewB.appendChild(NewLink);
NewP.appendChild(NewB);
Content.appendChild(NewP);
}
function MoveDeluxe_CorrectRedirects_GetRedirects(){
if(document.getElementById('CorrRedirectsListe')) return;
var OldTitle = document.getElementById("OldTitle").innerHTML;
var NewTitle = document.getElementById("NewTitle").innerHTML;
var Adresse = mw.config.get('wgServer')+mw.config.get('wgScriptPath')+ '/api.php?format=xml&action=query&list=backlinks&bllimit=499&blfilterredir=redirects&bltitle='+OldTitle;
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", Adresse, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 ) return;
var Reponse = NouvelleRequete.responseXML;
var Resultat = new Array();
var BackLinks = Reponse.getElementsByTagName("bl");
if(BackLinks[0]){
Resultat.push("<b>Redirections à corriger : </b>");
for(var a=0;a<BackLinks.length;a++){
var BackLinkTitle = BackLinks[a].getAttribute("title");
var ThisBackLink = '<a href="'+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join(BackLinkTitle)+'" title="'+BackLinkTitle+'" >'+BackLinkTitle+'</a>';
Resultat.push(ThisBackLink);
}
Resultat.push('<input type="button" onclick="MoveDeluxe_CorrectRedirects_Run();" onselect="MoveDeluxe_CorrectRedirects_Run();" title="Lancer la correction" value="Corriger" />');
}else{
Resultat.push("Il n'y a pas de redirection à corriger.");
}
var Ul = document.createElement('ul');
Ul.id = 'CorrRedirectsListe';
for(var a=0;a<Resultat.length;a++){
Ul.innerHTML += '<li>'+Resultat[a]+'</li>';
}
var corrLink = document.getElementById("CorrRedirectsLink")
$(Ul).insertAfter(corrLink);
corrLink.parentNode.removeChild(corrLink);
}
NouvelleRequete.send(null);
}
function MoveDeluxe_CorrectRedirects_Run(){
var OldTitle = document.getElementById("OldTitle").innerHTML;
var NewTitle = document.getElementById("NewTitle").innerHTML;
var Liste = document.getElementById('CorrRedirectsListe');
var Liens = Liste.getElementsByTagName('a');
var ListeLiens = new Array();
for(var a=0;a<Liens.length;a++){
ListeLiens.push(Liens[a].title);
}
MoveDeluxe_CorrectRedirects_RunOne(0, ListeLiens, OldTitle, NewTitle);
}
function MoveDeluxe_CorrectRedirects_RunOne(position, ListeLiens, OldTitle, NewTitle){
var Page = ListeLiens[position];
if(!Page){
alert('Corrections de redirections terminé.')
document.location = mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join(NewTitle);
return;
}
var Adresse = mw.config.get('wgServer')+mw.config.get('wgScript')+'?title='+Page+'&action=edit';
var EditRequete = new XMLHttpRequest();
EditRequete.open("GET", Adresse, true);
EditRequete.onreadystatechange = function() {
if(EditRequete.readyState != 4 ) return;
while(document.body.firstChild){ document.body.removeChild(document.body.firstChild); }
document.body.innerHTML = EditRequete.responseText;
document.editform.style.display = "none";
var AncienContenu = document.getElementById("wpTextbox1").value;
AncienContenu = AncienContenu.split('#redirection').join('#REDIRECTION')
AncienContenu = AncienContenu.split('#REDIRECT').join('#REDIRECTION')
AncienContenu = AncienContenu.split('#redirect').join('#REDIRECTION')
AncienContenu = AncienContenu.replace(/REDIRECTIONION/g, "REDIRECTION")
AncienContenu = AncienContenu.replace(/REDIRECTION /g, "REDIRECTION")
AncienContenu = AncienContenu.replace(/ \[/g, "\[")
AncienContenu = AncienContenu.replace(/\[ /g, "\[")
AncienContenu = AncienContenu.replace(/ \]/g, "\]")
var TexteFinal = AncienContenu.split('#REDIRECTION[['+OldTitle+']]').join('#REDIRECTION[['+NewTitle+']]');
var SommaireFinal = "Correction double redirection : [["+OldTitle+"]] -> [["+NewTitle+"]]";
document.getElementById("wpTextbox1").value = AncienContenu
document.getElementById("wpSummary").value = SommaireFinal
document.getElementById("wpMinoredit").checked = "checked";
var action = document.getElementById("editform").action;
var boundary = '--------123xyz';
var data = '';
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + TexteFinal + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSection"\n\n' + document.editform.wpSection.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSummary"\n\n' + SommaireFinal + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpMinoredit"\n\n' + document.editform.wpMinoredit.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpStarttime"\n\n' + document.editform.wpStarttime.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEdittime"\n\n' + document.editform.wpEdittime.value + '\n'
data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEditToken"\n\n' + document.editform.wpEditToken.value + '\n'
var SubmitRequete = new XMLHttpRequest();
SubmitRequete.open('POST', action, true);
SubmitRequete.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+boundary);
SubmitRequete.send(data + '--' + boundary);
SubmitRequete.onreadystatechange = function(){
if (SubmitRequete.readyState != 4) return;
MoveDeluxe_CorrectRedirects_RunOne((position+1), ListeLiens, OldTitle, NewTitle)
}
SubmitRequete.send(null);
}
EditRequete.send(null);
}
//</nowiki></pre></source>