مدیاویکی:Gadget-AfD.js: تفاوت میان نسخهها
پرش به ناوبری
پرش به جستجو
(صفحهای تازه حاوی «←global jQuery, mediaWiki: (function($, mw) { 'use strict'; var windowManager; var archiveAfD; var targetPage; var archiveOptions = { install: function() { if (mw.config.get('wgAction') === 'view' && ((mw.config.get('wgPageName').search("ویکیپدیا:نظرخواهی_برای_حذف/") > -1) || (mw.config.get('wgPageName').search("ویکیپدیا:نظرخواهی_برای_حذف_مت...» ایجاد کرد) |
بدون خلاصۀ ویرایش |
||
خط ۸: | خط ۸: | ||
install: function() { | install: function() { | ||
if (mw.config.get('wgAction') === 'view' && | if (mw.config.get('wgAction') === 'view' && | ||
((mw.config.get('wgPageName').search(" | ((mw.config.get('wgPageName').search("اسلامیکال:نظرخواهی_برای_حذف/") > -1) || | ||
(mw.config.get('wgPageName').search(" | (mw.config.get('wgPageName').search("اسلامیکال:نظرخواهی_برای_حذف_متفرقه/") > -1)) | ||
) { | ) { | ||
mw.loader.using(['mediawiki.api']).done(archiveOptions.setUp); | mw.loader.using(['mediawiki.api']).done(archiveOptions.setUp); | ||
خط ۴۱: | خط ۴۱: | ||
} else { | } else { | ||
targetPage = mw.config.get('wgPageName') | targetPage = mw.config.get('wgPageName') | ||
.replace(" | .replace("اسلامیکال:نظرخواهی_برای_حذف/", "") | ||
.replace(/_\(بار_[^\)]+?\)$/, "").replace(/_\([^\)]+?ین_نامزدی\)$/, ""); | .replace(/_\(بار_[^\)]+?\)$/, "").replace(/_\([^\)]+?ین_نامزدی\)$/, ""); | ||
} | } | ||
خط ۱۳۵: | خط ۱۳۵: | ||
archiveOptions.comboCommonReason = new OO.ui.ComboBoxInputWidget({ | archiveOptions.comboCommonReason = new OO.ui.ComboBoxInputWidget({ | ||
options: [{ | options: [{ | ||
data: '[[ | data: '[[پال:حذف/نبح|اجماعی برای حذف حاصل نشد.]]' | ||
}, | }, | ||
{ | { | ||
data: '[[ | data: '[[پال:سرشناسی|سرشناسی موضوع]] احراز نشد.' | ||
}, | }, | ||
{ | { | ||
خط ۱۴۴: | خط ۱۴۴: | ||
}, | }, | ||
{ | { | ||
data: '[[ | data: '[[پال:حذف نرم|حذف نرم]] (در نبود مشارکت کافی)' | ||
}, | }, | ||
{ | { | ||
خط ۱۵۳: | خط ۱۵۳: | ||
}, | }, | ||
{ | { | ||
data: '[[ | data: '[[اسلامیکال:ماندن سریع|انصراف نامزدکننده]]' | ||
}, | }, | ||
{ | { | ||
data: 'بر پایه [[ | data: 'بر پایه [[پال:برف]] نظرخواهی جمعبندی شد.' | ||
}, | }, | ||
] | ] | ||
خط ۲۰۵: | خط ۲۰۵: | ||
var debatePage = mw.config.get('wgPageName'); | var debatePage = mw.config.get('wgPageName'); | ||
var talkPrefix = 'بحث:'; | var talkPrefix = 'بحث:'; | ||
if (archiveOptions.targetPage.search(/کاربر:|الگو:|رده:| | if (archiveOptions.targetPage.search(/کاربر:|الگو:|رده:|اسلامیکال:|درگاه:|راهنما:/) > -1) { | ||
talkPrefix = 'بحث '; | talkPrefix = 'بحث '; | ||
} | } | ||
خط ۲۱۸: | خط ۲۱۸: | ||
if (archiveOptions.radioExtend.isSelected()) { | if (archiveOptions.radioExtend.isSelected()) { | ||
// Update subject page | // Update subject page | ||
summary = 'تمدید نظرخواهی [[ | summary = 'تمدید نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'; | ||
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.extendPage, summary); | archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.extendPage, summary); | ||
} else { | } else { | ||
خط ۲۲۴: | خط ۲۲۴: | ||
archiveOptions.checkRedirect(archiveOptions.targetPage); | archiveOptions.checkRedirect(archiveOptions.targetPage); | ||
// Remove page from WP:AfD | // Remove page from WP:AfD | ||
summary = 'حذف [[' + debatePage.replace(/\_/g, ' ') + ']] از [[ | summary = 'حذف [[' + debatePage.replace(/\_/g, ' ') + ']] از [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): '; | ||
archiveOptions.loadSavePageRefresh(' | archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف', archiveOptions.removeLink, summary); | ||
if (archiveOptions.radioDelete.isSelected()) { | if (archiveOptions.radioDelete.isSelected()) { | ||
archiveOptions.shortReason = 'حذف شود. '; | archiveOptions.shortReason = 'حذف شود. '; | ||
خط ۲۳۱: | خط ۲۳۱: | ||
archiveOptions.reason = 'حذف شود. ' + archiveOptions.reason; | archiveOptions.reason = 'حذف شود. ' + archiveOptions.reason; | ||
// Update AfD page | // Update AfD page | ||
summary = 'بستن نظرخواهی [[ | summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'; | ||
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary); | archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary); | ||
// Update AfD archives | // Update AfD archives | ||
archiveOptions.creationDate(debatePage, function(archlink) { | archiveOptions.creationDate(debatePage, function(archlink) { | ||
archiveOptions.archiveMonth(archlink, function(month) { | archiveOptions.archiveMonth(archlink, function(month) { | ||
summary = 'بایگانی نظرخواهی [[ | summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): '; | ||
archiveOptions.loadSavePageRefresh(' | archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary); | ||
}) | }) | ||
}); | }); | ||
خط ۲۵۵: | خط ۲۵۵: | ||
} | } | ||
// Update AfD page | // Update AfD page | ||
summary = 'بستن نظرخواهی [[ | summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'; | ||
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary); | archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary); | ||
// Update AfD archives | // Update AfD archives | ||
archiveOptions.creationDate(debatePage, function(archlink) { | archiveOptions.creationDate(debatePage, function(archlink) { | ||
archiveOptions.archiveMonth(archlink, function(month) { | archiveOptions.archiveMonth(archlink, function(month) { | ||
summary = 'بایگانی نظرخواهی [[ | summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): '; | ||
archiveOptions.loadSavePageRefresh(' | archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary); | ||
}) | }) | ||
}); | }); | ||
خط ۲۸۱: | خط ۲۸۱: | ||
} | } | ||
// Update AfD page | // Update AfD page | ||
summary = 'بستن نظرخواهی [[ | summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'; | ||
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary); | archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary); | ||
// Update AfD archives | // Update AfD archives | ||
archiveOptions.creationDate(debatePage, function(archlink) { | archiveOptions.creationDate(debatePage, function(archlink) { | ||
archiveOptions.archiveMonth(archlink, function(month) { | archiveOptions.archiveMonth(archlink, function(month) { | ||
summary = 'بایگانی نظرخواهی [[ | summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): '; | ||
archiveOptions.loadSavePageRefresh(' | archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary); | ||
}) | }) | ||
}); | }); | ||
خط ۴۸۲: | خط ۴۸۲: | ||
var page_name = mw.config.get("wgPageName"); | var page_name = mw.config.get("wgPageName"); | ||
text = '{{پیشینه حذف| تاریخ =~~' + '~~' + '~| نتیجه =' + archiveOptions.reason + ' | صفحه =' + page_name.replace(/\_/g, ' ') + ' |کوچک=}}\n\n' + text; | text = '{{پیشینه حذف| تاریخ =~~' + '~~' + '~| نتیجه =' + archiveOptions.reason + ' | صفحه =' + page_name.replace(/\_/g, ' ') + ' |کوچک=}}\n\n' + text; | ||
text = text.replace("صفحه = | text = text.replace("صفحه =اسلامیکال:نظرخواهی برای حذف/", "صفحه =") | ||
mw.notify('الگو پیشینه حذف به بحث صفحه افزوده شد!'); | mw.notify('الگو پیشینه حذف به بحث صفحه افزوده شد!'); | ||
return text; | return text; | ||
خط ۵۰۶: | خط ۵۰۶: | ||
} | } | ||
if (text2 === text) { | if (text2 === text) { | ||
mw.notify('توجه:برداشتن نظرخواهی از | mw.notify('توجه:برداشتن نظرخواهی از پال:نبح با خطا مواجه شد!', { | ||
type: 'error' | type: 'error' | ||
}); | }); | ||
} else { | } else { | ||
mw.notify('نظرخواهی از | mw.notify('نظرخواهی از پال:نبح برداشته شد!') | ||
} | } | ||
return text; | return text; | ||
خط ۵۸۵: | خط ۵۸۵: | ||
} else { | } else { | ||
mw.notify('مقاله حذف شد!'); | mw.notify('مقاله حذف شد!'); | ||
callback(title, 'محافظت صفحه بر اساس [[ | callback(title, 'محافظت صفحه بر اساس [[اسلامیکال:نظرخواهی_برای_حذف/' + title + | ||
'|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'); | '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'); | ||
} | } | ||
خط ۵۹۱: | خط ۵۹۱: | ||
mw.notify(data); | mw.notify(data); | ||
}); | }); | ||
if (title.search(/کاربر:|الگو:|رده:| | if (title.search(/کاربر:|الگو:|رده:|اسلامیکال:|درگاه:|راهنما:/) > -1) { | ||
var TalkLink = 'بحث ' + title; | var TalkLink = 'بحث ' + title; | ||
} else { | } else { |
نسخهٔ کنونی تا ۲۵ ژانویهٔ ۲۰۲۳، ساعت ۰۷:۴۰
/*global jQuery, mediaWiki */
(function($, mw) {
'use strict';
var windowManager;
var archiveAfD;
var targetPage;
var archiveOptions = {
install: function() {
if (mw.config.get('wgAction') === 'view' &&
((mw.config.get('wgPageName').search("اسلامیکال:نظرخواهی_برای_حذف/") > -1) ||
(mw.config.get('wgPageName').search("اسلامیکال:نظرخواهی_برای_حذف_متفرقه/") > -1))
) {
mw.loader.using(['mediawiki.api']).done(archiveOptions.setUp);
$(mw.util.addPortletLink(
'p-views', '#', 'جمعبندی', 'ca-afd', 'ابزار مدیریت نبح', null, '#ca-view'
)).click(function(e) {
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(archiveOptions.createWindow);
e.preventDefault();
});
// Late pre-loading
mw.loader.load(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']);
}
},
setUp: function() {
var targetPage;
var params = {
action: 'query',
prop: 'revisions',
titles: mw.config.get('wgPageName'),
format: 'json',
rvprop: 'content',
rvdir: 'newer',
rvlimit: '1'
};
(new mw.Api()).get(params).done(function(data) {
var pageId = Object.keys(data["query"]["pages"])[0];
var pageContent = data["query"]["pages"][pageId]["revisions"][0]["*"];
var sourceTemplate = pageContent.match(/\{\{مقاله\|(.*?)\}\}/);
if (sourceTemplate != null) {
targetPage = sourceTemplate[1];
} else {
targetPage = mw.config.get('wgPageName')
.replace("اسلامیکال:نظرخواهی_برای_حذف/", "")
.replace(/_\(بار_[^\)]+?\)$/, "").replace(/_\([^\)]+?ین_نامزدی\)$/, "");
}
// if the target page has moved, use the redirect destination instead
var params = {
action: "query",
prop: "info",
redirects: "1",
titles: targetPage,
format: "json"
};
(new mw.Api()).get(params).done(function(data) {
if ("redirects" in data["query"]) {
targetPage = data['query']['redirects'][0]['to'];
}
archiveOptions.targetPage = targetPage;
});
});
},
reason: '',
shortReason: '',
decisionCategory: '',
createWindow: function() {
if (archiveOptions.targetPage == null) {
// user tried to use the gadget while it is determining the AfD target
console.log('Gadget-AfD is still loading...');
return true; // so that user can click on the gadget link again
}
function ArchiveAfD(config) {
ArchiveAfD.super.call(this, config);
}
OO.inheritClass(ArchiveAfD, OO.ui.ProcessDialog);
ArchiveAfD.static.name = 'AfD dialog';
ArchiveAfD.static.title = 'مدیریت نظرخواهی حذف';
ArchiveAfD.static.actions = [{
action: 'archive',
label: 'ثبت',
flags: 'primary'
}, {
label: 'لغو',
flags: 'safe'
}];
ArchiveAfD.prototype.initialize = function() {
var fieldset = [];
ArchiveAfD.super.prototype.initialize.apply(this, arguments);
this.panel = new OO.ui.PanelLayout({
padded: true,
expanded: false
});
this.content = new OO.ui.FieldsetLayout();
archiveOptions.radioDelete = new OO.ui.RadioOptionWidget({
id: 'radioDelete',
label: 'حذف شود',
});
archiveOptions.radioMerge = new OO.ui.RadioOptionWidget({
id: 'radioMerge',
label: 'ادغام شود',
});
archiveOptions.radioKeep = new OO.ui.RadioOptionWidget({
id: 'radioKeep',
label: 'بماند',
});
archiveOptions.radioExtend = new OO.ui.RadioOptionWidget({
id: 'radioExtend',
label: 'تمدید نظرخواهی',
});
archiveOptions.radioSelect = new OO.ui.RadioSelectWidget({
items: [archiveOptions.radioDelete,
archiveOptions.radioMerge,
archiveOptions.radioKeep,
archiveOptions.radioExtend
]
});
archiveOptions.radioSelect.selectItem(archiveOptions.radioKeep);
archiveOptions.radioSelect.on('select', function() {
if (archiveOptions.radioDelete.isSelected()) {
archiveOptions.switchProtect.setDisabled(false);
} else {
archiveOptions.switchProtect.setDisabled(true);
}
if (archiveOptions.radioMerge.isSelected()) {
archiveOptions.textMergeTarget.setDisabled(false);
} else {
archiveOptions.textMergeTarget.setDisabled(true);
if (archiveOptions.radioExtend.isSelected()) {
archiveOptions.comboCommonReason.setDisabled(true);
} else {
archiveOptions.comboCommonReason.setDisabled(false);
}
}
});
archiveOptions.comboCommonReason = new OO.ui.ComboBoxInputWidget({
options: [{
data: '[[پال:حذف/نبح|اجماعی برای حذف حاصل نشد.]]'
},
{
data: '[[پال:سرشناسی|سرشناسی موضوع]] احراز نشد.'
},
{
data: 'حذف سریع شدهاست.'
},
{
data: '[[پال:حذف نرم|حذف نرم]] (در نبود مشارکت کافی)'
},
{
data: 'کاربران بر حذف صفحه اجماع دارند'
},
{
data: 'کاربران بر ماندن صفحه اجماع دارند'
},
{
data: '[[اسلامیکال:ماندن سریع|انصراف نامزدکننده]]'
},
{
data: 'بر پایه [[پال:برف]] نظرخواهی جمعبندی شد.'
},
]
});
archiveOptions.textReason = new OO.ui.TextInputWidget({
placeholder: 'متن جمعبندی را وارد کنید',
});
archiveOptions.textMergeTarget = new OO.ui.TextInputWidget({
id: 'textTargetMerge',
placeholder: 'نام کامل صفحه',
disabled: true
});
archiveOptions.switchProtect = new OO.ui.ToggleSwitchWidget({
id: 'switchProtect',
disabled: true
});
fieldset.push(new OO.ui.FieldLayout(archiveOptions.radioSelect, {
label: 'تصمیم شما:',
align: 'top'
}));
fieldset.push(new OO.ui.FieldLayout(archiveOptions.comboCommonReason, {
label: 'دلایل مرسوم:',
align: 'inline'
}));
fieldset.push(new OO.ui.FieldLayout(archiveOptions.textReason, {
label: 'توضیح (اختیاری):',
align: 'top'
}));
fieldset.push(new OO.ui.FieldLayout(archiveOptions.textMergeTarget, {
label: 'ادغام با:',
align: 'top'
}));
fieldset.push(new OO.ui.FieldLayout(archiveOptions.switchProtect, {
label: 'صفحه پس از حذف محافظت شود',
align: top
}));
this.content.addItems(fieldset);
this.panel.$element.append(this.content.$element);
this.$body.append(this.panel.$element);
};
ArchiveAfD.prototype.getActionProcess = function(action) {
var dialog = this;
if (action === 'archive') {
archiveOptions.reason = archiveOptions.textReason.getValue();
if (archiveOptions.comboCommonReason.getValue()) {
archiveOptions.reason = archiveOptions.comboCommonReason.getValue() + ' ' + archiveOptions.reason
}
var debatePage = mw.config.get('wgPageName');
var talkPrefix = 'بحث:';
if (archiveOptions.targetPage.search(/کاربر:|الگو:|رده:|اسلامیکال:|درگاه:|راهنما:/) > -1) {
talkPrefix = 'بحث ';
}
if (archiveOptions.targetPage.search(/^بحث/) > -1) {
talkPrefix = false;
}
return new OO.ui.Process(function() {
// Warn the user if they try to leave the page before we are done
$(window).bind('beforeunload', function() {
return 'Archiving has not completed. Please do not leave the page yet.';
});
if (archiveOptions.radioExtend.isSelected()) {
// Update subject page
summary = 'تمدید نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])';
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.extendPage, summary);
} else {
var summary = '';
archiveOptions.checkRedirect(archiveOptions.targetPage);
// Remove page from WP:AfD
summary = 'حذف [[' + debatePage.replace(/\_/g, ' ') + ']] از [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف', archiveOptions.removeLink, summary);
if (archiveOptions.radioDelete.isSelected()) {
archiveOptions.shortReason = 'حذف شود. ';
archiveOptions.decisionCategory = '[[رده' + ':نظرخواهی برای حذف منجر به حذف]]';
archiveOptions.reason = 'حذف شود. ' + archiveOptions.reason;
// Update AfD page
summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])';
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary);
// Update AfD archives
archiveOptions.creationDate(debatePage, function(archlink) {
archiveOptions.archiveMonth(archlink, function(month) {
summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary);
})
});
// Delete the page
var summary = 'حذف صفحه بر اساس [[' + debatePage + '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])';
archiveOptions.deletePageRefresh(archiveOptions.targetPage, summary, archiveOptions.switchProtect.getValue());
} else {
if (archiveOptions.radioMerge.isSelected()) {
var targetPage = archiveOptions.textMergeTarget.getValue();
archiveOptions.shortReason = 'ادغام شود با [[' + targetPage + ']]. ';
archiveOptions.decisionCategory = '[[رده' + ':نظرخواهی برای حذف منجر به ادغام]]';
archiveOptions.reason = 'ادغام شود با [[' + targetPage + ']]. ' + archiveOptions.reason;
// Mention the old AfD on the talk page
summary = 'افزودن [[الگو:پیشینه حذف]] به بحث صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
if (talkPrefix) {
archiveOptions.loadSavePageRefresh(talkPrefix + archiveOptions.targetPage, archiveOptions.closeTalkPage, summary);
}
// Update AfD page
summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])';
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary);
// Update AfD archives
archiveOptions.creationDate(debatePage, function(archlink) {
archiveOptions.archiveMonth(archlink, function(month) {
summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary);
})
});
// Update subject page
summary = 'حذف [[الگو:پیشنهاد حذف]] از صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh(archiveOptions.targetPage, function(text) {
text = archiveOptions.removeTemplate(text);
text = '{{' + 'اجماع ادغام|' + targetPage + '}}\n' + text;
return text
}, summary);
} else {
archiveOptions.shortReason = 'بماند. ';
archiveOptions.decisionCategory = '[[رده' + ':نظرخواهی برای حذف منجر به ماندن]]';
archiveOptions.reason = 'بماند. ' + archiveOptions.reason;
// Mention the old AfD on the talk page
if (talkPrefix) {
summary = 'افزودن [[الگو:پیشینه حذف]] به بحث صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh(talkPrefix + archiveOptions.targetPage, archiveOptions.closeTalkPage, summary);
}
// Update AfD page
summary = 'بستن نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])';
archiveOptions.loadSavePageRefresh(debatePage, archiveOptions.closePage, summary);
// Update AfD archives
archiveOptions.creationDate(debatePage, function(archlink) {
archiveOptions.archiveMonth(archlink, function(month) {
summary = 'بایگانی نظرخواهی [[پال:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh('اسلامیکال:نظرخواهی_برای_حذف/بایگانی/' + month, archiveOptions.archivePage, summary);
})
});
// Update subject page
summary = 'حذف [[الگو:پیشنهاد حذف]] از صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]]): ';
archiveOptions.loadSavePageRefresh(archiveOptions.targetPage, archiveOptions.removeTemplate, summary);
}
}
}
dialog.close({
action: action
}).done(function() {
// TODO: Refresh the AfD page after all actions are complete
});
});
}
return ArchiveAfD.super.prototype.getActionProcess.call(this, action);
};
if (!windowManager) {
windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
}
if (!archiveAfD) {
archiveAfD = new ArchiveAfD({
size: 'medium'
});
windowManager.addWindows([archiveAfD]);
}
windowManager.openWindow(archiveAfD);
},
convertYearToFarsi: function(year) {
return year.replace(/\d/g, function (x) {
return String.fromCharCode(x.charCodeAt(0) + 1728); // 1728 is '۰' - '0' code difference
});
},
convertMonthToFarsi: function(month) {
return {
January: 'ژانویه',
February: 'فوریه',
March: 'مارس',
April: 'آوریل',
May: 'مه',
June: 'ژوئن',
July: 'ژوئیه',
August: 'اوت',
September: 'سپتامبر',
October: 'اکتبر',
November: 'نوامبر',
December: 'دسامبر'
}[month];
},
checkRedirect: function(ar_title) {
var params = {
action: "query",
prop: "info",
titles: ar_title,
format: "json"
};
(new mw.Api()).get(params).done(function(data) {
if ("redirect" in data["query"]
["pages"][Object.keys(data["query"]["pages"])]) {
mw.notify("صفحهٔ موضوع نظرخواهی منتقل شدهاست. حواستان باشد که دستی درست کنید!", {
type: 'error'
});
}
});
},
creationDate: function(title, callback) {
(new mw.Api()).get({
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'timestamp',
rvdir: 'newer',
format: 'json',
rvlimit: '1',
}).done(function(data) {
var timestamp = data["query"]["pages"][Object.keys(data["query"]
["pages"])]["revisions"]
[0]["timestamp"];
callback(timestamp);
});
},
archiveMonth: function(timestamp, callback) {
var crDate = new Date(timestamp);
var archiveMonthLink = archiveOptions.convertMonthToFarsi(crDate.getUTCMonthName()) + ' ' + archiveOptions.convertYearToFarsi(String(crDate.getUTCFullYear()));
callback(archiveMonthLink);
},
loadPage: function(title, callback) {
(new mw.Api()).get({
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'content',
format: 'json'
}).done(function(data) {
try {
callback($.map(data.query.pages, function(value) {
return value;
})[0].revisions[0]['*']);
} catch (exception) {
callback('');
}
}).fail(function(data) {
callback($.map(data.query.pages, function(value) {
return value;
})[0].revisions[0]);
});
},
protectPageRefresh: function(page, summary) {
archiveOptions.getProtectToken(function(token) {
archiveOptions.protectPage(page, summary, token);
});
},
getProtectToken: function(callback) {
(new mw.Api()).post({
action: 'query',
meta: 'tokens',
type: 'csrf'
}).done(function(data) {
if (data.error && data.error.info) {
console.log(data.error);
mw.notify(data.error.info, {
type: 'error'
});
} else {
callback(data.query.tokens.csrftoken);
}
}).fail(function(data) {
mw.notify(data);
});
},
protectPage: function(title, summary, token) {
(new mw.Api()).post({
action: 'protect',
title: title,
reason: summary,
token: token,
protections: 'create=sysop',
expiry: '1 year',
}).done(function(data) {
if (data.error && data.error.info) {
console.log(data.error);
mw.notify(data.error.info, {
type: 'error'
});
} else {
mw.notify('مقاله محافظت شد!');
}
}).fail(function(data) {
mw.notify(data);
});
},
savePage: function(title, text, summary, callback) {
(new mw.Api()).post({
action: 'edit',
title: title,
text: text,
summary: summary,
minor: '',
token: mw.user.tokens.get('csrfToken')
}).done(function(data) {
if (data.error && data.error.info) {
console.log(data.error);
if (data.error.info === 'missingtitle') {
mw.notify('صفحه ' + title + ' موجود نیست!', {
type: 'error'
});
} else {
mw.notify(data.error.info, {
type: 'error'
});
}
} else {
callback();
}
}).fail(function(data) {
mw.notify(data);
});
},
extendPage: function(text) {
text = text + "\n{{جا:تمدید حذف" + "|" + archiveOptions.textReason.getValue() + "}}";
$(window).off('beforeunload');
return text;
},
closePage: function(text) {
text = text.replace(new RegExp('<noinclude' + '>\\{\\{\(?:این الگو را زمان بستن نبح حذف کن\|REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD\)\\|\.+?\\}\\}<\\/noinclude' +
'>\\n?', 'g'), '');
text = '{{آغاز بایگانی حذف}}\n\n' + archiveOptions.decisionCategory + '\n' + archiveOptions.reason + '\n~~' + '~~\n' + text + '\n{{پایان بایگانی حذف}}';
mw.notify('نظرخواهی بسته شد!');
return text;
},
closeTalkPage: function(text) {
var page_name = mw.config.get("wgPageName");
text = '{{پیشینه حذف| تاریخ =~~' + '~~' + '~| نتیجه =' + archiveOptions.reason + ' | صفحه =' + page_name.replace(/\_/g, ' ') + ' |کوچک=}}\n\n' + text;
text = text.replace("صفحه =اسلامیکال:نظرخواهی برای حذف/", "صفحه =")
mw.notify('الگو پیشینه حذف به بحث صفحه افزوده شد!');
return text;
},
archivePage: function(text) {
var pagelink = mw.config.get("wgPageName");
text = text + '\n# [[' + pagelink.replace(/\_/g, ' ') + ']] -- ' + archiveOptions.shortReason + ' ~~' + '~~'
mw.notify('بایگانی بهروز شد.');
// Let the user close the tab without a warning
$(window).off('beforeunload');
return text;
},
removeLink: function(text) {
var pagelink = mw.config.get("wgPageName");
var isDraftPrefixed = pagelink.indexOf('/پیشنویس:') !== -1;
var pagelinkNoPrefix = pagelink.replace(/\/پیشنویس:/, '/').replace(/\_/g, ' ');
var text2 = text;
pagelink = pagelink.replace(/\_/g, ' ');
text = text.replace('{{' + pagelink + '}}\n', '')
// Try the pagename without draft prefix (if there is one)
if (text2 === text && isDraftPrefixed) {
text = text.replace('{{' + pagelinkNoPrefix + '}}\n', '');
}
if (text2 === text) {
mw.notify('توجه:برداشتن نظرخواهی از پال:نبح با خطا مواجه شد!', {
type: 'error'
});
} else {
mw.notify('نظرخواهی از پال:نبح برداشته شد!')
}
return text;
},
removeTemplate: function(text) {
var text2 = text;
text = text.replace(/(\<!--(.+?)--\>\n*|)\{\{(نظرخواهی برای حذف|پیشنهاد حذف\s?۲)(.+?|)\}\}(\n*\<!--(.+?)--\>|)(\n*\<!--(.+?)--\>|)/g, '');
text = text.replace(/\<!-- قبلاً پیشنهاد حذف داده شدهاست(.+?)--\>/g, '');
text = text.replace(/\<noinclude\>\n*\<\/noinclude\>/g, '');
if (text2 === text) {
mw.notify('توجه:برداشتن الگو از مقاله با مشکل مواجه شد!', {
type: 'error'
});
} else {
mw.notify('الگو پیشنهاد حذف از صفحه برداشته شد!');
}
text = text.trim()
return text;
},
loadSavePageRefresh: function(page, replaceCallback, summary) {
archiveOptions.loadPage(page, function(text) {
archiveOptions.savePage(page, replaceCallback(text), summary, function() {
setTimeout(function() {
location.reload();
}, 2000);
});
});
},
deletePageRefresh: function(page, summary, protect) {
archiveOptions.getDeleteToken(function(token) {
if (protect === true) {
archiveOptions.deletePage(page, summary, token, archiveOptions.protectPageRefresh);
} else {
archiveOptions.deletePage(page, summary, token, function() {});
}
});
},
getDeleteToken: function(callback) {
(new mw.Api()).post({
action: 'query',
meta: 'tokens',
type: 'csrf'
}).done(function(data) {
if (data.error && data.error.info) {
console.log(data.error);
mw.notify(data.error.info, {
type: 'error'
});
} else {
callback(data.query.tokens.csrftoken);
}
}).fail(function(data) {
mw.notify(data);
});
},
deletePage: function(title, summary, token, callback) {
(new mw.Api()).post({
action: 'delete',
title: title,
reason: summary,
token: token,
}).done(function(data) {
if (data.error && data.error.info) {
console.log(data.error);
if (data.error.info === 'missingtitle') {
mw.notify('صفحه ' + title + ' موجود نیست!', {
type: 'error'
});
} else {
mw.notify(data.error.info, {
type: 'error'
});
}
} else {
mw.notify('مقاله حذف شد!');
callback(title, 'محافظت صفحه بر اساس [[اسلامیکال:نظرخواهی_برای_حذف/' + title +
'|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])');
}
}).fail(function(data) {
mw.notify(data);
});
if (title.search(/کاربر:|الگو:|رده:|اسلامیکال:|درگاه:|راهنما:/) > -1) {
var TalkLink = 'بحث ' + title;
} else {
var TalkLink = 'بحث:' + title;
}
(new mw.Api()).post({
action: 'delete',
title: TalkLink,
reason: summary,
token: token,
}).done(function(data) {
if (data.error && data.error.info) {
console.log(data.error);
mw.notify(data.error.info, {
type: 'error'
});
} else {
mw.notify('بحث مقاله حذف شد!');
}
}).fail(function(data) {
mw.notify(data);
});
},
};
if (mw.config.get('wgNamespaceNumber') >= 0) {
$(archiveOptions.install);
}
})(jQuery, mediaWiki);