تضامنًا مع حق الشعب الفلسطيني |
ميدياويكي:Gadget-RenommageCategorie.js
اذهب إلى التنقل
اذهب إلى البحث
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.
// 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) {
mw.loader.load('//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"/>' + ' ' + '<label for="RemoveCat">' + RenommageCategorie_Text_PopRemoveCat + '</label>' + '<br />' + '<input type="text" id="AddCat" value="' + mw.config.get('wgTitle') + '" size="50" />' + ' ' + '<label for="AddCat">' + RenommageCategorie_Text_PopAddCat + '</label>' + '<br />' + '<input type="checkbox" id="Autoconfirm" style="cursor:pointer;" checked/>' + '<label for="Autoconfirm">' + RenommageCategorie_Text_PopConfirm + '</label>' + ' ' + '<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();"/>' + ' ' + '<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') + mw.config.get('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') + mw.config.get('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);
}