مدیاویکی:Gadget-twinkledeprod-2020.js: تفاوت میان نسخهها
پرش به ناوبری
پرش به جستجو
جز (۱ نسخه واردشده) |
fa.wikipedia.org>Jeeputer (جزئی) |
||
خط ۱۴۶: | خط ۱۴۶: | ||
query = { | query = { | ||
'action': 'query', | 'action': 'query', | ||
'titles': ' | 'titles': 'بحث:' + pageName | ||
}; | }; | ||
wikipedia_api = new Morebits.wiki.api('بررسی این که ' + pageName + ' صفحهٔ بحث دارد یا نه', query, // localized | wikipedia_api = new Morebits.wiki.api('بررسی این که ' + pageName + ' صفحهٔ بحث دارد یا نه', query, // localized |
نسخهٔ ۷ ژوئن ۲۰۲۱، ساعت ۰۳:۱۶
// <nowiki>
(function($) {
/*
****************************************
*** twinkledeprod.js: Batch deletion of expired PRODs (sysops only)
****************************************
* Mode of invocation: Tab ("Deprod")
* Active on: Categories whose name contains "proposed_deletion"
*/
Twinkle.deprod = function() {
if (
!Morebits.userIsSysop ||
mw.config.get('wgNamespaceNumber') !== 14 ||
!(/حذف_زماندار/i).test(mw.config.get('wgPageName')) // localized
) {
return;
}
Twinkle.addPortletLink(Twinkle.deprod.callback, 'حذف زماندار دستهجمعی', 'tw-deprod', 'صفحههای ایجاد شده در این رده را حذف زماندار کنید'); // localized
};
var concerns = {};
Twinkle.deprod.callback = function() {
var Window = new Morebits.simpleWindow(800, 400);
Window.setTitle('انجام حذف زماندار'); // localized
Window.setScriptName('توینکل'); // localized
Window.addFooterLink('حذف زماندار', 'وپ:زماندار'); // localized
Window.addFooterLink('راهنمای توینکل', 'en:WP:TW/DOC#deprod'); // localized
var form = new Morebits.quickForm(callback_commit);
var statusdiv = document.createElement('div');
statusdiv.style.padding = '15px'; // just so it doesn't look broken
Window.setContent(statusdiv);
Morebits.status.init(statusdiv);
Window.display();
var query = {
'action': 'query',
'generator': 'categorymembers',
'gcmtitle': mw.config.get('wgPageName'),
'gcmlimit': 'max', // 500 is max for normal users, 5000 for bots and sysops
'gcmnamespace': '0|6|108|2', // mostly to ignore categories
'prop': [ 'info', 'revisions' ],
'rvprop': [ 'content' ],
'inprop': [ 'protection' ]
};
var statelem = new Morebits.status('گرفتن فهرست صفحهها'); // localized
var wikipedia_api = new Morebits.wiki.api('در حال بارگیری...', query, function(apiobj) { // localized
var $doc = $(apiobj.responseXML);
var $pages = $doc.find('page[ns!="6"]'); // all non-files
var list = [];
var re = /\{\{حذف زماندار/; // localized
$pages.each(function() {
var $page = $(this);
var title = $page.attr('title');
var content = $page.find('revisions rev').text();
var $editprot = $page.find('pr[type="edit"][level="sysop"]');
var isProtected = $editprot.length > 0;
var metadata = [];
var res = re.exec(content);
if (res) {
var parsed = Morebits.wikitext.template.parse(content, res.index);
concerns[title] = parsed.parameters['اهمیت'] || ''; // localized
metadata.push(concerns[title]);
}
if (isProtected) {
metadata.push('محافظت کامل' + // localized
($editprot.attr('expiry') === 'infinity' ? ' بیپایان' : '، انقضا در ' + $editprot.attr('expiry'))); // localized
}
list.push({
label: metadata.length ? '(' + metadata.join('; ') + ')' : '',
value: title,
checked: concerns[title] !== '',
style: isProtected ? 'color:red' : ''
});
});
apiobj.params.form.append({ type: 'header', label: 'صفحهها برای حذف' }); // localized
apiobj.params.form.append({
type: 'button',
label: 'انتخاب همه', // localized
event: function(e) {
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', true);
}
});
apiobj.params.form.append({
type: 'button',
label: 'انتخاب هیچکدام', // localized
event: function(e) {
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', false);
}
});
apiobj.params.form.append({
'type': 'checkbox',
'name': 'pages',
'list': list
});
apiobj.params.form.append({
'type': 'submit'
});
var rendered = apiobj.params.form.render();
apiobj.params.Window.setContent(rendered);
$(Morebits.quickForm.getElements(rendered, 'pages')).each(function(index, checkbox) {
var $checkbox = $(checkbox);
var link = Morebits.htmlNode('a', $checkbox.val());
link.setAttribute('class', 'deprod-page-link');
link.setAttribute('href', mw.util.getUrl($checkbox.val()));
link.setAttribute('target', '_blank');
$checkbox.next().prepend([link, ' ']);
});
}, statelem);
wikipedia_api.params = { form: form, Window: Window };
wikipedia_api.post();
};
var callback_commit = function(event) {
var pages = event.target.getChecked('pages');
Morebits.status.init(event.target);
var batchOperation = new Morebits.batchOperation('حذف صفحهها'); // localized
batchOperation.setOption('chunkSize', Twinkle.getPref('proddeleteChunks'));
batchOperation.setOption('preserveIndividualStatusLines', true);
batchOperation.setPageList(pages);
batchOperation.run(function(pageName) {
var params = { page: pageName, reason: concerns[page] };
var query = {
'action': 'query',
'titles': pageName,
'prop': 'redirects',
'rdlimit': 'max' // 500 is max for normal users, 5000 for bots and sysops
};
var wikipedia_api = new Morebits.wiki.api('دریافت تغییرمسیرها', query, callback_deleteRedirects); // localized
wikipedia_api.params = params;
wikipedia_api.post();
query = {
'action': 'query',
'titles': 'بحث:' + pageName
};
wikipedia_api = new Morebits.wiki.api('بررسی این که ' + pageName + ' صفحهٔ بحث دارد یا نه', query, // localized
callback_deleteTalk);
wikipedia_api.params = params;
wikipedia_api.post();
var page = new Morebits.wiki.page(pageName, 'در حال حذف مقالهها ' + pageName); // localized
page.setEditSummary('سرآمدن [[ویکیپدیا:حذف زماندار|حذف زماندار]]، مشکل صفحه: ' + (concerns[pageName] === undefined ? 'نامشخص' : concerns[pageName]) + Twinkle.getPref('deletionSummaryAd')); // localized
page.suppressProtectWarning();
page.deletePage(batchOperation.workerSuccess, batchOperation.workerFailure);
});
},
callback_deleteTalk = function(apiobj) {
var $doc = $(apiobj.responseXML);
var exists = $doc.find('page:not([missing])').length > 0;
if (!exists) {
// no talk page; forget about it
return;
}
var page = new Morebits.wiki.page('Talk:' + apiobj.params.page, 'حذف صفحهٔ بحث ' + apiobj.params.page); // localized
page.setEditSummary('[[وپ:محس#ع۸|ع۸]]: [[راهنما:صفحه بحث|صفحهٔ بحث]] صفحهٔ حذف شده «' + apiobj.params.page + '»' + Twinkle.getPref('deletionSummaryAd')); // localized
page.deletePage();
},
callback_deleteRedirects = function(apiobj) {
var $doc = $(apiobj.responseXML);
$doc.find('redirects rd').each(function() {
var title = $(this).attr('title');
var page = new Morebits.wiki.page(title, 'حذف تغییر مسیر صفحه ' + title); // localized
page.setEditSummary('[[وپ:محس#ع۸|ع۸]]: تغییر مسیر به صفحهٔ حذف شده «' + apiobj.params.page + '»' + Twinkle.getPref('deletionSummaryAd')); // localized
page.deletePage();
});
};
})(jQuery);
// </nowiki>