مدیاویکی:Gadget-twinkledeprod.js: تفاوت میان نسخهها
پرش به ناوبری
پرش به جستجو
(صفحهای تازه حاوی «//<nowiki> (function($){ /* **************************************** *** twinkledeprod.js: Batch deletion of expired PRODs (sysops only...» ایجاد کرد) |
جز (۱ نسخه واردشده) |
||
(۳ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
خط ۳۱: | خط ۳۱: | ||
Window.setTitle( "پاکسازی حذف زماندار" ); | Window.setTitle( "پاکسازی حذف زماندار" ); | ||
Window.setScriptName( "توینکل" ); | Window.setScriptName( "توینکل" ); | ||
Window.addFooterLink( "حذف زماندار", " | Window.addFooterLink( "حذف زماندار", "اپ:زماندار" ); | ||
Window.addFooterLink( "راهنمای توینکل", " | Window.addFooterLink( "راهنمای توینکل", "ip:TW/DOC#deprod" ); | ||
var form = new Morebits.quickForm( callback_commit ); | var form = new Morebits.quickForm( callback_commit ); | ||
خط ۴۵: | خط ۴۵: | ||
}; | }; | ||
var | var iranpedia_api = new Morebits.wiki.api( 'در حال گرفتن صفحهها', query, | ||
function( self ) { | function( self ) { | ||
var $doc = $(self.responseXML); | var $doc = $(self.responseXML); | ||
خط ۷۶: | خط ۷۶: | ||
}); | }); | ||
iranpedia_api.params = { form:form, Window:Window }; | |||
iranpedia_api.post(); | |||
var root = document.createElement( 'div' ); | var root = document.createElement( 'div' ); | ||
Morebits.simpleWindow.setButtonsEnabled( true ); | Morebits.simpleWindow.setButtonsEnabled( true ); | ||
خط ۱۰۸: | خط ۱۰۸: | ||
'titles': page | 'titles': page | ||
}; | }; | ||
var | var iranpedia_api = new Morebits.wiki.api( 'در حال بررسی وجودداشتن صفحه ' + page, query, callback_check ); | ||
iranpedia_api.params = { page:page, reason: concerns[page] }; | |||
iranpedia_api.post(); | |||
} | } | ||
} | } | ||
خط ۱۳۹: | خط ۱۳۹: | ||
'bllimit': Morebits.userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops | 'bllimit': Morebits.userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops | ||
}; | }; | ||
var | var iranpedia_api = new Morebits.wiki.api( 'در حال گرفتن تغییرمسیرها', query, callback_deleteRedirects ); | ||
iranpedia_api.params = self.params; | |||
iranpedia_api.post(); | |||
var page = new Morebits.wiki.page('بحث:' + self.params.page, "در حال حذف صفحهٔ بحث"); | var page = new Morebits.wiki.page('بحث:' + self.params.page, "در حال حذف صفحهٔ بحث"); | ||
page.setEditSummary("[[ | page.setEditSummary("[[اپ:محس#ع۸|ع۸]]: [[راهنما:صفحه بحث|صفحهٔ بحث]]ِ یک صفحهٔ حذفشده «" + self.params.page + "»" + Twinkle.getPref('deletionSummaryAd')); | ||
page.deletePage(); | page.deletePage(); | ||
page = new Morebits.wiki.page(self.params.page, "در حال حذف نوشتار"); | page = new Morebits.wiki.page(self.params.page, "در حال حذف نوشتار"); | ||
page.setEditSummary("[[ | page.setEditSummary("[[اپ:زماندار|حذف زماندار]] منقضیشده، دلیل این بود: " + self.params.reason + Twinkle.getPref('deletionSummaryAd')); | ||
page.deletePage(); | page.deletePage(); | ||
}, | }, | ||
خط ۱۵۶: | خط ۱۵۶: | ||
var title = $(this).attr('title'); | var title = $(this).attr('title'); | ||
var page = new Morebits.wiki.page(title, "در حال حذف صفحهٔ تغییرمسیر " + title); | var page = new Morebits.wiki.page(title, "در حال حذف صفحهٔ تغییرمسیر " + title); | ||
page.setEditSummary("[[ | page.setEditSummary("[[اپ:محس#ت۱|ت۱]]: تغییرمسیر به صفحهٔ حذفشده «" + self.params.page + "»" + Twinkle.getPref('deletionSummaryAd')); | ||
page.deletePage(); | page.deletePage(); | ||
}); | }); |
نسخهٔ کنونی تا ۲ دسامبر ۲۰۱۷، ساعت ۲۰:۵۲
//<nowiki>
(function($){
/*
****************************************
*** twinkledeprod.js: Batch deletion of expired PRODs (sysops only)
****************************************
* Mode of invocation: Tab ("حذف زماندار")
* Active on: Categories whose name starts with "رده:حذف زماندار از تاریخ"
* Config directives in: TwinkleConfig
*/
Twinkle.deprod = function() {
if( mw.config.get( 'wgNamespaceNumber' ) !== 14 || ! Morebits.userIsInGroup( 'sysop' ) || !((/^رده:حذف_زماندار_از_تاریخ/).test(mw.config.get( 'wgPageName' ))) ) {
return;
}
Twinkle.addPortletLink( callback, "حذف زماندار", "tw-deprod", "حذف صفحههای زماندار یافتشده در این رده");
};
var unlinkCache = {},
concerns = {},
currentDeleteCounter = 0,
currentUnlinkCounter = 0,
currentDeletor = null,
callback = function() {
var Window = new Morebits.simpleWindow( 800, 400 );
Window.setTitle( "پاکسازی حذف زماندار" );
Window.setScriptName( "توینکل" );
Window.addFooterLink( "حذف زماندار", "اپ:زماندار" );
Window.addFooterLink( "راهنمای توینکل", "ip:TW/DOC#deprod" );
var form = new Morebits.quickForm( callback_commit );
var query = {
'action': 'query',
'generator': 'categorymembers',
'gcmtitle': mw.config.get( 'wgPageName' ),
'gcmlimit' : 5000, // the max for sysops
'prop': [ 'categories', 'revisions' ],
'rvprop': [ 'content' ]
};
var iranpedia_api = new Morebits.wiki.api( 'در حال گرفتن صفحهها', query,
function( self ) {
var $doc = $(self.responseXML);
var $pages = $doc.find('page[ns!="6"]'); // all non-files
var list = [];
var re = /\{\{Proposed deletion/;
$pages.each(function() {
var $self = $(this);
var page = $self.attr('title');
var content = $self.find('revisions rev').text();
var concern = '';
var res = re.exec(content);
if( res ) {
var parsed = Morebits.wikitext.template.parse( content, res.index );
concern = parsed.parameters.concern || '';
}
list.push( {label:page + ' (' + concern + ')' , value:page, checked:concern !== '' });
concerns[page] = concern;
});
self.params.form.append({
'type': 'checkbox',
'name': 'pages',
'list': list
});
self.params.form.append({
'type': 'submit'
});
self.params.Window.setContent( self.params.form.render() );
});
iranpedia_api.params = { form:form, Window:Window };
iranpedia_api.post();
var root = document.createElement( 'div' );
Morebits.simpleWindow.setButtonsEnabled( true );
Morebits.status.init( root );
Window.setContent( root );
Window.display();
},
callback_commit = function(event) {
var pages = event.target.getChecked( 'pages' );
Morebits.status.init( event.target );
var toCall = function( work ) {
if( work.length === 0 ) {
Morebits.status.info( 'انجام شد' );
window.clearInterval( currentDeletor );
Morebits.wiki.removeCheckpoint();
return;
} else if( currentDeleteCounter <= 0 || currentUnlinkCounter <= 0 ) {
unlinkCache = []; // Clear the cache
var pages = work.pop(), i;
for( i = 0; i < pages.length; ++i ) {
var page = pages[i];
var query = {
'action': 'query',
'prop': 'revisions',
'rvprop': [ 'content' ],
'rvlimit': 1,
'titles': page
};
var iranpedia_api = new Morebits.wiki.api( 'در حال بررسی وجودداشتن صفحه ' + page, query, callback_check );
iranpedia_api.params = { page:page, reason: concerns[page] };
iranpedia_api.post();
}
}
};
var work = Morebits.array.chunk( pages, Twinkle.getPref('proddeleteChunks') );
Morebits.wiki.addCheckpoint();
currentDeletor = window.setInterval( toCall, 1000, work );
},
callback_check = function( self ) {
var $doc = $(self.responseXML);
var normal = $doc.find('normalized n').attr('to');
if( normal ) {
self.params.page = normal;
}
var exists = $doc.find('pages page:not([missing])').length > 0;
if( ! exists ) {
self.statelem.error( "به نظر میرسد که صفحه وجود ندارد، شاید از پیش حذف شدهباشد." );
return;
}
var query = {
'action': 'query',
'list': 'backlinks',
'blfilterredir': 'redirects',
'bltitle': self.params.page,
'bllimit': Morebits.userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
};
var iranpedia_api = new Morebits.wiki.api( 'در حال گرفتن تغییرمسیرها', query, callback_deleteRedirects );
iranpedia_api.params = self.params;
iranpedia_api.post();
var page = new Morebits.wiki.page('بحث:' + self.params.page, "در حال حذف صفحهٔ بحث");
page.setEditSummary("[[اپ:محس#ع۸|ع۸]]: [[راهنما:صفحه بحث|صفحهٔ بحث]]ِ یک صفحهٔ حذفشده «" + self.params.page + "»" + Twinkle.getPref('deletionSummaryAd'));
page.deletePage();
page = new Morebits.wiki.page(self.params.page, "در حال حذف نوشتار");
page.setEditSummary("[[اپ:زماندار|حذف زماندار]] منقضیشده، دلیل این بود: " + self.params.reason + Twinkle.getPref('deletionSummaryAd'));
page.deletePage();
},
callback_deleteRedirects = function( self ) {
var $doc = $(self.responseXML);
$doc.find("backlinks bl").each(function(){
var title = $(this).attr('title');
var page = new Morebits.wiki.page(title, "در حال حذف صفحهٔ تغییرمسیر " + title);
page.setEditSummary("[[اپ:محس#ت۱|ت۱]]: تغییرمسیر به صفحهٔ حذفشده «" + self.params.page + "»" + Twinkle.getPref('deletionSummaryAd'));
page.deletePage();
});
};
})(jQuery);
//</nowiki>