User:Timmy Tian/templatescript.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/*
* TemplateScript adds configurable templates and scripts to the sidebar, and adds an example regex editor.
* @see https://meta.wikimedia.org/wiki/TemplateScript
* @update-token [[File:pathoschild/templatescript.js]]
本工具改编自https://en.wikipedia.org/wiki/User:Ohconfucius/script/MOSNUM_dates.js
功能为将accessdate、date和archivedate中标准英文dmy和mdy日期格式转换为ISO格式,适用于从英文维基翻译到中文维基的条目
原版本:User:Qsx753698/Tool/MOSNUM dates.js
使用方法:将importScript('User:小躍/templatescript.js');加入您的js页,进入源代码编辑页,左侧工具一栏会出现“日期->ISO”一行,点击即可
*/
$.ajax('//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js', { dataType:'script', cache:true }).then(function() {
if( $.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
pathoschild.TemplateScript.add([
// add your own templates or scripts here
{
name: wgULS('欢迎新用户','歡迎新用戶'),
template: '{{'+'subst:welcome}}',
position: 'after',
editSummary: wgULS('欢迎新用户,由小躍的[[User:小躍/templatescript.js|templatescript]]所驱动','歡迎新用戶,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動'),
forNamespaces: 'user talk'
},
{
name: '添加年度分類主題',
template: '{{cat topic in year| topic=建立的國家或政權|year=}}\n',
position: 'before',
editSummary: '[[T:cat topic in year|添加年度分類主題]]:建立的國家或政權,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動',
forNamespaces: 'Category' ,
script: function(editor) {
editor
.options({ minor: true});
}
},
{
name:'自動編輯摘要:更新票數',
script: function(editor) {
editor
.appendEditSummary('更新票數,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動生成的自動摘要')
.options({ minor: true});
}
},
{
name:'自動編輯摘要:修理',
script: function(editor) {
editor
.appendEditSummary('修理,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動生成的自動摘要')
.options({ minor: true});
}
},
{
name:'自動編輯摘要:修正資料',
script: function(editor) {
editor
.appendEditSummary('修正資料,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動生成的自動摘要')
.options({ minor: true});
}
},
]);
if(wgPageName.match(".js")&&wgPageName.match("User:")){
pathoschild.TemplateScript.add([
{
name:'自動編輯摘要:修改js程式碼設置',
script: function(editor) {
editor
.appendEditSummary('修改js程式碼設置,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動生成的自動摘要')
.options({ minor: true});
}
},
]);
}
pathoschild.TemplateScript.add([
{
name:'去除不可見位元',
script: function(editor) {
editor
.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f\u200b-\u200f\u202c-\u202e\u2060-\u2064\u206a-\u206f\ufeff]/ig,'')
.appendEditSummary('去除不可見位元,由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動生成的自動摘要')
.options({ minor: true})
.clickDiff();
}
},
]);
if($('#wpSummary').val().match("的日期正[规規]格式")){
$('#wpSave').click(function(){
var ISOIntoSummaryC=$('ins.diffchange.diffchange-inline').length;
$('#wpSummary').val($('#wpSummary').val()+',替換次數:'+ISOIntoSummaryC);
if(wgUserName=="Eagerbot"){
$('#wpSummary').val('機器人【[[Wikipedia:机器人/申请/Eagerbot/12|任務七]]】:'+$('#wpSummary').val());
}
});
}
if($('#wpSummary').val().match("去除不可見位元")){
$('#wpSave').click(function(){
var delnoneC=$('del.diffchange').length;
$('#wpSummary').val($('#wpSummary').val()+',去除區塊:'+delnoneC+'處');
});
}
$.ajax('//en.wikipedia.org/w/index.php?title=User:Ohconfucius/script/MOSNUM_utils.js&action=raw&ctype=text/javascript', { dataType:'script', cache:true }).then(function() {
$(function() {
$( mw.util.addPortletLink('p-cactions', '#', wgULS('日期->ISO'), 't-allISO', '日期格式修正至正規格式', '', '#ca-move') ).click(ISO_dates_driver);
$( mw.util.addPortletLink('p-cactions', '#', wgULS('正文日期翻译','正文日期翻譯'), 't-allZhDate', '將英文日期進行自動翻譯', '', '#ca-move') ).click(ATZH_Date);
});
});
}
});
//ISO_dates
function MOSNUM_edit_summary() {
setoptions(minor='true');
setreason(wgULS('基于[[Wikipedia:格式手册/日期和数字|格式手册]]修正参考资料模板的日期正规格式(ISO 8601#日历日期表示法),由小躍的[[User:小躍/templatescript.js|templatescript]]所驱动',
'基於[[Wikipedia:格式手册/日期和数字|格式手冊]]修正參考資料模板的日期正規格式(ISO 8601#日曆日期表示法),由小躍的[[User:小躍/templatescript.js|templatescript]]所驅動'), 'append');
doaction('diff');
}
//定義一般搜尋
var RegexFM=[
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day @Month,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day @Month @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Month @Day,? @YYYY(?=[\s]*[|}])/gi
];
//定義月份
var RegexMC=[
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 一月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 二月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 三月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 四月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 五月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 六月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 七月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 八月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 九月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 十月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 十一月 @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@Day 十二月 @YYYY(?=[\s]*[|}])/gi];
var RegexMC2=[
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)一月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)二月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)三月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)四月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)五月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)六月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)七月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)八月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)九月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)十月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)十一月 @Day,? @YYYY(?=[\s]*[|}])/gi,
/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)十二月 @Day,? @YYYY(?=[\s]*[|}])/gi];//See 麥可·B·喬丹 old ver.
var ReplaceMCN=["01","02","03","04","05","06","07","08","09","10","11","12"];
function ISO_dates() {
var fmcount=0;
for( fmcount = 0; fmcount < 3; fmcount++){
ohc_regex(RegexFM[fmcount], "$1=$2@YYYY-@MM-@DD");
}
var spcount=0;//計算搜尋取代次數
for( spcount = 0; spcount < 12; spcount++){
ohc_regex(RegexMC[spcount], "$1=$2@YYYY-"+ReplaceMCN[spcount]+"-@DD");
ohc_regex(RegexMC2[spcount], "$1=$2@YYYY-"+ReplaceMCN[spcount]+"-@DD");
}
//ohc_regex(/(\s*)@Month @Day,? @YYYY(\s*)/gi, "$1@YYYY-@MM-@DD$2");
}
function ISO_dates_driver(e) {
e.preventDefault();
ISO_dates();
MOSNUM_edit_summary();
}
var RegexATZH=[
/@SD @Month,? @YYYY/gi,
/@SD @Month @YYYY/gi,
/@Month @SD,? @YYYY/gi
];
function ATZH_Date(e){
e.preventDefault();
setoptions(minor='true');
setreason(wgULS('使用[[User:小躍/templatescript.js]]自动翻译正文日期将参考资料日期转成[[ISO 8601#日历日期表示法]](试用版)',
'使用[[User:小躍/templatescript.js]]自動翻譯正文日期或將參考資料日期轉成[[ISO 8601#日历日期表示法|ISO 8601#日曆日期表示法]](試用版)'), 'append');
var ATZHcount=0;
for( ATZHcount = 0; ATZHcount < 3; ATZHcount++){
ohc_regex(RegexATZH[ATZHcount], "@YYYY年@SM月@SD日");
}
ohc_regex(/(\|\s*(?:accessdate|date|archivedate)\s*)=(\s*)@YYYY年@SM月@SD日(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
ohc_regex(/@SD @Month(?: )/gi, "@SM月@SD日");
ohc_regex(/@Month @SD[\D]/gi, "@SM月@SD日");
}