کاربر:Jeeputer/moveCategory.js
ظاهر
کدهایی که در این صفحه قرار میدهید، ممکن است حاوی محتوای مخربی باشند که حساب کاربری شما را به خطر میاندازند. اگر با استفاده از دستور «importScript» یا الگوی «نصب اسکریپت کاربری» اسکریپتی را از صفحهای دیگر درونریزی میکنید، دقت داشتهباشید که این کار باعث میشود تا بهطور سیال اسکریپتی را بارگیری کنید که امکان تغییر آن توسط دیگران وجود دارد. اگر از امنیت کدهایی که به این صفحه میافزایید مطمئن نیستید، در قهوهخانهٔ فنی درخواست کمک کنید. هرگاه پیشنمایش تغییراتی که در این صفحه اعمال کردهاید را مشاهده کنید، کد اجرا خواهد شد. |
بهنظر میرسد که این اسکریپت کاربری دارای یک صفحهٔ مستندات است که در کاربر:Jeeputer/moveCategory قرار دارد. |
$.when(
mw.loader.using(['mediawiki.Title', 'ext.gadget.morebits-2022']),
$.ready
).then(function(){
if (mw.config.get('wgUserGroups').indexOf('bot') === -1 && mw.config.get('wgNamespaceNumber') !== 14) {
return;
}
var ad = ' ([[کاربر:Jeeputer/moveCategory|اسکریپت انتقال رده]])';
var link = mw.util.addPortletLink( 'p-cactions', '#', 'انتقال رده', 'ca-move-cat', 'انتقال صفحهٔ رده و تمام صفحههای موجود در آن' );
link.addEventListener('click', callback);
var api = new mw.Api();
function callback(e) {
if (e) e.preventDefault();
var Window = new Morebits.simpleWindow(400, 200);
Window.setScriptName('انتقال رده');
Window.setTitle("انتقال رده و صفحههای موجود در آن");
var form = new Morebits.quickForm(evaluate);
form.append({
type: 'input',
label: 'عنوان جدید',
name: 'destination',
tooltip: 'بهمنظور تسهیل اصلاح غلطهای املایی، عنوان کنونی صفحه از پیش در این جعبه وارد شده است. ' +
'در صورتی که میخواهید عنوان را بهطور کلی تغییر دهید، متن موجود را حذف کنید و عنوان جدید را وارد کنید.',
value: mw.config.get('wgTitle').replace(/\_/g, ' ')
});
form.append({
type: 'input',
label: 'دلیل انتقال',
name: 'reason',
tooltip: 'وارد کردن دلیل بهمنظور ثبت در سیاهه الزامی است',
required: true
});
form.append({
type: 'checkbox',
name: 'options',
list: [{
label: 'انتقال صفحهٔ بحث',
name: 'movetalk',
checked: true,
}, {
label: 'برجای گذاشتن تغییرمسیر',
name: 'redirect',
checked: false,
tooltip: 'برجای گذاشتن صفحهای حاوی الگوی «رده بهتر» در عنوان کنونی؛ این گزینه زمانی ' +
'کاربرد دارد که عنوان کنونی حاوی غلط املایی نباشد و مفهوم و گسترهٔ تحت پوشش رده را به خوبی منتقل کند.'
}],
});
form.append({
type: 'submit',
label: 'تأیید'
});
var result = form.render();
Window.setContent(result);
Window.display();
}
function evaluate(e) {
var form = e.target;
var params = {
destination: '',
reason: '',
movetalk: true,
redirect: false
};
params.destination = form.destination.value;
if (params.destionation === '') {
alert('لطفاً عنوان صفحهٔ مقصد را وارد کنید!');
return;
} else if (params.destination === mw.config.get('wgTitle')) {
alert('عنوان وارد شده برای صفحهٔ هدف با عنوان کنونی صفحه یکسان است. انتقال امکانپذیر نیست.');
return;
} else if ((params.destination).substr(0, 4) === 'رده:') {
params.destination = (params.destination).substr(4, params.destination.length);
}
params.reason = form.reason.value;
if (!form.movetalk.checked) params.movetalk = false;
if (form.redirect.checked) params.redirect = true;
var currPage = new Morebits.wiki.page(mw.config.get('wgPageName'), 'در حال انتقال رده به عنوان تازه');
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init(form);
Morebits.wiki.api.setApiUserAgent('[[w:User:Jeeputer/Easy-Merge.js]]');
Morebits.wiki.actionCompleted.notice = 'صفحهٔ رده منتقل شد';
currPage.setMoveDestination('رده:' + params.destination);
currPage.setMoveTalkPage(params.movetalk);
currPage.setMoveSuppressRedirect(!params.redirect);
currPage.setEditSummary(params.reason + ad);
currPage.setBotEdit(true);
currPage.move(moveMembers);
}
function moveMembers(e) {
var oldTitle = e.query.from.replace(/\_/g, ' '),
newTitle = e.query.to;
api.get({
action: 'query',
list: 'categorymembers',
cmtitle: oldTitle,
cmprop: 'title',
cmnamespace: '*',
cmlimit: 'max'
}).done(function(data) {
data.query.categorymembers.forEach(function(item) {
var page = new Morebits.wiki.page(item.title, 'در حال ویرایش صفحهٔ ' + item.title);
page.load(function(page) {
var newText = page.getPageText().replace(oldTitle, newTitle);
page.setBotEdit(true);
page.setPageText(newText);
page.setEditSummary('انتقال از [[' + oldTitle + ']] به [[' + newTitle + ']]' + ad);
page.setCreateOption('nocreate');
page.save();
});
});
});
}
});