User:小躍/test.js:修订间差异
外观
< User:小躍
删除的内容 添加的内容
小 修改js程式碼設置,由小躍的templatescript所驅動生成的自動摘要 |
小 修改js程式碼設置,由小躍的templatescript所驅動生成的自動摘要 |
||
第2行: | 第2行: | ||
(function($){ |
(function($){ |
||
if( |
if($("#p-twinkle")){}else{return;} |
||
if(/^Wikipedia:(頁面|檔案)存廢討論\/記錄\/\d+\/\d+\/\d+$/.test(mw.config.get('wgPageName'))||mw.config.get('wgPageName')=='User_talk:小躍/Sandbox/Other-Test'){ |
if(/^Wikipedia:(頁面|檔案)存廢討論\/記錄\/\d+\/\d+\/\d+$/.test(mw.config.get('wgPageName'))||mw.config.get('wgPageName')=='User_talk:小躍/Sandbox/Other-Test'){ |
||
2018年2月2日 (五) 08:00的版本
//Test
(function($){
if($("#p-twinkle")){}else{return;}
if(/^Wikipedia:(頁面|檔案)存廢討論\/記錄\/\d+\/\d+\/\d+$/.test(mw.config.get('wgPageName'))||mw.config.get('wgPageName')=='User_talk:小躍/Sandbox/Other-Test'){
}else{
return;
}
var spanTag = function( color, content ) {
var span = document.createElement( 'span' );
span.style.color = color;
span.appendChild( document.createTextNode( content ) );
return span;
};
var selector = ':has(.mw-headline a:only-of-type):not(:has(+ div.NavFrame))';
var titles = $('#bodyContent').find('h2' + selector + ':not(:has(+ p + h3)), h3' + selector); // really needs to work on
var delNode = document.createElement('strong');
var delLink = document.createElement('a');
delLink.appendChild( spanTag( 'Black', '【' ) );
delLink.appendChild( spanTag( 'Blue', wgULS('关闭', '關閉') ) );
delLink.appendChild( spanTag( 'Black', '】' ) );
delNode.appendChild(delLink);
titles.each(function(key, current) {
var headlinehref = $(current).find('.mw-headline a').attr('href');
var title;
if (headlinehref.indexOf('redlink=1') === -1) {
title = headlinehref.slice(6);
}
else {
title = headlinehref.slice(19, -22);
}
title = decodeURIComponent(title);
var pagenotexist = $(current).find('.mw-headline a').hasClass('new');
var section = /section=(\d+)/.exec($(current).find('.mw-editsection a:last').attr('href'))[1];
var node = current.getElementsByClassName('mw-headline')[0];
node.appendChild( document.createTextNode(' ') );
var tmpNode = delNode.cloneNode( true );
tmpNode.firstChild.href = '#' + section;
$(tmpNode.firstChild).click(function() {
Twinkle.close.callback(title, section, pagenotexist);
return false;
});
node.appendChild( tmpNode );
});
// Keep this synchronized with {{delh}}
Twinkle.close.codes = {//wgULS('', '')
'無效': {
'ir': {
label: wgULS('请求无效','請求無效'),
action: 'keep'
},
'rep': {
label: wgULS('重复提出,无效','重複提出,無效'),
action: 'keep'
},
'commons': {
label: wgULS('应在维基共享资源提请','請在維基共享資源提出'),
action: 'keep'
},
'ne': {
label: wgULS('目标页面或档案不存在,无效','目標名稱不存在,無效'),
action: 'keep'
},
'nq': {
label: wgULS('未取得提删资格,无效','未取得提刪資格,無效'),
action: 'keep'
}
},
'保留': {
'k': {
label: '保留',
action: 'keep'
},
'sk': {
label: '快速保留',
action: 'keep'
},
'tk': {
label: wgULS('暂时保留','暫時保留'),
action: 'keep'
},
'rr': {
label: wgULS('请求理由消失','請求理由消失'),
action: 'keep'
},
'dan': {
label: wgULS('重建与被删版本不符','重建與被刪的版本不符'),
action: 'keep'
}
},
'快速刪除': {
'sd': {
label: wgULS('被管理员快速删除','被管理員快速删除'),
action: 'csd'
}
},
'轉至其他维基計劃': {
'twc': {
label: wgULS('转至维基共享资源','轉至維基共享資源'),
action: 'noop'
},
'twn': {
label: wgULS('转至维基新闻','轉至維基新聞'),
action: 'noop'
},
'tws': {
label: wgULS('转至维基文库','轉至維基文庫'),
action: 'noop'
},
'twb': {
label: wgULS('转至维基教科书','轉至維基教科書'),
action: 'noop'
},
'twq': {
label: wgULS('转至维基语录','轉至維基語錄'),
action: 'noop'
},
'twt': {
label: wgULS('转至维基词典','轉至維基詞典'),
action: 'noop'
},
'twvoy': {
label: wgULS('转至维基导游','轉至維基導遊'),
action: 'noop'
},
'two': {
label: wgULS('转至其他维基计划','轉至其他維基計劃'),
action: 'noop'
}
},
'其他': {
'c': {
label: wgULS('转交侵权','轉交侵權'),
action: 'noop'
},
'm2ifd': {
label: wgULS('转送文件存废讨论','轉送文件存廢討論'),
action: 'noop'
},
'r': {
label: '重定向',
action: 'noop'
},
'cr': {
label: wgULS('分类重定向','分類重定向'),
action: 'noop'
},
'm': {
label: wgULS('移动','移動'),
action: 'noop'
},
'merge': {
label: wgULS('并入','併入'),
action: 'noop'
},
'nc': {
label: wgULS('无共识','無共識'),
action: 'keep'
}
}
};
Twinkle.close.callback = function twinklecloseCallback(title, section, noop) {
var Window = new Morebits.simpleWindow( 400, 150 );
Window.setTitle( wgULS("关闭存废讨论 \u00B7 ","關閉存廢討論 \u00B7 ") + title );
Window.setScriptName( "Twinkle" );
Window.addFooterLink( wgULS("Twinkle协助","Twinkle協助"), "WP:TW/DOC#close" );
var form = new Morebits.quickForm( Twinkle.close.callback.evaluate );
form.append( {
type: 'select',
label: '處理結果:',
name: 'sub_group',
event: Twinkle.close.callback.change_code
} );
form.append({
type: 'input',
name: 'csdReason',
label: '被快速刪除的理由(ex. G11):'
} );
form.append({
type: 'input',
name: 'turnotherproject',
label: '該其他維基企劃的條目名稱(可選填,ex. voy:台灣):'
} );
form.append( {
type: 'input',
name: 'remark',
label: '其他理由:'
} );
form.append( {
type: 'checkbox',
list: [
{
label: '只关闭讨论,不进行其他操作',
value: 'noop',
name: 'noop',
checked: noop
}
]
} );
form.append( { type:'submit' } );
var result = form.render();
Window.setContent( result );
Window.display();
var sub_group = result.getElementsByTagName('select')[0]; // hack
var resultData = {
title: title,
section: parseInt(section),
noop: noop
};
$(result).data("resultData", resultData);
// worker function to create the combo box entries
var createEntries = function( contents, container ) {
$.each( contents, function( itemKey, itemProperties ) {
var key = (typeof itemKey === "string") ? itemKey : itemProperties.value;
var elem = new Morebits.quickForm.element( {
type: 'option',
label: key + ':' + itemProperties.label,
value: key,
selected: itemProperties.selected
} );
var elemRendered = container.appendChild( elem.render() );
$(elemRendered).data("messageData", itemProperties);
} );
};
$.each( Twinkle.close.codes, function( groupLabel, groupContents ) {
var optgroup = new Morebits.quickForm.element( {
type: 'optgroup',
label: groupLabel
} );
optgroup = optgroup.render();
sub_group.appendChild( optgroup );
// create the options
createEntries( groupContents, optgroup );
} );
var evt = document.createEvent( "Event" );
evt.initEvent( 'change', true, true );
result.sub_group.dispatchEvent( evt );
};
Twinkle.close.callback.change_code = function twinklecloseCallbackChangeCode(e) {
var resultData = $(e.target.form).data("resultData");
var messageData = $(e.target).find('option[value="' + e.target.value + '"]').data("messageData");
var noop = e.target.form.noop;
if (resultData.noop || messageData.action === 'noop' ||messageData.action === 'csd') {
noop.checked = true;
noop.disabled = true;
}
else {
noop.checked = false;
noop.disabled = false;
}
if(messageData.action === 'csd'){
e.target.form.csdReason.parentElement.removeAttribute('hidden');
}else{
e.target.form.csdReason.parentElement.setAttribute('hidden', '');
}
switch(e.target.value){
case 'twc':case 'twn':case'tws':case 'twb':case 'twq':case 'twt':case 'two':case 'twvoy':
e.target.form.turnotherproject.parentElement.removeAttribute('hidden');
break;
default:
e.target.form.turnotherproject.parentElement.setAttribute('hidden', '');
break;
}
};
Twinkle.close.callback.evaluate = function twinklecloseCallbackEvaluate(e) {
var code = e.target.sub_group.value;
var resultData = $(e.target).data('resultData');
var messageData = $(e.target.sub_group).find('option[value="' + code + '"]').data("messageData");
var noop = e.target.noop.checked;
var params = {
title: resultData.title,
code: code,
remark: e.target.remark.value,
csdreason: e.target.csdReason.value,
optitle:e.target.turnotherproject.value,
section: resultData.section,
messageData: messageData
};
Morebits.simpleWindow.setButtonsEnabled( false );
Morebits.status.init( e.target );
Morebits.wiki.actionCompleted.notice = "操作完成";
if (noop || messageData.action === 'noop'||messageData.action === 'csd') {
Twinkle.close.callbacks.talkend( params );
}
else {
switch (messageData.action) {
case 'keep':
var wikipedia_page = new Morebits.wiki.page( params.title, wgULS('移除存废讨论模板', '移除存廢討論模板') );
wikipedia_page.setCallbackParameters( params );
wikipedia_page.load( Twinkle.close.callbacks.keep );
break;
default:
alert("Twinkle.close:未定义 " + code);
return;
}
}
};
Twinkle.close.callbacks = {
keep: function (pageobj) {
var statelem = pageobj.getStatusElement();
if (!pageobj.exists()) {
statelem.error( wgULS("页面不存在,可能已被删除", "頁面不存在,可能已被刪除") );
return;
}
var text = pageobj.getPageText();
var params = pageobj.getCallbackParameters();
var pagetitle = mw.Title.newFromText(params.title);
if (pagetitle.getNamespaceId() % 2 === 0) {
var talkpagetitle = new mw.Title(pagetitle.getMainText(), pagetitle.getNamespaceId() + 1);
var talkpage = new Morebits.wiki.page(talkpagetitle.toString(), wgULS('标记讨论页', '標記討論頁'));
var vfdkept = '{{vfd-kept|' + mw.config.get('wgPageName').split('/').slice(2).join('/') + '|' + params.messageData.label + '}}\n';
talkpage.setPrependText(vfdkept);
talkpage.setEditSummary('[[' + mw.config.get('wgPageName') + ']]:' + params.messageData.label + Twinkle.getPref('summaryAd')+' by Twinkle.Eagerclose ver.');
talkpage.setCreateOption('recreate');
talkpage.prepend();
}
var newtext = text.replace(/<noinclude>\s*\{\{([rsaiftcmv]fd)\|[^{}]*?\}\}\s*<\/noinclude>\s*/gi, '');
newtext = newtext.replace(/\{\{([rsaiftcmv]fd)\|[^{}]*?\}\}\s*/gi, '');
if (params.code !== 'tk') {
newtext = newtext.replace(/\{\{(notability|fame|mair|知名度|重要性|显著性|顯著性|知名度不足|人物重要性|重要性不足|notable|关注度|关注度不足|關注度|關注度不足|重要|重要度)\|[^{}]*?\}\}\n*/gi, '');
newtext = newtext.replace(/\{\{(substub|小小作品|cod|小小條目|小小条目)\|[^{}]*?\}\}\n*/gi, '');
}
if (newtext === text) {
statelem.warn(wgULS("未找到存废讨论模板,可能已被移除", "未找到存廢討論模板,可能已被移除"));
Twinkle.close.callbacks.talkend( params );
return;
}
var editsummary = wgULS('存废讨论关闭', '存廢討論關閉')+':[[' + mw.config.get('wgPageName') + ']]'+' by Twinkle.Eagerclose ver.';
pageobj.setPageText(newtext);
pageobj.setEditSummary(editsummary + Twinkle.getPref('summaryAd')+' by Twinkle.Eagerclose ver.');
pageobj.setCreateOption('nocreate');
pageobj.save(Twinkle.close.callbacks.keepComplete);
},
keepComplete: function (pageobj) {
var params = pageobj.getCallbackParameters();
Twinkle.close.callbacks.talkend( params );
},
talkend: function (params) {
var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), wgULS('关闭讨论', '關閉討論'));
wikipedia_page.setCallbackParameters(params);
wikipedia_page.setPageSection(params.section);
wikipedia_page.load(Twinkle.close.callbacks.saveTalk);
},
saveTalk: function (pageobj) {
var statelem = pageobj.getStatusElement();
var text = pageobj.getPageText();
var params = pageobj.getCallbackParameters();
if (text.indexOf('{{delh') !== -1) {
statelem.error( wgULS("讨论已被关闭", "討論已被關閉") );
return;
}
var sbegin = text.indexOf('<section begin=backlog />') !== -1;
var send = text.indexOf('<section end=backlog />') !== -1;
text = text.replace('\n<section begin=backlog />', '');
text = text.replace('\n<section end=backlog />', '');
var bar = text.split('\n----\n');
var split = bar[0].split('\n');
text = split[0] + '\n{{delh|' + params.code + '}}\n' + split.slice(1).join('\n');
text += '\n----\n: ' + params.messageData.label;
if(params.optitle){
text +='[[:'+params.optitle+']]';
}
if(params.csdreason){
text += '(' +params.csdreason+')';
}
if (params.remark) {
text += ':' + params.remark;
}
else {
text += '。';
}
text += '--~~'+'~~\n{{delf}}';
if (bar[1]) {
text += '\n----\n' + bar.slice(1).join('\n----\n');
}
if (send) {
text += '\n<section end=backlog />';
}
if (sbegin) {
// guaranteed to be at tne end?
text += '\n<section begin=backlog />';
}
pageobj.setPageText(text);
pageobj.setEditSummary('/* ' + params.title + ' */ ' + params.messageData.label + Twinkle.getPref('summaryAd')+' by Twinkle.Eagerclose ver.');
pageobj.setCreateOption('nocreate');
pageobj.save(Twinkle.close.callbacks.disableLink);
},
disableLink: function (pageobj) {
var params = pageobj.getCallbackParameters();
$('strong a[href=#' + params.section + '] span').css('color', 'grey');
}
}
})(jQuery);