ميدياويكي:Gadget-RenommageCategorie.js

من كوبتيكبيديا
اذهب إلى التنقلاذهب الى البحث
لم تعد النسخة القابلة للطباعة مدعومة وقد تحتوي على أخطاء في العرض. يرجى تحديث علامات متصفحك المرجعية واستخدام وظيفة الطباعة الافتراضية في متصفحك بدلا منها.

ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
// From frWP
////////////////////////////////////////////// TEXTES GLOBAUX ///////////////////////////
// Libellé de l'onglet
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 = "\u202Bعدد الصفحات التي ستعدل: $1.\u00A0" + "\u202Bوكد ذلك.\u00A0"; // Confirmation édition (<50 pages)
var RenommageCategorie_Text_GrosseModif = "\u202Bعدد الصفحات التي ستعدل: $1.\u00A0" + "\u202Bهذا تعديل كثير يستحسن أن يستعمل عليه بوت.\u00A0" + "\u202Bوكد ذلك.\u00A0"; // Confirmation grosse édition (>50 pages)
var RenommageCategorie_Text_Delay = "\u202B(المدة بين التعديلين بالثواني: $1)\u202B";
var RenommageCategorie_Text_ConfirmEdit = "$1 ⇒ $2\n\u202Bملخص التعديل: $3"; // Confirmation édition
var RenommageCategorie_Text_ConfirmMove = "\u202Bانقل مواد \u202B$1 إلى \u202B$2"; // Copie
var RenommageCategorie_Text_ConfirmMoveBis = '\u202Bاحفظ التعديل'; // Confirmation Copie
var RenommageCategorie_Text_ConfirmDelete = "\u202Bاحذف التصنيف \u202B$1"; // Suppression

// Pop-up lors d'un problème
var RenommageCategorie_Text_AlertSameCat = "\u202Bالتصنيفات المراد حذفها هي نفسها المراد إضافتها";
var RenommageCategorie_Text_AlertEditPb1 = "\u202Bتصنيف \u202B$1 غير وارد.\u00A0قد يكون مضمنا في قالب.";
var RenommageCategorie_Text_AlertEditPb2 = "\u202Bتصنيف \u202B$1 موجود.";
var RenommageCategorie_Text_AlertEditPb3 = "\u202Bتصنيف \u202B$1 متكرر.";
var RenommageCategorie_Text_AlertEditTryAgain = '\u202Bتعذر التنفيذ.\u00A0\u202Bكرر الطلب';
var RenommageCategorie_Text_AlertEditNextPage = '\u202Bعدل الصفحة التالية';

// Résumés de modification
var RenommageCategorie_Text_ResumeEditModif = "تعديل [[$1]] إلى [[$2]]";
var RenommageCategorie_Text_ResumeEditDelete = "حذف تصنيف [[$1]]";
var RenommageCategorie_Text_ResumeMove = "\u202Bنقل مواد [[$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 = '[[ميدياويكي:Gadget-RenommageCategorie|نقل تصنيفات]]: ';

// Modèle pour crédit des auteurs en page de discussion
var RenommageCategorie_Text_HistTemplate = "{{تصنيف منقول|$1|م=$2}}\n";

// Modèle User
var RenommageCategorie_Text_UserTemplate = "{{م|$1}}";

// Modèle Suppression Immédiate
var RenommageCategorie_Text_DeleteTemplate = "{{"+"شطب|$1|م=$2}}";

//////////////////////////////////////////////////////////////////////////////

// --------------------------------------------------------------------------------------------
// Variables par défaut

var RenommageCategorie_RemoveCat = mw.config.get('wgTitle'); // Catégorie à enlever
var RenommageCategorie_AddCat = mw.config.get('wgTitle'); // Catégorie à ajouter
var RenommageCategorie_Autoconfirm = false; // Publication automatique
var RenommageCategorie_AutoWatch = false; // Suivi automatique
var RenommageCategorie_TimeOut = 1; // Délai par défaut après publication

if ((mw.config.get('wgUserGroups').indexOf("sysop") != -1) || (mw.config.get('wgUserGroups').indexOf("bot") != -1)) {
	var RenommageCategorie_APILimit = 4999;
} else {
	var RenommageCategorie_APILimit = 499;
}
if (mw.config.get('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 (mw.config.get('wgNamespaceNumber') == 14) {
	importScriptURI('//ar.wikipedia.org/w/index.php?title=Mediawiki:Gadget-RenommageCategorieLang.js&action=raw&ctype=text/javascript');
	$(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><span><a href="javascript:RenommageCategorie_OpenMenu();">' + RenommageCategorie_Text_Move + '</a></span></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 = 'whitesmoke';
	Menu.style.border = '1px solid silver';
	Menu.style.width = '30.5em';
	Menu.style.height = '7em';
	document.body.appendChild(Menu);
	PositionDroite = parseInt((LargeurEcran - Menu.clientWidth) / 2);
	PositionHaut = parseInt((HauteurEcran - Menu.clientHeight) / 3);
	Menu.style.right = PositionDroite + 'px';
	Menu.style.top = PositionHaut + 'px';
	var MenuContent = '' + '<input type="text" id="RemoveCat" value="' + mw.config.get('wgTitle') + '" disabled="disabled" size="50"/>' + '&nbsp;' + '<label for="RemoveCat">' + RenommageCategorie_Text_PopRemoveCat + '</label>' + '<br />' + '<input type="text" id="AddCat" value="' + mw.config.get('wgTitle') + '" size="50" />' + '&nbsp;' + '<label for="AddCat">' + RenommageCategorie_Text_PopAddCat + '</label>' + '<br />' + '<input type="checkbox" id="Autoconfirm" style="cursor:pointer;" checked/>' + '<label for="Autoconfirm">' + RenommageCategorie_Text_PopConfirm + '</label>' + '&nbsp;&nbsp;' + '<input type="checkbox" id="AutoWatch" style="cursor:pointer;" />' + '<label for="AutoWatch">' + RenommageCategorie_Text_PopWatch + '</label>' + '<br />' + '<center>' + '<input type="button" style="cursor:pointer;" ' + ' value="' + RenommageCategorie_Text_PopButtonOKText + '" title="' + RenommageCategorie_Text_PopButtonOKTitle + '" ' + ' onclick="RenommageCategorie_CheckMenu();" onselect="RenommageCategorie_CheckMenu();"/>' + '&nbsp;&nbsp;' + '<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 = mw.config.get('wgPageName');
	if (!categorycontinue) categorycontinue = '';
	var URL = mw.config.get('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 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + mw.config.get('wgFormattedNamespaces')[14] + ':' + encodeURIComponent(RenommageCategorie_RemoveCat);
			var DeleteOldCat_SurEtCertain = confirm(RenommageCategorie_Text_ConfirmDelete.split('$1').join(RenommageCategorie_RemoveCat));
			if (DeleteOldCat_SurEtCertain) {
				if (mw.config.get('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 + '\u00A0' + 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[[" + mw.config.get('wgFormattedNamespaces')[14] + ":" + RenommageCategorie_AddCat + "$2]]");
				Sommaire = RenommageCategorie_Text_ResumeEditModif.split('$1').join(mw.config.get('wgFormattedNamespaces')[14] + ":" + RenommageCategorie_RemoveCat).split('$2').join(mw.config.get('wgFormattedNamespaces')[14] + ":" + RenommageCategorie_AddCat);
			} else {
				OldText = OldText.replace(OldCatRegExp, "");
				Sommaire = RenommageCategorie_Text_ResumeEditDelete.split('$1').join(mw.config.get('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 + "\u00A0" + 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=' + mw.config.get('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=' + mw.config.get('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 + '\u00A0' + RenommageCategorie_Text_AlertEditTryAgain);
		if (Problem) {
			RenommageCategorie_CreateNewCat();
		}
		return;
	}
	var SommaireFinal = RenommageCategorie_Text_Script + RenommageCategorie_Text_ResumeMove.split('$1').join(mw.config.get('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') + wgScriptPath + '/api.php?format=xml&action=query&prop=revisions' + '&rvlimit=' + RenommageCategorie_APILimit + '&rvprop=user' + '&titles=' + mw.config.get('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=' + mw.config.get('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 + '\u00A0' + 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(mw.config.get('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=' + mw.config.get('wgFormattedNamespaces')[14] + ':' + encodeURIComponent(RenommageCategorie_RemoveCat)
		var DeleteOldCat_SurEtCertain = confirm(RenommageCategorie_Text_ConfirmDelete.split('$1').join(RenommageCategorie_RemoveCat));
		if (DeleteOldCat_SurEtCertain) {
			if (mw.config.get('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(mw.config.get('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(":" + mw.config.get('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("\\[\\[(?:" + mw.config.get('wgFormattedNamespaces')[14] + "|Category):[^\\]]+\\]\\]", "ig");
	var CatNSRegExp = new RegExp("(" + mw.config.get('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], mw.config.get('wgFormattedNamespaces')[14] + ":");
			}
		}
		var Index = Newcat.indexOf(mw.config.get('wgFormattedNamespaces')[14]);
		if (Index != -1) {
			Index = (Index + mw.config.get('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*)\\[\\[ *(?:" + mw.config.get('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);
}