User:Kc kennylau/RenameCategorie.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
var RenommageCategorie_Text_Move = '重命名';
// Pop-up paramètres
var RenommageCategorie_Text_PopRemoveCat = '原名称';
var RenommageCategorie_Text_PopAddCat = '新名称';
var RenommageCategorie_Text_PopConfirm = '不需要人工确认吗?';
var RenommageCategorie_Text_PopWatch = '监视修改的页面?';
var RenommageCategorie_Text_PopButtonOKText = '确认';
var RenommageCategorie_Text_PopButtonOKTitle = '确认';
var RenommageCategorie_Text_PopButtonCancelText = '取消';
var RenommageCategorie_Text_PopButtonCancelTitle = '取消';
// Pop-up de confirmation
var RenommageCategorie_Text_Modif = "你将修改$1个页面。\n\n"
+ "继续吗?\n"; // Confirmation édition (<50 pages)
var RenommageCategorie_Text_GrosseModif = "你将修改$1个页面。\n"
+ "这样大量的工作最好由机器人完成。\n\n"
+ "依然继续吗?\n"; // Confirmation grosse édition (>50 pages)
var RenommageCategorie_Text_Delay = "(每次修改之间延迟$1 秒)";
var RenommageCategorie_Text_ConfirmEdit = "$1 -> $2\n\n确认修改 : $3"; // Confirmation édition
var RenommageCategorie_Text_ConfirmMove = "把$1的页面复制到$2吗?"; // Copie
var RenommageCategorie_Text_ConfirmMoveBis = '提交本次复制编辑吗?' // Confirmation Copie
var RenommageCategorie_Text_ConfirmDelete = "删除$1吗?"; // Suppression
// Pop-up lors d'un problème
var RenommageCategorie_Text_AlertSameCat = "移除和添加的分类不能相同。";
var RenommageCategorie_Text_AlertEditPb1 = "找不到分类« $1 »。";
var RenommageCategorie_Text_AlertEditPb2 = "分类 « $1 » 已经存在。";
var RenommageCategorie_Text_AlertEditPb3 = "发现多个 « $1 » 分类。";
var RenommageCategorie_Text_AlertEditTryAgain = '出错!\n\n重试?';
var RenommageCategorie_Text_AlertEditNextPage = '下一步?'
// Résumés de modification
var RenommageCategorie_Text_ResumeEditModif = "更改分类 [[$1]] → [[$2]]";
var RenommageCategorie_Text_ResumeEditDelete = "移除分类 [[$1]]";
var RenommageCategorie_Text_ResumeMove = "移动自分类 [[$1]]";
var RenommageCategorie_Text_ResumeMoveHist = "移动分类编辑历史 [[$1]]";
var RenommageCategorie_Text_ResumeDelete = "移动到分类 [[$2]]";
var RenommageCategorie_Text_ResumeDeleteBis = "空的废弃分类";
////////////////////////////////////////////// TEXTES LOCAUX ///////////////////////////
// Résumés de modification : lien vers la documentation
var RenommageCategorie_Text_Script = '[[Wikipedia:维基百科工具/RenommageCategorie|分类重命名工具]] : ';
// Modèle pour crédit des auteurs en page de discussion
var RenommageCategorie_Text_HistTemplate = "{{分类重命名|$1|users=$2}}\n";
// Modèle User
var RenommageCategorie_Text_UserTemplate = "{{User|$1}}";
// Modèle Suppression Immédiate
var RenommageCategorie_Text_DeleteTemplate = "{{del"+"ete|O4}}";
//////////////////////////////////////////////////////////////////////////////
// --------------------------------------------------------------------------------------------
// 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){
mw.loader.load('//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 = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&rawcontinue=&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 = mw.config.get('wgServer') + mw.config.get('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 = mw.config.get('wgServer') + mw.config.get('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 != "" ) {
OldText = RenommageCategorie_CleanCats(OldText);
var OldCatRegExp = RenommageCategorie_CreateRegExp(RenommageCategorie_RemoveCat);
var OldCatmatches = OldText.match(OldCatRegExp);
var AddCatRegExp = RenommageCategorie_CreateRegExp(RenommageCategorie_AddCat);
var NewCatmatches = OldText.match(AddCatRegExp);
if (NewCatmatches == null && OldCatmatches != null && OldCatmatches.length == 1) { // Found one occurrence of the category - good!
if(RenommageCategorie_AddCat != ""){
OldText = OldText.replace(OldCatRegExp, "$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(OldCatRegExp, "");
Sommaire = RenommageCategorie_Text_ResumeEditDelete.split('$1').join(wgFormattedNamespaces[14]+":"+RenommageCategorie_RemoveCat);
}
} else {
var Error;
if(NewCatmatches!=null){
Error = RenommageCategorie_Text_AlertEditPb2.split('$1').join(RenommageCategorie_AddCat);
}else if(OldCatmatches==null){
Error = RenommageCategorie_Text_AlertEditPb1.split('$1').join(RenommageCategorie_RemoveCat);
}else if(OldCatmatches.length>1){
Error = RenommageCategorie_Text_AlertEditPb3.split('$1').join(RenommageCategorie_RemoveCat);
}
var Suivante = confirm(Error + "\n\n" + 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;
var Minor = document.getElementById('wpMinoredit');
if(Minor) Minor.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 = mw.config.get('wgServer')+mw.config.get('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 = mw.config.get('wgServer')+mw.config.get('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;
var Minor = document.getElementById('wpMinoredit');
if(Minor) Minor.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 = mw.config.get('wgServer')+mw.config.get('wgScriptPath')+'/api.php?format=xml&action=query&rawcontinue=&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 = mw.config.get('wgServer')+mw.config.get('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;
var Minor = document.getElementById('wpMinoredit');
if(Minor) Minor.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 = mw.config.get('wgServer') + mw.config.get('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;
var Minor = document.getElementById('wpMinoredit');
if(Minor) Minor.checked = "checked";
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);}
}
}
function RenommageCategorie_CleanCats(OldText){
var CatRegExp = new RegExp("\\[\\[(?:"+wgFormattedNamespaces[14]+"|Category):[^\\]]+\\]\\]", "ig");
var CatNSRegExp = new RegExp("("+wgFormattedNamespaces[14]+"|Category) *: *", "ig");
var Matches = OldText.match(CatRegExp);
if(Matches==null) return OldText;
for(var a=0,l=Matches.length;a<l;a++){
var Newcat = Matches[a].replace(/_/g, " ");
var catNSmatch = Newcat.match(CatNSRegExp);
if(catNSmatch!=null){
for(var b=0,m=catNSmatch.length;b<m;b++){
Newcat = Newcat.replace(catNSmatch[b], wgFormattedNamespaces[14]+":");
}
}
var Index = Newcat.indexOf(wgFormattedNamespaces[14]);
if(Index!=-1){
Index = (Index + wgFormattedNamespaces[14].length + 1);
var StartCat = Newcat.substring(0, Index);
var EndCat = Newcat.substring(Index, Newcat.length).ucFirst();
Newcat = StartCat + EndCat;
}
OldText = OldText.replace(Matches[a], Newcat);
}
return OldText;
}
// FONCTION : création RegExp
function RenommageCategorie_CreateRegExp(Cat){
var CatRegExp = new RegExp("(\\s*)\\[\\[ *(?:"+wgFormattedNamespaces[14]+"|Category):" + Cat.ucFirst().replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1")+" *(\\|[^\\]]*)?\\]\\]", "g");
return CatRegExp;
}
// FONCTION : première lettre en majuscule
String.prototype.ucFirst = function () {
return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
}
// FONCTION : première lettre en minuscule
String.prototype.lcFirst = function () {
return this.substr(0,1).toLowerCase() + this.substr(1,this.length);
}
function RenommageCategorie_SiteCustom(){
RenommageCategorie_Text_Script = '[[Wikipedia:维基百科工具/RenommageCategorie|分类重命名工具]]: ';
}