MediaWiki:Gadget-RenommageCategorie.js
Apparence
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
/* *************************************************************************************************************** Fonction : Renommage/vidage de catégorie * Ajoute un onglet "renommer" en haut d'une page de catégorie. * Détail du fonctionnement : 1. modification/retrait¹ automatique de lien catégorie dans les pages et les sous-catégories d'une catégorie; 2. si nécessaire² : copie du contenu de l'ancienne catégorie dans la nouvelle + crédit des auteurs en page de discussion; 3. si nécessaire² : suppression de l'ancienne catégorie³; ¹ basé sur la partie "édition" du gadget [[MediaWiki:Gadget-HotCats.js]], plusieurs pop-up permettent de définir les paramètres. ² après une pop-up de confirmation ³ si utilisateur sysop uniquement * Documentation complète : [[Projet:JavaScript/Notices/RenommageCategorie]] * Licence : Domaine public {{Catégorisation JS|RenommageCategorie}} ******************************************************************************************************************* */ //<source lang=javascript><pre><nowiki> ////////////////////////////////////////////// TEXTES GLOBAUX /////////////////////////// // Libellé de l'onglet var RenommageCategorie_Text_Move = 'Renommer'; // Pop-up paramètres var RenommageCategorie_Text_PopRemoveCat = 'Catégorie à supprimer'; var RenommageCategorie_Text_PopAddCat = 'Catégorie à ajouter'; var RenommageCategorie_Text_PopConfirm = 'Publier sans confirmation manuelle ?'; var RenommageCategorie_Text_PopWatch = 'Suivre les pages modifiées ?'; var RenommageCategorie_Text_PopButtonOKText = 'Valider'; var RenommageCategorie_Text_PopButtonOKTitle = 'Lancer les modifications'; var RenommageCategorie_Text_PopButtonCancelText = 'Annuler'; var RenommageCategorie_Text_PopButtonCancelTitle = 'Annuler'; // Pop-up de confirmation var RenommageCategorie_Text_Modif = "Vous vous apprêtez à modifier $1 pages.\n\n" + "Continuer ?\n"; // Confirmation édition (<50 pages) var RenommageCategorie_Text_GrosseModif = "Vous vous apprêtez à modifier $1 pages.\n" + "Cette action d'envergure devrait être effectuée de préférence par un bot.\n\n" + "Continuer quand même ?\n"; // Confirmation grosse édition (>50 pages) var RenommageCategorie_Text_Delay = "(Un délai de $1 secondes s'écoulera entre deux modifications)"; var RenommageCategorie_Text_ConfirmEdit = "$1 -> $2\n\nRésumé de modification : $3"; // Confirmation édition var RenommageCategorie_Text_ConfirmMove = "Recopier le contenu de $1 dans $2 ?"; // Copie var RenommageCategorie_Text_ConfirmMoveBis = 'Publier la modification ?' // Confirmation Copie var RenommageCategorie_Text_ConfirmDelete = "Supprimer la catégorie $1 ?"; // Suppression // Pop-up lors d'un problème var RenommageCategorie_Text_AlertSameCat = "Les catégories à supprimer et à ajouter sont identiques"; var RenommageCategorie_Text_AlertEditPb1 = "Impossible de trouver la catégorie « $1 » - elle est peut-être incluse via un modèle."; var RenommageCategorie_Text_AlertEditPb2 = "La catégorie « $1 » est déjà présente."; var RenommageCategorie_Text_AlertEditPb3 = "Plusieurs occurrences de la catégorie « $1 » trouvées."; var RenommageCategorie_Text_AlertEditTryAgain = 'Problème !\n\nRéessayer ?'; var RenommageCategorie_Text_AlertEditNextPage = 'Page suivante ?' // Résumés de modification var RenommageCategorie_Text_ResumeEditModif = "Modification de la catégorie [[$1]] → [[$2]]"; var RenommageCategorie_Text_ResumeEditDelete = "Retrait de la catégorie [[$1]]"; var RenommageCategorie_Text_ResumeMove = "Transfert du contenu depuis [[$1]]"; var RenommageCategorie_Text_ResumeMoveHist = "Crédit des auteurs depuis [[$1]]"; var RenommageCategorie_Text_ResumeDelete = "Catégorie remplacée par [[$2]]"; var RenommageCategorie_Text_ResumeDeleteBis = "Catégorie vide et obsolète"; ////////////////////////////////////////////// TEXTES LOCAUX /////////////////////////// // Résumés de modification : lien vers la documentation var RenommageCategorie_Text_Script = '[[Projet:JavaScript/Notices/RenommageCategorie|Renommage de catégorie]] : '; // Modèle pour crédit des auteurs en page de discussion var RenommageCategorie_Text_HistTemplate = "{{Catégorie renommée|$1|contributeurs=$2}}\n"; // Modèle User var RenommageCategorie_Text_UserTemplate = "{{U|$1}}"; // Modèle Suppression Immédiate var RenommageCategorie_Text_DeleteTemplate = "{{Suppression Immédiate|raison=$1|utilisateur=$2}}"; ////////////////////////////////////////////////////////////////////////////// // -------------------------------------------------------------------------------------------- // Variables par défaut var RenommageCategorie_RemoveCat = wgTitle; // Catégorie à enlever var RenommageCategorie_AddCat = wgTitle; // Catégorie à ajouter var RenommageCategorie_Autoconfirm = false; // Publication automatique var RenommageCategorie_AutoWatch = false; // Suivi automatique var RenommageCategorie_TimeOut = 10; // Délai par défaut après publication if( (wgUserGroups.indexOf("sysop")!=-1)||(wgUserGroups.indexOf("bot")!=-1)){ var RenommageCategorie_APILimit = 4999; }else{ var RenommageCategorie_APILimit = 499; } if(wgUserGroups.indexOf("bot")!=-1){ var RenommageCategorie_IsBot = true; }else{ var RenommageCategorie_IsBot = false; } // -------------------------------------------------------------------------------------------- // Fonction de requête var RenommageCategorie_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){ RenommageCategorie_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{ }} }; // -------------------------------------------------------------------------------------------- // Lancement if(wgNamespaceNumber==14){ importScriptURI('http://fr.wikipedia.org/w/index.php?title=Mediawiki:Gadget-RenommageCategorieLang.js&action=raw&ctype=text/javascript'); addOnloadHook(RenommageCategorie_AddLink); } // -------------------------------------------------------------------------------------------- // Ajout du lien "Renommer" function RenommageCategorie_AddLink(){ if(typeof(RenommageCategorie_LangCustom)=="function") RenommageCategorie_LangCustom(); if(typeof(RenommageCategorie_SiteCustom)=="function") RenommageCategorie_SiteCustom(); if(typeof(RenommageCategorie_UserCustom)=="function") RenommageCategorie_UserCustom(); var OngletsCactions = document.getElementById('p-cactions'); if(OngletsCactions){ var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0]; CactionsUl.innerHTML += '<li><a href="javascript:RenommageCategorie_OpenMenu();">'+RenommageCategorie_Text_Move+'</a></li>'; if(OngletsCactions.className){ OngletsCactions.className = OngletsCactions.className.replace(/[ ]*emptyPortlet[ ]*/, " "); } } } // -------------------------------------------------------------------------------------------- // Création du menu function RenommageCategorie_OpenMenu(){ if(document.getElementById('RenommageCategorie_Menu')) return; var agt=navigator.userAgent.toLowerCase(); var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); if(is_ie){ var LargeurEcran = parseInt(screen.width); var HauteurEcran = parseInt(screen.height); }else{ var LargeurEcran = parseInt(window.innerWidth); var HauteurEcran = parseInt(window.innerHeight); } var Menu = document.createElement('div'); Menu.id='RenommageCategorie_Menu'; Menu.className ='RenommageCategorie_Menu'; Menu.style.position='fixed'; Menu.style.zIndex= 500; Menu.style.padding='5px'; Menu.style.backgroundColor='white'; Menu.style.border='3px double black'; Menu.style.width= '450px'; Menu.style.height= '120px'; document.body.appendChild(Menu); PositionGauche = parseInt((LargeurEcran-Menu.clientWidth)/2) ; PositionHaut = parseInt((HauteurEcran-Menu.clientHeight)/3) ; Menu.style.left=PositionGauche + 'px'; Menu.style.top=PositionHaut + 'px'; var MenuContent = '' + '<input type="text" id="RemoveCat" value="'+wgTitle+'" disabled="disabled" size="50"/>' + '<label for="RemoveCat">'+RenommageCategorie_Text_PopRemoveCat+'</label>' + '<br />' + '<input type="text" id="AddCat" value="'+wgTitle+'" size="50" />' + '<label for="AddCat">'+RenommageCategorie_Text_PopAddCat+'</label>' + '<br />' + '<input type="checkbox" id="Autoconfirm" style="cursor:pointer;" />' + '<label for="Autoconfirm">'+RenommageCategorie_Text_PopConfirm+'</label>' + ' ' + '<input type="checkbox" id="AutoWatch" style="cursor:pointer;" />' + '<label for="AutoWatch">'+RenommageCategorie_Text_PopWatch+'</label>' + '<br />' + '<br />' + '<center>' + '<input type="button" style="cursor:pointer;" ' + ' value="'+RenommageCategorie_Text_PopButtonOKText+'" title="'+RenommageCategorie_Text_PopButtonOKTitle+'" ' + ' onclick="RenommageCategorie_CheckMenu();" onselect="RenommageCategorie_CheckMenu();"/>' + ' ' + '<input type="button" style="cursor:pointer;" ' + ' value="'+RenommageCategorie_Text_PopButtonCancelText+'" title="'+RenommageCategorie_Text_PopButtonCancelTitle+'" ' + ' onclick="RenommageCategorie_CloseMenu();" onselect="RenommageCategorie_CloseMenu();"/>' + '</center>'; Menu.innerHTML = MenuContent; document.getElementById("AddCat").focus(); } // -------------------------------------------------------------------------------------------- // Annulation du menu function RenommageCategorie_CloseMenu(){ var Menu = document.getElementById('RenommageCategorie_Menu'); if(Menu) RenommageCategorie_DeleteElement(Menu); } // -------------------------------------------------------------------------------------------- // Validation du menu function RenommageCategorie_CheckMenu(){ var AddCat = document.getElementById('AddCat'); var Autoconfirm = document.getElementById('Autoconfirm'); var AutoWatch = document.getElementById('AutoWatch'); if( (!AddCat)||(!Autoconfirm)||(!AutoWatch) ) return; RenommageCategorie_AddCat = AddCat.value; if(RenommageCategorie_AddCat == RenommageCategorie_RemoveCat){ alert(RenommageCategorie_Text_AlertSameCat); return; } if(Autoconfirm.checked) RenommageCategorie_Autoconfirm = true; else RenommageCategorie_Autoconfirm = false; if(AutoWatch.checked) RenommageCategorie_AutoWatch = true; else RenommageCategorie_AutoWatch = false; RenommageCategorie_CloseMenu(); RenommageCategorie_ListPages(); } // -------------------------------------------------------------------------------------------- // Listage des pages de la catégorie cible function RenommageCategorie_ListPages(CatArray, category, categorycontinue){ if(!CatArray) CatArray = new Array(); if(!category) category = wgPageName; if(!categorycontinue) categorycontinue = ''; var URL = wgServer + wgScriptPath + '/api.php?format=xml&action=query&list=categorymembers' + '&cmlimit=' + RenommageCategorie_APILimit + '&cmtitle=' + encodeURIComponent(category) + categorycontinue; RenommageCategorie_ajax.http({ url: URL, cat: category, catlist: CatArray, onSuccess:RenommageCategorie_ListPagesDone }); } function RenommageCategorie_ListPagesDone(Req, data){ var CatArray = data.catlist; var category = data.cat; var ElementTraitement = Req.responseXML; var Pages = ElementTraitement.getElementsByTagName('cm'); for(a=0;a<Pages.length;a++){ var TitrePage = Pages[a].getAttribute('title'); if(CatArray.indexOf(TitrePage)==-1) CatArray.push(TitrePage); } var CatContinue = ElementTraitement.getElementsByTagName('query-continue')[0]; if(CatContinue){ var AutreRequeteContinue = '&cmcontinue=' + encodeURIComponent(CatContinue.firstChild.getAttribute("cmcontinue")); RenommageCategorie_ListPages(CatArray, category, AutreRequeteContinue); }else{ RenommageCategorie_SortList(CatArray); } } // -------------------------------------------------------------------------------------------- // Triage des pages de la catégorie cible var RenommageCategorie_CatList = new Array(); function RenommageCategorie_SortList(CatArray){ while(RenommageCategorie_CatList[0]) RenommageCategorie_CatList.pop(); var PagesTemp = CatArray.sort(); for(var a=0;a<PagesTemp.length;a++){ if(PagesTemp[a]!=PagesTemp[(a+1)]){ RenommageCategorie_CatList.push(PagesTemp[a]); } } var Length = RenommageCategorie_CatList.length; if(!RenommageCategorie_IsBot){ if(Length<10) RenommageCategorie_TimeOut = (RenommageCategorie_TimeOut/2); if(Length>50){ RenommageCategorie_TimeOut = (RenommageCategorie_TimeOut*2); var Text = '' + RenommageCategorie_Text_GrosseModif.split('$1').join(Length) + RenommageCategorie_Text_Delay.split('$1').join(RenommageCategorie_TimeOut) var GrosseModif = confirm(Text); if(!GrosseModif) window.location.reload(); }else if(Length>0){ var Text = '' + RenommageCategorie_Text_Modif.split('$1').join(Length) + RenommageCategorie_Text_Delay.split('$1').join(RenommageCategorie_TimeOut) var Modif = confirm(Text); if(!Modif) window.location.reload(); } } RenommageCategorie_ModifCat(0); } // -------------------------------------------------------------------------------------------- // Changement de catégorie dans une page function RenommageCategorie_ModifCat(position){ var Page = RenommageCategorie_CatList[position]; if(!Page){ var CreateNewCat_SurEtCertain = false; if(RenommageCategorie_AddCat!='') CreateNewCat_SurEtCertain = confirm(RenommageCategorie_Text_ConfirmMove.split('$1').join(RenommageCategorie_RemoveCat).split('$2').join(RenommageCategorie_AddCat)); if(!CreateNewCat_SurEtCertain){ var urlOldCat = wgServer + wgScript + '?title=' + wgFormattedNamespaces[14]+':'+encodeURIComponent(RenommageCategorie_RemoveCat); var DeleteOldCat_SurEtCertain = confirm(RenommageCategorie_Text_ConfirmDelete.split('$1').join(RenommageCategorie_RemoveCat)); if(DeleteOldCat_SurEtCertain){ if(wgUserGroups.indexOf('sysop')!=-1){ RenommageCategorie_ajax.http({ url: urlOldCat + '&action=delete', onSuccess:RenommageCategorie_DeleteOldCat }); }else{ RenommageCategorie_ajax.http({ url: urlOldCat + '&action=edit', onSuccess:RenommageCategorie_DoDeletionRequest }); } }else{ window.location.reload(); } }else{ RenommageCategorie_CreateNewCat(); } return; } var URL = wgServer + wgScript + '?title=' + encodeURIComponent(Page) + '&action=edit'; RenommageCategorie_ajax.http({ url: URL, pos: position, onSuccess:RenommageCategorie_ModifCatRunning }); } function RenommageCategorie_ModifCatRunning(Req, data){ var position = data.pos; while(document.body.firstChild){ RenommageCategorie_DeleteElement(document.body.firstChild);} document.body.innerHTML = Req.responseText; var TextArea = document.getElementById('wpTextbox1'); if(!TextArea){ var Problem = confirm( url + '\n\n' + RenommageCategorie_Text_AlertEditTryAgain ); if(Problem){ RenommageCategorie_ModifCat(position); }else{ var NextPage = confirm(RenommageCategorie_Text_AlertEditNextPage); if(NextPage) RenommageCategorie_ModifCat((position+1)); } return; } var OldText = TextArea.value; var Sommaire = ''; if ( RenommageCategorie_RemoveCat != "" ) { var OldCatRegExp = new RegExp("(\\s*)\\[\\[ *(?:"+wgFormattedNamespaces[14]+"|"+wgFormattedNamespaces[14].toLowerCase()+"|Category|category) *: *" + RenommageCategorie_AddCat.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + " *(\\|[^\\]]*)?\\]\\]", "g"); var OldCatmatches = OldText.match(OldCatRegExp); var CatRegExp = new RegExp("(\\s*)\\[\\[ *(?:"+wgFormattedNamespaces[14]+"|"+wgFormattedNamespaces[14].toLowerCase()+"|Category|category) *: *" + RenommageCategorie_RemoveCat.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + " *(\\|[^\\]]*)?\\]\\]", "g"); var matches = OldText.match(CatRegExp); if (OldCatmatches == null && matches != null && matches.length == 1) { // Found one occurrence of the category - good! if(RenommageCategorie_AddCat != ""){ OldText = OldText.replace(CatRegExp, "$1[["+wgFormattedNamespaces[14]+":" + RenommageCategorie_AddCat + "$2]]"); Sommaire = RenommageCategorie_Text_ResumeEditModif.split('$1').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_RemoveCat).split('$2').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_AddCat); } else { OldText = OldText.replace(CatRegExp, ""); Sommaire = RenommageCategorie_Text_ResumeEditDelete.split('$1').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_RemoveCat); } } else { var Error; if(OldCatmatches!=null){ Error = RenommageCategorie_Text_AlertEditPb2.split('$1').join(RenommageCategorie_AddCat); }else if(matches==null){ Error = RenommageCategorie_Text_AlertEditPb1.split('$1').join(RenommageCategorie_RemoveCat); }else if(matches.length>1){ Error = RenommageCategorie_Text_AlertEditPb3.split('$1').join(RenommageCategorie_RemoveCat); } var Suivante = confirm(Error + RenommageCategorie_Text_AlertEditNextPage); if(!Suivante){ window.location.reload(); }else{ RenommageCategorie_AddBandeau(CatArray, (position+1)); } return; } } var TexteFinal = OldText; var SommaireFinal = Sommaire ; document.getElementById('wpTextbox1').value = TexteFinal; document.getElementById('wpSummary').value = RenommageCategorie_Text_Script+SommaireFinal; document.getElementById('wpMinoredit').checked = "checked"; if(RenommageCategorie_AutoWatch) document.getElementById('wpWatchthis').checked = "checked"; else document.getElementById('wpWatchthis').checked = ""; if(!RenommageCategorie_Autoconfirm){ var SurEtCertain = confirm(RenommageCategorie_Text_ConfirmEdit.split('$1').join(RenommageCategorie_RemoveCat).split('$2').join(RenommageCategorie_AddCat).split('$3').join(Sommaire)); if(!SurEtCertain){ var SurEtCertainBis = confirm(RenommageCategorie_Text_AlertEditNextPage); if(!SurEtCertainBis){ window.location.reload(); }else{ RenommageCategorie_ModifCat((position+1)); } return; } } var action = document.getElementById("editform").action; var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; RenommageCategorie_ajax.http({ url: action, method: "POST", headers: headers, data: RenommageCategorie_GetPostValues(), onSuccess:RenommageCategorie_ModifCatDone, position:position }); } function RenommageCategorie_ModifCatDone(Req, data){ var position = data.position; while(document.body.firstChild){RenommageCategorie_DeleteElement(document.body.firstChild);} document.body.innerHTML = Req.responseText; if(!document.getElementById("editform")){ if(RenommageCategorie_IsBot){ RenommageCategorie_ModifCat((position+1)); }else{ setTimeout("RenommageCategorie_ModifCat("+(position+1)+")",RenommageCategorie_TimeOut*1000); } }else{ if(!RenommageCategorie_IsBot){ var DeuxiemeEssai = confirm(RenommageCategorie_Text_AlertEditTryAgain); if(!DeuxiemeEssai) return; } RenommageCategorie_ModifCat(position); } } // -------------------------------------------------------------------------------------------- // Création nouvelle catégorie par copie function RenommageCategorie_CreateNewCat(){ var URLOldCat = wgServer+wgScript+'?title='+wgFormattedNamespaces[14]+':'+encodeURIComponent(RenommageCategorie_RemoveCat)+'&action=raw'; RenommageCategorie_ajax.http({ url: URLOldCat, onSuccess:RenommageCategorie_CreateNewCat_GetOldText }); } function RenommageCategorie_CreateNewCat_GetOldText(Req, data){ var Text = Req.responseText; var URLNewCat = wgServer+wgScript+'?title='+wgFormattedNamespaces[14]+':'+encodeURIComponent(RenommageCategorie_AddCat)+'&action=edit'; RenommageCategorie_ajax.http({ url: URLNewCat, onSuccess:RenommageCategorie_CreateNewCatProcess, text:Text }); } function RenommageCategorie_CreateNewCatProcess(Req, data){ var TexteFinal = data.text; while(document.body.firstChild){ RenommageCategorie_DeleteElement(document.body.firstChild);} document.body.innerHTML = Req.responseText; var TextArea = document.getElementById('wpTextbox1'); if(!TextArea){ var Problem = confirm( urlNewCat + '\n\n' + RenommageCategorie_Text_AlertEditTryAgain ); if(Problem){ RenommageCategorie_CreateNewCat(); } return; } var SommaireFinal = RenommageCategorie_Text_Script + RenommageCategorie_Text_ResumeMove.split('$1').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_RemoveCat); document.getElementById('wpTextbox1').value = TexteFinal; document.getElementById('wpSummary').value = SommaireFinal; document.getElementById('wpMinoredit').checked = "checked"; if(!RenommageCategorie_Autoconfirm){ var SurEtCertainNewCat = confirm(RenommageCategorie_Text_ConfirmMoveBis); if(!SurEtCertainNewCat){ return; } } var action = document.getElementById("editform").action; var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; RenommageCategorie_ajax.http({ url: action, method: "POST", headers: headers, data: RenommageCategorie_GetPostValues(), onSuccess:RenommageCategorie_CreateNewCatDone }); } function RenommageCategorie_CreateNewCatDone(Req, data){ while(document.body.firstChild){RenommageCategorie_DeleteElement(document.body.firstChild);} document.body.innerHTML = Req.responseText; if(!document.getElementById("editform")){ RenommageCategorie_GetUsers(); }else{ var DeuxiemeEssai = confirm(RenommageCategorie_Text_AlertEditTryAgain); if(DeuxiemeEssai) RenommageCategorie_CreateNewCat(); } } // -------------------------------------------------------------------------------------------- // Crédit des auteurs de l'ancienne catégorie : recherche des auteurs function RenommageCategorie_GetUsers(Users, UserContinue){ if(!Users) Users = new Array(); if(!UserContinue) UserContinue = ""; var URL = wgServer+wgScriptPath+'/api.php?format=xml&action=query&prop=revisions' + '&rvlimit='+RenommageCategorie_APILimit + '&rvprop=user' + '&titles='+wgFormattedNamespaces[14]+':'+encodeURIComponent(RenommageCategorie_RemoveCat) + UserContinue; RenommageCategorie_ajax.http({ url: URL, onSuccess:RenommageCategorie_GetUsersDone, users:Users }); } function RenommageCategorie_GetUsersDone(Req, data){ var Users = data.users; var Reponse = Req.responseXML; var RevUsers = Reponse.getElementsByTagName("rev"); for(var a=0;a<RevUsers.length;a++){ var ThisUser = RevUsers[a].getAttribute("user"); if(Users.indexOf(ThisUser)==-1) Users.push(ThisUser); } var RevContinue = Reponse.getElementsByTagName("query-continue")[0]; if(RevContinue){ var Cont = "&rvstartid=" + encodeURIComponent(RevContinue.firstChild.getAttribute("rvstartid")); RenommageCategorie_GetUsers(Users, Cont); }else{ var urlTalkNewCat = wgServer+wgScript+'?title='+wgFormattedNamespaces[15]+':'+encodeURIComponent(RenommageCategorie_AddCat)+'&action=edit'; RenommageCategorie_ajax.http({ url: urlTalkNewCat, onSuccess:RenommageCategorie_UpDateCatTalkPage, users:Users }); RenommageCategorie_UpDateCatTalkPage(Users); } } // -------------------------------------------------------------------------------------------- // Crédit des auteurs de l'ancienne catégorie : édition de la page de discussion function RenommageCategorie_UpDateCatTalkPage(Req, data){ var Users = data.users; while(document.body.firstChild){ RenommageCategorie_DeleteElement(document.body.firstChild);} document.body.innerHTML = Req.responseText; var TextArea = document.getElementById('wpTextbox1'); if(!TextArea){ var Problem = confirm( urlTalkNewCat + '\n\n' + RenommageCategorie_Text_AlertEditTryAgain ); if(Problem){ RenommageCategorie_UpDateCatTalkPage(Users); } return; } var OldContent = TextArea.value; var NewTemplate = RenommageCategorie_Text_HistTemplate.split('$1').join(RenommageCategorie_RemoveCat); var UserList = ""; for(var a=0;a<Users.length;a++){ if(a!=0) UserList += ", "; UserList += RenommageCategorie_Text_UserTemplate.split('$1').join(Users[a]); } NewTemplate = NewTemplate.split('$2').join(UserList); var TexteFinal = NewTemplate + OldContent; var SommaireFinal = RenommageCategorie_Text_Script + RenommageCategorie_Text_ResumeMoveHist.split('$1').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_RemoveCat); document.getElementById('wpTextbox1').value = TexteFinal; document.getElementById('wpSummary').value = SommaireFinal; document.getElementById('wpMinoredit').checked = "checked"; if(!RenommageCategorie_Autoconfirm){ var SurEtCertainNewCat = confirm(RenommageCategorie_Text_ConfirmMoveBis); if(!SurEtCertainNewCat){ return; } } var action = document.getElementById("editform").action; var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; RenommageCategorie_ajax.http({ url: action, method: "POST", headers: headers, data: RenommageCategorie_GetPostValues(), onSuccess:RenommageCategorie_UpDateCatTalkPageDone, users:Users }); } function RenommageCategorie_UpDateCatTalkPageDone(Req, data){ var Users = data.users; while(document.body.firstChild){RenommageCategorie_DeleteElement(document.body.firstChild);} document.body.innerHTML = Req.responseText; if(!document.getElementById("editform")){ var urlOldCat = wgServer + wgScript + '?title=' + wgFormattedNamespaces[14]+':'+encodeURIComponent(RenommageCategorie_RemoveCat) var DeleteOldCat_SurEtCertain = confirm(RenommageCategorie_Text_ConfirmDelete.split('$1').join(RenommageCategorie_RemoveCat)); if(DeleteOldCat_SurEtCertain){ if(wgUserGroups.indexOf('sysop')!=-1){ RenommageCategorie_ajax.http({ url: urlOldCat + '&action=delete', onSuccess:RenommageCategorie_DeleteOldCat }); }else{ RenommageCategorie_ajax.http({ url: urlOldCat + '&action=edit', onSuccess:RenommageCategorie_DoDeletionRequest }); } }else{ window.location.reload; return; } }else{ var DeuxiemeEssai = confirm(RenommageCategorie_Text_AlertEditTryAgain); if(DeuxiemeEssai) RenommageCategorie_UpDateCatTalkPage(Users); } } // -------------------------------------------------------------------------------------------- // Suppression de l'ancienne catégorie function RenommageCategorie_DeleteOldCat(Req, data){ while(document.body.firstChild){ RenommageCategorie_DeleteElement(document.body.firstChild);} var ElementTraitement = document.createElement('div'); document.body.appendChild(ElementTraitement); ElementTraitement.innerHTML = Req.responseText; var InputReason = document.getElementById('wpReason'); if(RenommageCategorie_AddCat==''){ InputReason.value = RenommageCategorie_Text_Script+RenommageCategorie_Text_ResumeDeleteBis; }else{ InputReason.value = RenommageCategorie_Text_Script+RenommageCategorie_Text_ResumeDelete.split('$2').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_AddCat); } var CheckWatch = document.getElementById('wpWatch'); CheckWatch.checked = ''; var DeleteForm = document.getElementById('deleteconfirm'); if(RenommageCategorie_Autoconfirm){ DeleteForm.submit(); }else{ var SurEtCertain = confirm(RenommageCategorie_Text_ConfirmDelete.split('$1').join(RenommageCategorie_RemoveCat)); if(SurEtCertain) DeleteForm.submit(); } } // -------------------------------------------------------------------------------------------- // Demande de suppression de l'ancienne catégorie function RenommageCategorie_DoDeletionRequest(Req, data){ while(document.body.firstChild){ RenommageCategorie_DeleteElement(document.body.firstChild);} var ElementTraitement = document.createElement('div'); document.body.appendChild(ElementTraitement); ElementTraitement.innerHTML = Req.responseText; var EditForm = document.getElementById('editform'); EditForm.style.display = "none"; var Reason = ""; if(RenommageCategorie_AddCat==''){ Reason = RenommageCategorie_Text_Script+RenommageCategorie_Text_ResumeDeleteBis; }else{ Reason = RenommageCategorie_Text_Script+RenommageCategorie_Text_ResumeDelete.split('$2').join(":"+wgFormattedNamespaces[14]+":"+RenommageCategorie_AddCat); } var DeleteTemplate = RenommageCategorie_Text_DeleteTemplate; DeleteTemplate = DeleteTemplate.split("$1").join(Reason).split("$2").join("~"+"~~"); document.getElementById('wpTextbox1').value = DeleteTemplate; document.getElementById('wpSummary').value = Reason; EditForm.submit(); } // -------------------------------------------------------------------------------------------- // FONCTION : Récupération des paramètres de publications function RenommageCategorie_GetPostValues(){ var data=""; var Params = new Array("wpTextbox1", "wpSection", "wpSummary", "wpWatchthis", "wpMinoredit", "wpStarttime", "wpEdittime", "wpEditToken"); for(var a=0,l=Params.length;a<l;a++){ var Element = document.getElementById(Params[a]); if(!Element) Element = document.getElementsByName(Params[a])[0]; if(Element){ if(!(Element.tagName && Element.tagName.toLowerCase()=='input' && Element.type == 'checkbox' && !Element.checked)){ data += '&'+Params[a]+'=' + encodeURIComponent(Element.value); } } } return (data+'&wpsave=1'); } // FONCTION : Suppression d'un élément function RenommageCategorie_DeleteElement(OldElement){ var agt=navigator.userAgent.toLowerCase(); var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); if(is_ie){ OldElement.removeNode(true); }else{ if(OldElement.parentNode){document=OldElement.parentNode.removeChild(OldElement);} } } // </nowiki></pre></source>