User:Bosco Sin/tp.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
//<nowiki>
( function( $, mw ) {
// 添加一个按钮到工具栏以便手动触发脚本
$(function() {
if (mw.config.get('wgNamespaceNumber') % 2 === 0 && mw.config.get('wgNamespaceNumber') !== -1) { // 只在非讨论页显示按钮
mw.util.addPortletLink(
'p-cactions', // 工具栏位置
'#', // 链接地址
'添加翻译模板', // 按钮名称
'add-translated-page', // ID
'为当前页面的讨论页添加{{Translated page}}模板' // 提示文字
);
$('#add-translated-page').on('click', function(e) {
e.preventDefault();
addTranslatedPageTemplate();
});
}
});
function addTranslatedPageTemplate() {
var targetTitle = mw.config.get('wgPageName'); // 当前页面标题
var article = new mw.Title(targetTitle);
var talk = new mw.Title(article.getMainText(), article.getNamespaceId() | 1); // 获取对应的讨论页
// 弹出对话框获取用户输入
var sourceLanguage = prompt("请输入来源语言(例如:en):");
if (!sourceLanguage) {
alert("来源语言不能为空!");
return;
}
var sourceTitle = prompt("请输入来源页面(例如:Page Title):");
if (!sourceTitle) {
alert("来源页面不能为空!");
return;
}
var version = prompt("请输入来源页面的特定版本号(例如:12345678):");
var insertversion = prompt("请输入本地翻译后的特定版本号(例如:12345678):");
var template = '{{Translated page|' + sourceLanguage + '|' + sourceTitle + '|version=' + version + '|insertversion=' + insertversion + '}}\n';
var api = new mw.Api();
api.get({
action: 'query',
prop: 'revisions',
titles: talk.getPrefixedText(),
rvprop: [ 'timestamp', 'content' ],
indexpageids: true,
curtimestamp: true
}).done(function(data) {
if (!data.query || !data.query.pages) {
alert("无法获取讨论页信息,请稍后重试。");
return;
}
var pageId = data.query.pageids[0];
var revision = (data.query.pages[pageId].revisions || [])[0] || {};
var text = revision['*'];
var params = {
action: 'edit',
title: talk.getPrefixedText(),
summary: '为翻译页面标记{{[[Template:Translated page|Translated page]]}}模板 ([[User:Bosco Sin/tp.js|tp.js]])',
starttimestamp: data.curtimestamp,
text: template
};
if (text !== undefined) { // 如果讨论页已存在
params.basetimestamp = revision.timestamp;
params.text = template + text.replace(/\{\{\s*Translated page\s*\|[^\{\}]+\}\}\n?/g, '');
} else { // 如果讨论页不存在
params.createonly = true;
}
api.postWithEditToken(params).done(function(data) {
if (data.edit && data.edit.result === 'Success') {
alert('成功为' + talk.getPrefixedText() + '添加了{{Translated page}}模板!');
location.reload(); // 刷新页面以显示更新内容
} else {
alert('添加模板失败,请稍后重试。');
}
}).fail(function() {
alert('添加模板失败,请检查网络连接或权限设置。');
});
}).fail(function() {
alert('无法获取讨论页信息,请稍后重试。');
});
}
})(jQuery, mediaWiki);
//</nowiki>