User:逆襲的天邪鬼/Twinkle-lzh/twinklespeedy.js: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(9 intermediate revisions by the same user not shown)
Line 26:
// * Flow pages
// * non-existent pages
if (mw.config.get('wgNamespaceNumber') < 0 || mw.config.get('wgPageContentModel') === 'flow-board' || !mw.config.get('wgArticleId')) {
return;
}
Line 156:
} );
}
deleteOptions.append( {
type: 'checkbox',
list: [
{
label: '不刪除,而是移動到「稿」',
value: 'movetodraft',
name: 'movetodraft',
tooltip: "不刪除頁面,而是將其移動到「稿」名字空間。",
checked: false,
disabled: (mw.config.get('wgNamespaceNumber') === 106 || mw.config.get('wgNamespaceNumber') === 107),
event: function( event ) {
event.stopPropagation();
}
}
]
} );
 
deleteOptions.append( {
type: 'checkbox',
Line 337 ⟶ 354:
var radioOrCheckbox = (Twinkle.speedy.mode.isMultiple(mode) ? 'checkbox' : 'radio');
 
// if (Twinkle.speedy.mode.isSysop(mode) && !Twinkle.speedy.mode.isMultiple(mode)) {
work_area.append( { type: 'header', label: '自定義理由' } );
work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.customRationale, mode) } );
// }
 
switch (namespace) {
Line 367 ⟶ 384:
// custom rationale lives under general criteria when tagging
var generalCriteria = Twinkle.speedy.generalList;
// if (!Twinkle.speedy.mode.isSysop(mode)) {
// generalCriteria = Twinkle.speedy.customRationale.concat(generalCriteria);
// }
work_area.append( { type: 'header', label: '常規' } );
work_area.append( { type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(generalCriteria, mode) });
Line 406 ⟶ 423:
return $.map(list, function(critElement) {
var criterion = $.extend({}, critElement);
 
// hack to get the g11 radio / checkbox right
if (criterion.value === 'g11') {
criterion.style = Twinkle.getPref('enlargeG11Input') ? 'height: 2em; width: 2em; height: -moz-initial; width: -moz-initial; -moz-transform: scale(2); -o-transform: scale(2);' : '';
}
 
if (multiple) {
Line 494 ⟶ 506:
label: '自定義理由' + (Morebits.userIsInGroup('sysop') ? '(自定義刪除理由)' : ''),
value: 'reason',
tooltip: '該頁至少應該符合一條快速刪除的標準,並且您必須在理由中提到。這不是萬能的刪除理由,只適用於該頁及其歷史版本均明顯不應存在於維基大典的情況。',
subgroup: {
name: 'reason_1',
Line 501 ⟶ 513:
size: 60
},
hideWhenMultiple: true
}
];
Line 509 ⟶ 520:
label: '非文言',
value: 'a1',
tooltip: '條目根本不是文言文,只有完全重寫才能改善解決問題。文白相雜請改用{{文白相雜|~~~~~}}。如果作者有改善意願,建議移至草稿。'
},
{
Line 538 ⟶ 549:
Twinkle.speedy.generalList = [
{
label: '作者請求 / 去己齋',
value: 'g1',
tooltip: '注意:應該用於頁面作者唯一或實質貢獻者唯一的情況,因此用戶討論頁通常不適用刪除。'
},
{
Line 608 ⟶ 619:
'a3': 'a3',
'a4': 'a4',
'r1': 'r1',
'r2': 'r2',
'r3': 'r3',
'r4': 'r4',
'c1': 'c1',
};
Line 639 ⟶ 654:
Twinkle.speedy.callbacks = {
getTemplateCodeAndParams: function(params) {
var code, parameters,= i"{{刪|";
var reasons = Twinkle.speedy.callbacks.getReasons(params);
if (params.normalizeds.length > 1) {
codeparams.utparams = "{{刪"};
$.each(params.utparamsnormalizeds, function(index, =norm) {};
$.extend(params.utparams, Twinkle.speedy.getUserTalkParameters(norm, params.templateParams[index] || []));
$.each(params.normalizeds, function(index, norm) {
});
code += "|" + Twinkle.speedy.reasonHash[norm.toLowerCase()];
code += reasons.join(';') + "}}";
 
return [code, params.utparams];
},
 
getReasons: function (params) {
var reasons = [];
var parameters;
$.each(params.normalizeds, function(index, norm) {
if (Twinkle.speedy.reasonHash[norm]) {
reasons.push(Twinkle.speedy.reasonHash[norm]);
} else {
parameters = params.templateParams[index] || [];
for (var i=0; in i<parameters.length; i++) {
if (typeof parameters[i] === 'string') {
code += "。" + reasons.push(parameters[i]);
}
}
$.extend(params.utparams, Twinkle.speedy.getUserTalkParameters(norm, parameters));
});
code += "}}";
} else {
parameters = params.templateParams[0] || [];
code = "{{刪|";
if (params.values[0] !== 'reason') {
code += '|' + params.values[0];
}
});
for (i in parameters) {
return reasons;
if (typeof parameters[i] === 'string') {
code += "。" + parameters[i];
}
}
code += "}}";
params.utparams = Twinkle.speedy.getUserTalkParameters(params.normalizeds[0], parameters);
}
 
return [code, params.utparams];
},
 
parseWikitext: function(wikitext, callback) {
var query = {
action: "parse",
prop: "text",
pst: "true",
text: wikitext,
contentmodel: "wikitext",
title: mw.config.get("wgPageName")
};
 
var statusIndicator = new Morebits.status( '構造刪除理由' );
var api = new Morebits.wiki.api( '解析刪除模板', query, function(apiObj) {
var reason = decodeURIComponent($(apiObj.getXML().querySelector('text').childNodes[0].nodeValue).find('#delete-reason').text()).replace(/\+/g, ' ');
if (!reason) {
statusIndicator.warn( '未能從刪除模板生成刪除理由' );
} else {
statusIndicator.info( '完成' );
}
callback(reason);
}, statusIndicator);
api.post();
},
 
Line 703 ⟶ 691:
Twinkle.speedy.callbacks.sysop.deletePage( reason, params );
} else {
var code = Twinkle.speedy.callbacks.getTemplateCodeAndParamssysop.deletePage(Twinkle.speedy.callbacks.getReasons(params).join(';'), params)[0];
Twinkle.speedy.callbacks.parseWikitext(code, function(reason) {
if (params.promptForSummary) {
reason = prompt("输入刪除理由,或點選確定以接受自動生成的:", presetReason);
}
Twinkle.speedy.callbacks.sysop.deletePage( reason, params );
});
}
},
Line 721 ⟶ 703:
}
thispage.setEditSummary( reason + Twinkle.getPref('deletionSummaryAd') );
 
thispage.deletePage(function() {
if (params.movetodraft) {
thispage.getStatusElement().info("完成");
thispage.setMoveTalkPage(true);
Twinkle.speedy.callbacks.sysop.deleteTalk( params );
thispage.setMoveSuppressRedirect(true);
});
thispage.setMoveDestination('稿:' + mw.config.get('wgPageName'));
thispage.move(function() {
thispage.getStatusElement().info("完成");
Twinkle.speedy.callbacks.sysop.deleteRedirects( params );
});
} else {
thispage.deletePage(function() {
thispage.getStatusElement().info("完成");
Twinkle.speedy.callbacks.sysop.deleteTalk( params );
});
}
 
 
// look up initial contributor. If prompting user for deletion reason, just display a link.
Line 739 ⟶ 733:
document.getElementById( 'ca-talk' ).className !== 'new') {
var talkpage = new Morebits.wiki.page( Morebits.wikipedia.namespaces[ mw.config.get('wgNamespaceNumber') + 1 ] + ':' + mw.config.get('wgTitle'), "刪除討論頁" );
talkpage.setEditSummary('孤頁: 已刪除頁面「' + Morebits.pageNameNorm + "」的討,去其議論頁" + Twinkle.getPref('deletionSummaryAd'));
talkpage.deletePage();
// this is ugly, but because of the architecture of wiki.api, it is needed
Line 860 ⟶ 854:
var title = $(value).attr('title');
var page = new Morebits.wiki.page(title, '刪除重定向 "' + title + '"');
page.setEditSummary('孤頁: 重定向到:渡至已刪「' + Morebits.pageNameNorm + "」" + Twinkle.getPref('deletionSummaryAd'));
page.deletePage(onsuccess);
});
Line 912 ⟶ 906:
 
// Generate edit summary for edit
var editsummary = '提速刪:' + Twinkle.speedy.callbacks.getReasons(params);
if (params.normalizeds.length > 1) {
editsummary = '提速刪(';
$.each(params.normalizeds, function(index, norm) {
editsummary += norm.toUpperCase() + '、';
});
editsummary = editsummary.substr(0, editsummary.length - 1); // remove trailing comma
editsummary += ')。';
} else if (params.normalizeds[0] === "db") {
editsummary = '提速刪:' + params.templateParams[0]["1"];
} else {
editsummary = '提速刪(' + params.normalizeds[0].toUpperCase() + ")";
}
 
pageobj.setPageText(code + "\n" + text);
Line 958 ⟶ 940:
 
var editsummary = "通知:";
editsummary += "頁[[" + Morebits.pageNameNorm + "]]將刪";
editsummary += "快速刪除通知";
 
usertalkpage.setAppendText(notifytext);
Line 1,018 ⟶ 999:
 
appendText += "\n# [[:" + Morebits.pageNameNorm + "]]: ";
appendText += Twinkle.speedy.callbacks.getReasons(params);
if (params.fromDI) {
appendText += "圖版[[WP:CSD#" + params.normalized.toUpperCase() + "|CSD " + params.normalized.toUpperCase() + "]]({{tl|" + params.templatename + "}})";
} else {
if (params.normalizeds.length > 1) {
appendText += "多個理由(";
$.each(params.normalizeds, function(index, norm) {
appendText += "[[WP:CSD#" + norm.toUpperCase() + "|" + norm.toUpperCase() + ']]、';
});
appendText = appendText.substr(0, appendText.length - 1); // remove trailing comma
appendText += ')';
} else if (params.normalizeds[0] === "db") {
appendText += "自定義理由";
} else {
appendText += "[[WP:CSD#" + params.normalizeds[0].toUpperCase() + "|CSD " + params.normalizeds[0].toUpperCase() + "]]";
}
}
 
if (params.logInitialContrib) {
Line 1,041 ⟶ 1,007:
 
pageobj.setAppendText(appendText);
pageobj.setEditSummary("記录對錄速刪誌:[[" + Morebits.pageNameNorm + "]]的快速刪除提名" + Twinkle.getPref('summaryAd'));
pageobj.setCreateOption("recreate");
pageobj.append();
Line 1,135 ⟶ 1,101:
deleteTalkPage: form.talkpage && form.talkpage.checked,
deleteRedirects: form.redirects.checked,
movetodraft: form.movetodraft.checked,
openUserTalk: form.openusertalk.checked,
promptForSummary: promptForSummary,