利用者:Atmark-chan/WTECH/sb/PageMerger.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
●Ctrl を押しながら F5 を押す。
Mac における Safari
●⇧ Shift を押しながら、更新ボタン をクリックする。
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>