利用者:フリー百科事典利用者/scripts/importFromForeignWiki.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
// importFromForeignWiki.js
// 説 明: 翻訳の過程で他言語版から取り込む作業を簡略化したいと思い作成。テンプレートの移入にも使えます。
// 作 者: https://ja-two.iwiki.icu/wiki/利用者:フリー百科事典利用者
// 利用法: <日本語版において>[[作成したいページ]](すなわち赤リンク)に移動。
// タブから"他言語版から複製"を選び、インターウィキ付きの記事名を入力する。(ex.「en:Kobe City」)
// 後はスクリプトが自動で最新版の情報を取得し、適切な要約とともに日本語版へ複製します。
// 備 考: * 現時点では、2階層以上のインターウィキには対応していません。「en:タイトル」「wikt:タイトル」は移入できますが「fr:b:タイトル」はエラーとなります
// * 他言語版から取り込むためimportという名前ですが、MediaWikiのインポート機能とは無関係です
$.when(
mw.loader.using(['mediawiki.util', 'mediawiki.api', 'mediawiki.ForeignApi', 'mediawiki.widgets', 'oojs-ui','oojs-ui-windows']),
$.ready
).then(function() {
if(mw.config.get("wgNamespaceNumber") != -1){
mw.messages.set({
"iffw-tab-label" : "他言語版から複製",
"iffw-tab-tooltip" : "このタイトルで他言語版から移入する",
"iffw-label" : "ページを他言語版から複製",
"iffw-placeholder" : "インターウィキ付きのページ名",
"iffw-summary" : "[[$1:$2]]の[[$1:Special:Permalink/$3|$4の版(版番$3)]]より全文転記 ([[User:フリー百科事典利用者/scripts/importFromForeignWiki.js|スクリプト]]による)",
});
var portletLink = mw.util.addPortletLink("p-cactions", "#", mw.msg("iffw-tab-label"), "ca-fork", mw.msg("iffw-tab-tooltip"), null, "#ca-move");
$(portletLink).click(function(e) {
e.preventDefault();
// 複製先ページ指定ダイアログを作成して
OO.ui.prompt( mw.msg("iffw-label"), { pagename: { placeholder: 'ページ名' } } ).done( function ( result ) {
if ( result !== null ) {
try {
var splitted = result.split(/(?<=^[^:]+):/);
api = new mw.ForeignApi("https://" + splitted[0] + ".wikipedia.org/w/api.php");
api.get({
"format": "json",
"action": "query",
"titles": splitted[1],
"prop": "revisions",
"rvprop": "timestamp|content|ids"
}).done(function (data){
for(var key in data.query.pages){
var revisionData = data.query.pages[key].revisions[0];
var params = {
action: 'edit',
title: mw.config.get("wgPageName"),
text: revisionData["*"],
format: 'json',
summary: mw.msg("iffw-summary", splitted[0],
splitted[1],
revisionData.revid,
revisionData.timestamp),
},
localapi = new mw.Api();
localapi.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
}
});
} catch(e) {
console.log( e.message );
alert("エラーが発生しました。言語コードかページ名が誤っている可能性があります");
}
} else {
console.log( 'ダイアログがキャンセルされました' );
}
} );
});
}
});