「MediaWiki:Common.js」の版間の差分

t
t2
73行目: 73行目:
(function() {
(function() {
     function initCustomMenu() {
     function initCustomMenu() {
        // Minervaのメニュー(三本線クリックで出る中身)を探す
         var $target = $('.menu ul:first');
        // いろいろなパターンに対応
         var $target = $('.menu ul:first, .navigation-drawer ul:first, #mw-mf-page-left ul:first');


         if ($target.length && !$('#p-custom-accordion').length) {
         if ($target.length && !$('#p-custom-accordion').length) {
            console.log("Target found! Injecting menu...");
         
           
             var html =  
             var html =  
                 '<ul class="level1" id="p-custom-accordion" style="list-style:none !important; margin:0 !important; padding:0 !important;">' +
                 '<ul id="p-custom-accordion" class="hlist" style="border-bottom: 1px solid #eaecf0; padding-bottom: 5px;">' +
                     '<li class="menu__item" style="cursor:pointer; padding: 10px 16px; border-top: 1px solid #eaecf0;">' +
                 
                         '<span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-mf-expand"></span>' +
                     '<li class="menu__item">' +
                        '<span style="font-weight:bold;">カスタムメニュー</span>' +
                         '<a href="#" id="custom-menu-toggle" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-mf-expand" style="font-weight:bold;">' +
                            '<span>Wikiリンク</span>' +
                        '</a>' +
                     '</li>' +
                     '</li>' +
                     '<div class="level2-container" style="display:none; background: #f8f9fa;">' +
                     '<div id="custom-menu-content" style="display:none; background-color: #f8f9fa; margin-left: 10px; border-radius: 4px;">' +
                         '<li class="menu__item"><a href="/wiki/Wiki:方針" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-notice"><span>方針</span></a></li>' +
                         '<li class="menu__item"><a href="/wiki/Wiki:方針" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-notice"><span>方針</span></a></li>' +
                         '<li class="menu__item"><a href="/wiki/特別:特別ページ一覧" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-star"><span>特別ページ一覧</span></a></li>' +
                         '<li class="menu__item"><a href="/wiki/特別:特別ページ一覧" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-star"><span>特別ページ一覧</span></a></li>' +
94行目: 93行目:
                 '</ul>';
                 '</ul>';


             $target.before(html); // prepend(一番上)ではなくbefore(直前)で試す
             $target.before(html);


             $('#p-custom-accordion .level1, #p-custom-accordion li:first').on('click', function(e) {
             $('#custom-menu-toggle').on('click', function(e) {
                 e.preventDefault();
                 e.preventDefault();
                 $('.level2-container').slideToggle(200);
                 $('#custom-menu-content').slideToggle(200);
                $(this).toggleClass('mw-ui-icon-mf-expand mw-ui-icon-mf-collapse');
             });
             });
         }
         }
     }
     }


    // 1. ページ読み込み時に実行
     $(document).ready(initCustomMenu);
     $(document).ready(initCustomMenu);
    // 2. それでもダメなら0.5秒おきに監視(5秒間)
     var retry = 0;
     var retry = 0;
     var timer = setInterval(function() {
     var timer = setInterval(function() {
         initCustomMenu();
         initCustomMenu();
         if (++retry > 10) clearInterval(timer);
         if (++retry > 20) clearInterval(timer);
     }, 500);
     }, 300);
})();
})();


console.log("OK Common.js")
console.log("OK Common.js")