利用者:Atmark-chan/WTECH/sb/PageMerger.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
// <syntaxhighlight lang="javascript">
/************************************************************************/
// このスクリプトは <<開発途中>> です! 動作しませんので、使用しないでください!
/************************************************************************/
// ページを統合するスクリプト。
// 甲→乙 の統合、および 甲・乙→丙 の新設統合に対応(予定)
/************************************************************************/
jQuery(function($) {
// 名前空間番号を取得
var currentNs = mw.config.get('wgNamespaceNumber');
// 名前空間番号の列記
var nsList = [
0, // 標準
4, // Wikipedia
12, // Help
100, // Portal
102, // プロジェクト
];
/*
・本スクリプトを悪用した荒らしを防ぐため、利用できる名前空間は少なめにしている。
・ノートページは除外している。
*/
// 名前空間の条件を満たすか?
if (nsList.includes(currentNs)) {
// jQueryUIを使用
mw.loader.load('jquery.ui');
// 今いるページの存在の有無
var pageExist = (mw.config.get('wgArticleId') != 0);
// メッセージを定義
mw.messages.set({
'pagemerger-tab-label': '統合',
'pagemerger-tab-tooltip': '既存のページから統合',
'pagemerger-mergePage': 'ページの統合',
'pagemerger-caution-readManuals': '※ 統合に関する方針文書を、必ず事前にご確認ください。',
'pagemerger-targetPageName': '統合元のページ $1'
});
// 複製タブを追加。クリックされたら:
$(mw.util.addPortletLink(
'p-cactions',
'#',
mw.msg('pagemerger-tab-label'),
'ca-merge',
mw.msg('pagemerger-tab-tooltip'),
null, '#ca-info'
)).click(function(e) {
// イベントキャンセル
e.preventDefault();
// css 定義
mw.util.addCSS(
'#pagemergerDialog_background {'
+ 'position: fixed;'
+ 'height: 100vh;'
+ 'width: 100vw;'
+ 'top: 0;'
+ 'left: 0;'
+ 'text-align: center;'
+ 'vertical-align: middle;'
+ 'background-color: white;'
+ 'opacity: 0.1;'
+ '}'
+ '#pagemergerDialog {'
+ 'display: inline-block;'
+ 'margin: 0 auto;'
+ 'margin-top: 25vh;'
+ 'min-height: 150px;'
+ 'width: 70vw;'
+ 'background-color: whitesmoke;'
+ 'border-radius: 5px;'
+ '}'
+ '.pagemergerDialog_title {'
+ 'background-color: lightsteelblue;'
+ 'font-weight: bolder;'
+ 'font-size: 120%;'
+ '}'
+ '.pagemergerDialog_label {'
+ 'font-weight: bolder;'
+ '}'
);
// ダイアログの HTML テキスト
var dialogHTML_1;
if (pageExist) {
dialogHTML_1
= '<p id="pagemerger-label-page" class="pagemergerDialog_label">' + mw.msg('pagemerger-targetPageName', '') + '</p>'
+ '<input id="pagemerger-tb-page" class="pagemergerDialog_tb pagemergerDialog_pageName" type="text"'
+ 'onkeydown="targetPageExist(\'pagemerger-tb-page\');" onkeyup="targetPageExist(\'pagemerger-tb-page\');"'
+ 'onkeypress="targetPageExist(\'pagemerger-tb-page\');"></input>';
} else {
dialogHTML_1
= '<p id="pagemerger-label-page1" class="pagemergerDialog_label">' + mw.msg('pagemerger-targetPageName', '1') + '</p>'
+ '<input id="pagemerger-tb-page1" class="pagemergerDialog_tb pagemergerDialog_pageName" type="text"'
+ 'onkeydown="targetPageExist(\'pagemerger-tb-page\');" onkeyup="targetPageExist(\'pagemerger-tb-page\');"'
+ 'onkeypress="targetPageExist(\'pagemerger-tb-page\');"></input>'
+ '<p id="pagemerger-label-page2" class="pagemergerDialog_label">' + mw.msg('pagemerger-targetPageName', '2') + '</p>'
+ '<input id="pagemerger-tb-page2" class="pagemergerDialog_tb pagemergerDialog_pageName" type="text"'
+ 'onkeydown="targetPageExist(\'pagemerger-tb-page\');" onkeyup="targetPageExist(\'pagemerger-tb-page\');"'
+ 'onkeypress="targetPageExist(\'pagemerger-tb-page\');"></input>';
}
var dialogHTML
= '<div id="pagemergerDialog_background">'
+ '<div id="pagemergerDialog">'
+ '<p id="pagemergerDialog_title_merge" class="pagemergerDialog_title">'
+ mw.msg('pagemerger-mergePage')
+ '</p>'
+ '<p id="pagemergerDialog_caution1">' + '<u>' + mw.msg('pagemerger-caution-readManuals') + '</u>' + '</p>'
+ dialogHTML_1
// 要素を書いていく(作業中)
+ '</div>'
+ '</div>'; // 今ここ! (1)
});
}
});
function targetPageExist(elId) {
/*
elId: 文字列。type="text" の input を指定する
*/
el = document.getElementById(elId);
val = el.value;
// 今ここ! (2)
}
/************************************************************************/
// </syntaxhighlight>