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 = ""; |
||
⚫ | |||
⚫ | |||
} else { |
|||
⚫ | |||
⚫ | |||
// prompt for other parameters, based on the tag |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
break; |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
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 += ';'; |
|||
⚫ | |||
// 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; |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
params.moveTarget = Morebits.string.toUpperCaseFirstChar(params.moveTarget.replace(/_/g, ' ')); |
|||
currentTag += '|' + params.moveTarget + '}}'; |
|||
⚫ | |||
⚫ | |||
case '併': |
|||
⚫ | |||
currentTag += '{{併|'; |
|||
// normalize the merge target for now and later |
|||
⚫ | |||
⚫ | |||
⚫ | |||
break; |
|||
default: |
|||
⚫ | |||
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*(?: |
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) |
||
talkpageText = "\n\n== 議與[[" + params.mergeTarget + "]]合併 ==\n\n"; |
|||
talkpageText += params.mergeReason.trim() + "--~~~~"; |
talkpageText += params.mergeReason.trim() + "--~~~~"; |
||
talkpage = new Morebits.wiki.page("Talk:" + mw.config.get('wgTitle'), "將理由貼进討論頁"); |
|||
talkpage.setAppendText(talkpageText); |
talkpage.setAppendText(talkpageText); |
||
talkpage.setEditSummary('議將[[' + |
talkpage.setEditSummary('議將[[' + mw.config.get('wgTitle') + ']]' + |
||
'併' + '[[' + params. |
'併至' + '[[' + 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 = { |
||
moveTarget: form['articleTags.moveTarget'] ? form['articleTags.moveTarget'].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.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; |
||
} |
} |