User:小躍/templatescript.js

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ 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('欢迎新用户,Drive by [[User:小躍/templatescript.js|Templatescript]] of Eager','歡迎新用戶,運行 [[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('修理,Drive by [[User:小躍/templatescript.js|Templatescript]] of Eager')
			.options({ minor: true});
		}
		},
	
		{
		name:'自動編輯摘要:修正資料',
		script: function(editor) {
		editor
			.appendEditSummary('修正資料,運行 [[User:小躍/templatescript.js|Templatescript]] 腳本')
			.options({ minor: true});
		}
		},
		{
		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(mw.config.get('wgPageName').match(".js")&&mw.config.get('wgPageName').match("User:")){
	pathoschild.TemplateScript.add([
		{
		name:'自動編輯摘要:修改js程式碼設置',
		script: function(editor) {
		editor
			.appendEditSummary('修改js程式碼設置,運行 [[User:小躍/templatescript.js|Templatescript]] 腳本')
			.options({ minor: true});
		}
		}
	]);
	}
	
	if($('#wpSummary').val().match("的日期正[规規]格式")){
	$('#wpSave').click(function(){
		var ISOIntoSummaryC=$('ins.diffchange.diffchange-inline').length;
		$('#wpSummary').val($('#wpSummary').val()+',替換次數:'+ISOIntoSummaryC);
		if(mw.config.get('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#日历日期表示法),Drive by [[User:小躍/templatescript.js|Templatescript]] of Eager',
	'基於[[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日");
}