コンテンツにスキップ

利用者: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>