مدیاویکی:Gadget-twinklebatchundelete.js
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
//<nowiki>
(function($){
/*
****************************************
*** twinklebatchundelete.js: Batch undelete module
****************************************
* Mode of invocation: Tab ("احیا جمعی")
* Active on: Existing user pages
* Config directives in: TwinkleConfig
*/
Twinkle.batchundelete = function twinklebatchundelete() {
if( mw.config.get("wgNamespaceNumber") !== mw.config.get("wgNamespaceIds").user ||
!mw.config.get("wgArticleId") ) {
return;
}
if( Morebits.userIsInGroup( 'sysop' ) ) {
Twinkle.addPortletLink( Twinkle.batchundelete.callback, "احیا جمعی", "tw-batch-undel", "احیای همه" );
}
};
Twinkle.batchundelete.callback = function twinklebatchundeleteCallback() {
var Window = new Morebits.simpleWindow( 600, 400 );
Window.setScriptName("توینکل");
Window.setTitle("بازگردانی دستهجمعی");
var form = new Morebits.quickForm( Twinkle.batchundelete.callback.evaluate );
form.append( {
type: 'input',
name: 'reason',
label: 'دلیل: ',
size: 60
} );
var query = {
'action': 'query',
'generator': 'links',
'titles': mw.config.get("wgPageName"),
'gpllimit' : Twinkle.getPref('batchMax') // the max for sysops
};
var iranpedia_api = new Morebits.wiki.api( 'در حال گرفتن صفحهها', query, function( apiobj ) {
var xml = apiobj.responseXML;
var $pages = $(xml).find('page[missing]');
var list = [];
$pages.each(function(index, page) {
var $page = $(page);
var title = $page.attr('title');
list.push({ label: title, value: title, checked: true });
});
apiobj.params.form.append({ type: 'header', label: 'صفحهها برای بازگردانی' });
apiobj.params.form.append({
type: 'button',
label: "انتخاب همه",
event: function(e) {
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', true);
}
});
apiobj.params.form.append({
type: 'button',
label: "عدمانتخاب همه",
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 result = apiobj.params.form.render();
apiobj.params.Window.setContent( result );
Morebits.checkboxShiftClickSupport(Morebits.quickForm.getElements(result, 'pages'));
} );
iranpedia_api.params = { form:form, Window:Window };
iranpedia_api.post();
var root = document.createElement( 'div' );
Morebits.status.init( root );
Window.setContent( root );
Window.display();
};
Twinkle.batchundelete.currentUndeleteCounter = 0;
Twinkle.batchundelete.currentundeletor = 0;
Twinkle.batchundelete.callback.evaluate = function( event ) {
Morebits.wiki.actionCompleted.notice = 'وضعیت';
Morebits.wiki.actionCompleted.postfix = 'بازگردانی دستهجمعی اکنون کامل شد.';
var pages = event.target.getChecked( 'pages' );
var reason = event.target.reason.value;
if( ! reason ) {
alert("شما باید دلیلی ارائه کنید.");
return;
}
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init( event.target );
if( !pages ) {
Morebits.status.error( 'خطا', 'چیزی برای بازگردانی وجود ندارد.' );
return;
}
var work = Morebits.array.chunk( pages, Twinkle.getPref('batchUndeleteChunks') );
Morebits.wiki.addCheckpoint();
Twinkle.batchundelete.currentundeletor = window.setInterval( Twinkle.batchundelete.callbacks.main, 1000, work, reason );
};
Twinkle.batchundelete.callbacks = {
main: function( work, reason ) {
if( work.length === 0 && Twinkle.batchundelete.currentUndeleteCounter <= 0 ) {
Morebits.status.info( 'انجام شد' );
window.clearInterval( Twinkle.batchundelete.currentundeletor );
Morebits.wiki.removeCheckpoint();
return;
} else if( work.length !== 0 && Twinkle.batchundelete.currentUndeleteCounter <= Twinkle.getPref('batchUndeleteMinCutOff') ) {
var pages = work.shift();
Twinkle.batchundelete.currentUndeleteCounter += pages.length;
for( var i = 0; i < pages.length; ++i ) {
var title = pages[i];
var query = {
'token': mw.user.tokens.get().editToken,
'title': title,
'action': 'undelete',
'reason': reason + Twinkle.getPref('deletionSummaryAd')
};
var iranpedia_api = new Morebits.wiki.api( "در حال بازگردانی " + title, query, function( self ) {
--Twinkle.batchundelete.currentUndeleteCounter;
var link = document.createElement( 'a' );
link.setAttribute( 'href', mw.util.getUrl(self.itsTitle) );
link.setAttribute( 'title', self.itsTitle );
link.appendChild( document.createTextNode(self.itsTitle) );
self.statelem.info( ['کامل شد (',link,')'] );
});
iranpedia_api.itsTitle = title;
iranpedia_api.post();
}
}
}
};
})(jQuery);
//</nowiki>