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

Content added Content deleted
No edit summary
No edit summary
Line 175: Line 175:
main: function( pageobj ) {
main: function( pageobj ) {
var params = pageobj.getCallbackParameters(),
var params = pageobj.getCallbackParameters(),
tagRe, tagText = '', summaryText = '加',
tagRe, tagText = '', summaryText = '加',
tags = [], groupableTags = [], i, totalTags;
tags = [], groupableTags = [], i, totalTags;


Line 183: Line 183:
var addTag = function friendlytagAddTag( tagIndex, tagName ) {
var addTag = function friendlytagAddTag( tagIndex, tagName ) {
var currentTag = "";
var currentTag = "";
if( tagName === '文白相雜' ) {
pageText += '{{' + tagName + '|~~~~}}\n';
} else {
currentTag += '{{' + tagName;


switch (tagName) {
// prompt for other parameters, based on the tag
case '文白相雜':
switch( tagName ) {
currentTag += '{{文白相雜|~~~~~}}\n';
case 'merge':
case 'merge to':
break;
case 'merge from':
if (params.mergeTarget) {
// normalize the merge target for now and later
params.mergeTarget = Morebits.string.toUpperCaseFirstChar(params.mergeTarget.replace(/_/g, ' '));


case '文未準':
currentTag += '|' + params.mergeTarget;
currentTag += '{{文未準|';
currentTag += params.tagParameters.disputeReason.join(';');


if (params.tagParameters.disputeCustomReason) {
// link to the correct section on the talk page, for article space only
if (params.tagParameters.disputeReason.length > 0) {
if (mw.config.get('wgNamespaceNumber') === 0 && (params.mergeReason || params.discussArticle)) {
currentTag += ';';
if (!params.discussArticle) {
// discussArticle is the article whose talk page will contain the discussion
params.discussArticle = (tagName === "merge to" ? params.mergeTarget : mw.config.get('wgTitle'));
// nonDiscussArticle is the article which won't have the discussion
params.nonDiscussArticle = (tagName === "merge to" ? mw.config.get('wgTitle') : params.mergeTarget);
params.talkDiscussionTitle = '请求与' + params.nonDiscussArticle + '合併';
}
currentTag += '|discuss=Talk:' + params.discussArticle + '#' + params.talkDiscussionTitle;
}
}
}
currentTag += params.tagParameters.disputeCustomReason;
break;
default:
}
break;
break;

}
case '':
if (params.moveTarget) {
currentTag += '{{遷|';
// normalize the merge target for now and later
params.moveTarget = Morebits.string.toUpperCaseFirstChar(params.moveTarget.replace(/_/g, ' '));
currentTag += '|' + params.moveTarget + '}}';
}
break;

case '併':
if (params.mergeTarget) {
currentTag += '{{併|';
// normalize the merge target for now and later
params.mergeTarget = Morebits.string.toUpperCaseFirstChar(params.mergeTarget.replace(/_/g, ' '));
currentTag += '|' + params.mergeTarget + '}}';
}
break;


default:
currentTag += '}}\n';
tagText += currentTag;
currentTag += '{{' + tagName + '}}\n';
break;
}
}
tagText += currentTag;


if ( tagIndex > 0 ) {
if ( tagIndex > 0 ) {
Line 262: Line 267:
// complicated than it'd need to be, to allow templates as parameters,
// complicated than it'd need to be, to allow templates as parameters,
// and to handle whitespace properly.
// and to handle whitespace properly.
pageText = pageText.replace(/^\s*(?:((?:\s*\{\{\s*(?:about|correct title|dablink|distinguish|for|other\s?(?:hurricaneuses|people|persons|places|uses(?:of)?)|redirect(?:-acronym)?|see\s?(?:also|wiktionary)|selfref|the)\d*\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\})+(?:\s*\n)?)\s*)?/i,
pageText = pageText.replace(/^\s*(?:((?:\s*\{\{\s*(?:外語不入題|非漢字不入題|釋義|釋義二|disambig|消歧義|otheruses)\d*\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\})+(?:\s*\n)?)\s*)?/i,
"$1" + tagText);
"$1" + tagText);


Line 279: Line 284:
pageobj.setCreateOption('nocreate');
pageobj.setCreateOption('nocreate');
pageobj.save(function() {
pageobj.save(function() {
var talkpageText;
var talkpage;
// special functions for merge tags
// special functions for merge tags
if (params.mergeReason) {
if (params.mergeReason) {
// post the rationale on the talk page (only operates in main namespace)
// post the rationale on the talk page (only operates in main namespace)
var talkpageText = "\n\n== 議與[[" + params.nonDiscussArticle + "]]合併 ==\n\n";
talkpageText = "\n\n== 議與[[" + params.mergeTarget + "]]合併 ==\n\n";
talkpageText += params.mergeReason.trim() + "--~~~~";
talkpageText += params.mergeReason.trim() + "--~~~~";


var talkpage = new Morebits.wiki.page("Talk:" + params.discussArticle, "將理由貼进討論頁");
talkpage = new Morebits.wiki.page("Talk:" + mw.config.get('wgTitle'), "將理由貼进討論頁");
talkpage.setAppendText(talkpageText);
talkpage.setAppendText(talkpageText);
talkpage.setEditSummary('議將[[' + params.nonDiscussArticle + ']]' +
talkpage.setEditSummary('議將[[' + mw.config.get('wgTitle') + ']]' +
'併' + '[[' + params.discussArticle + ']]' +
'併' + '[[' + params.mergeTarget + ']]' +
Twinkle.getPref('summaryAd'));
talkpage.setWatchlist(Twinkle.getFriendlyPref('watchMergeDiscussions'));
talkpage.setCreateOption('recreate');
talkpage.append();
}
if (params.moveReason) {
// post the rationale on the talk page (only operates in main namespace)
talkpageText = "\n\n== 議遷至[[" + params.moveTarget + "]] ==\n\n";
talkpageText += params.moveReason.trim() + "--~~~~";

talkpage = new Morebits.wiki.page("Talk:" + mw.config.get('wgTitle'), "將理由貼进討論頁");
talkpage.setAppendText(talkpageText);
talkpage.setEditSummary('議將[[' + mw.config.get('wgTitle') + ']]' +
'遷至' + '[[' + params.moveTarget + ']]' +
Twinkle.getPref('summaryAd'));
Twinkle.getPref('summaryAd'));
talkpage.setWatchlist(Twinkle.getFriendlyPref('watchMergeDiscussions'));
talkpage.setWatchlist(Twinkle.getFriendlyPref('watchMergeDiscussions'));
Line 304: Line 325:
Twinkle.tag.callback.evaluate = function friendlytagCallbackEvaluate(e) {
Twinkle.tag.callback.evaluate = function friendlytagCallbackEvaluate(e) {
var form = e.target;
var form = e.target;

window.aaa = form;
return;


var params = {};
var params = {};
Line 314: Line 332:


params.tags = form.getChecked( 'articleTags' );
params.tags = form.getChecked( 'articleTags' );
params.group = form.group.checked;
params.tagParameters = {
params.tagParameters = {
notability: form["articleTags.notability"] ? form["articleTags.notability"].value : null
moveTarget: form['articleTags.moveTarget'] ? form['articleTags.moveTarget'].value : null,
moveReason: form['articleTags.moveReason'] ? form['articleTags.moveReason'].value : null,
mergeTarget: form['articleTags.mergeTarget'] ? form['articleTags.mergeTarget'].value : null,
mergeReason: form['articleTags.mergeReason'] ? form['articleTags.mergeReason'].value : null,
disputeReason: form.getChecked('articleTags.disputeReason'),
disputeCustomReason: form['articleTags.disputeCustomReason'] ? form['articleTags.disputeCustomReason'].value : null,
};
};
// common to {{merge}}, {{merge from}}, {{merge to}}
params.mergeTarget = form["articleTags.mergeTarget"] ? form["articleTags.mergeTarget"].value : null;
params.mergeReason = form["articleTags.mergeReason"] ? form["articleTags.mergeReason"].value : null;
params.mergeTagOther = form["articleTags.mergeTagOther"] ? form["articleTags.mergeTagOther"].checked : false;


// form validation
// form validation
if( !params.tags.length ) {
if( !params.tags.length ) {
alert( '必須選擇至少一個標記!' );
alert( '必須選擇至少一個標記!' );
return;
}
if( ((params.tags.indexOf("merge") !== -1) + (params.tags.indexOf("merge from") !== -1) +
(params.tags.indexOf("merge to") !== -1)) > 1 ) {
alert( '请在{{merge}}、{{merge from}}和{{merge to}}中选择一个。如果需要多次合併,请使用{{merge}}并用管道符分隔條目名(但在这种情形中Twinkle不能自动標記其他條目)。' );
return;
}
if( (params.mergeTagOther || params.mergeReason) && params.mergeTarget.indexOf('|') !== -1 ) {
alert( '目前还不支持在一次合併中標記多个條目,与开启关于多个條目的讨论。请不要勾选“標記其他條目”和/或清理“理由”框,并重试。' );
return;
return;
}
}