コンテンツにスキップ

MediaWiki:Mobile.js

提供:信号機Wiki
2025年4月3日 (木) 00:22時点における羽井出 (トーク | 投稿記録)による版 (モバイル版サイドメニューにカテゴリへのリンクを追加(仮))

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください。
/* ここにある全てのJavaScriptはモバイル版サイトの利用者に影響します */

mw.loader.using([ 'mediawiki.util' ], function() {

    /** &withJS= URL parameter, &withCSS= URL parameter *******
     * [[mw:Snippets/Load JS and CSS by URL]]より。MediaWiki空間に置かれているスクリプトまたはスタイルシートを
     * [[Special:Mypage/common.js]]または[[Special:Mypage/common.css]]を編集しないで体験できるようにする
     * @source https://www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
     * @revision 2020-04-04
     */
    var extraCSS = mw.util.getParamValue( 'withCSS' ),
        extraJS = mw.util.getParamValue( 'withJS' );

    if ( extraCSS ) {
        // WARNING: DO NOT REMOVE THIS "IF" - REQUIRED FOR SECURITY (against XSS/CSRF attacks)
        if ( /^MediaWiki:[^&<>=%#]*\.css$/.test( extraCSS ) ) {
            mw.loader.load( '/w/index.php?title=' + encodeURIComponent( extraCSS ) + '&action=raw&ctype=text/css', 'text/css' );
        } else {
            mw.notify( 'MediaWiki名前空間のページのみ許可されています。', { title: 'withCSSパラメータの値が不正です' } );
        }
    }

    if ( extraJS ) {
        // WARNING: DO NOT REMOVE THIS "IF" - REQUIRED FOR SECURITY (against XSS/CSRF attacks)
        if ( /^MediaWiki:[^&<>=%#]*\.js$/.test( extraJS ) ) {
            mw.loader.load( '/w/index.php?title=' + encodeURIComponent( extraJS ) + '&action=raw&ctype=text/javascript' );
        } else {
            mw.notify( 'MediaWiki名前空間のページのみ許可されています。', { title: 'withJSパラメータの値が不正です' } );
        }
    }
});

/* Add to MediaWiki:Mobile.js for custom Mobile Menu links 
for MW-1.34.2 with MobileFrontend and MinervaNeue 
Just replace span text and href to add links */
 
var timer = setInterval(function() {
     if ($('.menu ul:first').length) {
         console.log("mobile menu exists");
         clearInterval(timer);
         $('.menu ul:first').after(
               '<ul class="level1"> \
                    <li> \
                    <a href="#" \
                          class="mw-ui-icon mw-ui-icon-before "> \
                    <span>カテゴリ</span> \
                    </a> \
                    </li> \
                    <ul class ="level2"> \
                         <li> \
                         <a href="カテゴリ:灯器" \
                               class="mw-ui-icon mw-ui-icon-before"> \
                         <span>灯器</span> \
                         </a> \
                         </li> \
                         <li> \
                         <a href="/wiki/Link_2" \
                               class="mw-ui-icon mw-ui-icon-before"> \
                         <span>Link 2</span> \
                         </a> \
                         </li> \
                         <li> \
                         <a href="/wiki/Link_3" \
                               class="mw-ui-icon mw-ui-icon-before"> \
                         <span>Link 3</span> \
                         </a> \
                         </li> \
                    </ul> \
               </ul> \
               <ul> \
                    <li> \
                    <a href="/wiki/Second_Link" \
                          class="mw-ui-icon mw-ui-icon-before mw-ui-icon-minerva-watchlist"> \
                    <span>Second Link</span> \
                    </a> \
                    </li> \
               </ul>'
          );
          $(".menu").find(".level2").hide(); // hide level2 until level1 is clicked
          $(".level1").click(function(event){ 
               $(this).find(".level2").slideToggle(500);
          }); // if level1 is clicked, dropdown level2
     }
}, 100); // check every 100ms