「MediaWiki:Gadget-twinklebatchundelete.js」:修訂間差異
跳至導覽
跳至搜尋
小 (已匯入 1 筆修訂:Twinkle) |
小 (繁簡轉換) |
||
行 23: | 行 23: | ||
} |
} |
||
if( Morebits.userIsInGroup( 'sysop' ) ) { |
if( Morebits.userIsInGroup( 'sysop' ) ) { |
||
Twinkle.addPortletLink( Twinkle.batchundelete.callback, "批 |
Twinkle.addPortletLink( Twinkle.batchundelete.callback, "批複", "tw-batch-undel", "反刪除頁面" ); |
||
} |
} |
||
}; |
}; |
||
行 30: | 行 30: | ||
var Window = new Morebits.simpleWindow( 600, 400 ); |
var Window = new Morebits.simpleWindow( 600, 400 ); |
||
Window.setScriptName("Twinkle"); |
Window.setScriptName("Twinkle"); |
||
Window.setTitle("批量反 |
Window.setTitle("批量反刪除"); |
||
Window.addFooterLink( "Twinkle |
Window.addFooterLink( "Twinkle幫助", "WP:TW/DOC#batchundelete" ); |
||
var form = new Morebits.quickForm( Twinkle.batchundelete.callback.evaluate ); |
var form = new Morebits.quickForm( Twinkle.batchundelete.callback.evaluate ); |
||
行 53: | 行 53: | ||
'gpllimit' : Twinkle.getPref('batchMax') // the max for sysops |
'gpllimit' : Twinkle.getPref('batchMax') // the max for sysops |
||
}; |
}; |
||
var statelem = new Morebits.status("抓取 |
var statelem = new Morebits.status("抓取頁面列表"); |
||
var wikipedia_api = new Morebits.wiki.api( " |
var wikipedia_api = new Morebits.wiki.api( "載入中…", query, function( apiobj ) { |
||
var xml = apiobj.responseXML; |
var xml = apiobj.responseXML; |
||
var $pages = $(xml).find('page[missing]'); |
var $pages = $(xml).find('page[missing]'); |
||
行 63: | 行 63: | ||
list.push({ label: title, value: title, checked: true }); |
list.push({ label: title, value: title, checked: true }); |
||
}); |
}); |
||
apiobj.params.form.append({ type: 'header', label: '待恢 |
apiobj.params.form.append({ type: 'header', label: '待恢複頁面' }); |
||
apiobj.params.form.append({ |
apiobj.params.form.append({ |
||
type: 'button', |
type: 'button', |
||
label: "全 |
label: "全選", |
||
event: function(e) { |
event: function(e) { |
||
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', true); |
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', true); |
||
行 73: | 行 73: | ||
apiobj.params.form.append({ |
apiobj.params.form.append({ |
||
type: 'button', |
type: 'button', |
||
label: "全不 |
label: "全不選", |
||
event: function(e) { |
event: function(e) { |
||
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', false); |
$(Morebits.quickForm.getElements(e.target.form, 'pages')).prop('checked', false); |
||
行 95: | 行 95: | ||
Twinkle.batchundelete.callback.evaluate = function( event ) { |
Twinkle.batchundelete.callback.evaluate = function( event ) { |
||
Morebits.wiki.actionCompleted.notice = ' |
Morebits.wiki.actionCompleted.notice = '狀態'; |
||
Morebits.wiki.actionCompleted.postfix = '反 |
Morebits.wiki.actionCompleted.postfix = '反刪除已完成'; |
||
var pages = event.target.getChecked( 'pages' ); |
var pages = event.target.getChecked( 'pages' ); |
||
行 108: | 行 108: | ||
if( !pages ) { |
if( !pages ) { |
||
Morebits.status.error( ' |
Morebits.status.error( '錯誤', '沒什麽要反刪除的,取消操作' ); |
||
return; |
return; |
||
} |
} |
||
var batchOperation = new Morebits.batchOperation("反 |
var batchOperation = new Morebits.batchOperation("反刪除頁面"); |
||
batchOperation.setOption("chunkSize", Twinkle.getPref('batchUndeleteChunks')); |
batchOperation.setOption("chunkSize", Twinkle.getPref('batchUndeleteChunks')); |
||
batchOperation.setOption("preserveIndividualStatusLines", true); |
batchOperation.setOption("preserveIndividualStatusLines", true); |
||
行 123: | 行 123: | ||
'reason': reason + Twinkle.getPref('deletionSummaryAd') |
'reason': reason + Twinkle.getPref('deletionSummaryAd') |
||
}; |
}; |
||
var wikipedia_api = new Morebits.wiki.api( "反 |
var wikipedia_api = new Morebits.wiki.api( "反刪除頁面" + pageName, query, |
||
batchOperation.workerSuccess, null, batchOperation.workerFailure ); |
batchOperation.workerSuccess, null, batchOperation.workerFailure ); |
||
wikipedia_api.statelem.status("反 |
wikipedia_api.statelem.status("反刪除中…"); |
||
wikipedia_api.pageName = pageName; |
wikipedia_api.pageName = pageName; |
||
wikipedia_api.post(); |
wikipedia_api.post(); |
於 2016年4月10日 (日) 15:06 的最新修訂
//<nowiki>
// vim: set noet sts=0 sw=8:
(function($){
/*
****************************************
*** twinklebatchundelete.js: Batch undelete module
****************************************
* Mode of invocation: Tab ("Und-batch")
* Active on: Existing user and project pages
* Config directives in: TwinkleConfig
*/
Twinkle.batchundelete = function twinklebatchundelete() {
if( ( mw.config.get("wgNamespaceNumber") !== mw.config.get("wgNamespaceIds").user &&
mw.config.get("wgNamespaceNumber") !== mw.config.get("wgNamespaceIds").project ) ||
!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("Twinkle");
Window.setTitle("批量反刪除");
Window.addFooterLink( "Twinkle幫助", "WP:TW/DOC#batchundelete" );
var form = new Morebits.quickForm( Twinkle.batchundelete.callback.evaluate );
form.append( {
type: 'input',
name: 'reason',
label: '理由:',
size: 60
} );
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': 'links',
'titles': mw.config.get("wgPageName"),
'gpllimit' : Twinkle.getPref('batchMax') // the max for sysops
};
var statelem = new Morebits.status("抓取頁面列表");
var wikipedia_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'));
}, statelem );
wikipedia_api.params = { form:form, Window:Window };
wikipedia_api.post();
};
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 batchOperation = new Morebits.batchOperation("反刪除頁面");
batchOperation.setOption("chunkSize", Twinkle.getPref('batchUndeleteChunks'));
batchOperation.setOption("preserveIndividualStatusLines", true);
batchOperation.setPageList(pages);
batchOperation.run(function(pageName) {
var query = {
'token': mw.user.tokens.get().editToken,
'title': pageName,
'action': 'undelete',
'reason': reason + Twinkle.getPref('deletionSummaryAd')
};
var wikipedia_api = new Morebits.wiki.api( "反刪除頁面" + pageName, query,
batchOperation.workerSuccess, null, batchOperation.workerFailure );
wikipedia_api.statelem.status("反刪除中…");
wikipedia_api.pageName = pageName;
wikipedia_api.post();
});
};
})(jQuery);
//</nowiki>