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

t
a
 
(同じ利用者による、間の8版が非表示)
72行目: 72行目:
/* スマホめにゅー */
/* スマホめにゅー */
(function() {
(function() {
     function initCustomMenu() {
     function injectCustomMenu() {
         // Minervaのメニュー(三本線クリックで出る中身)を探す
         if ($('#p-custom-links').length) return
        // いろいろなパターンに対応
        if (!(mw.config.get('skin') === "minerva")) return
        var $target = $('.menu ul:first, .navigation-drawer ul:first, #mw-mf-page-left ul:first');


         if ($target.length && !$('#p-custom-accordion').length) {
         var $navUl = $('#p-navigation');
            console.log("Target found! Injecting menu...");
        var $personalUl = $('#p-personal');
           
            var html =  
                '<ul class="level1" id="p-custom-accordion" style="list-style:none !important; margin:0 !important; padding:0 !important;">' +
                    '<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>' +
                        '<span style="font-weight:bold;">カスタムメニュー</span>' +
                    '</li>' +
                    '<div class="level2-container" style="display:none; background: #f8f9fa;">' +
                        '<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-listBullet"><span>全てのページ</span></a></li>' +
                        '<li class="menu__item"><a href="/wiki/特別:最近の更新" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-recentChanges"><span>最近の更新</span></a></li>' +
                    '</div>' +
                '</ul>';


            $target.before(html); // prepend(一番上)ではなくbefore(直前)で試す
        if ($navUl.length && $personalUl.length) {
            var items = [
                { label: '方針', url: '/wiki/Wiki:方針', icon: 'expand' },
                { label: '特別ページ一覧', url: '/wiki/特別:特別ページ一覧', icon: 'star' },
                { label: '全てのページ', url: '/wiki/特別:ページ一覧', icon: 'listBullet' },
                { label: '最近の更新', url: '/wiki/特別:最近の更新', icon: 'history' }
            ];


             $('#p-custom-accordion .level1, #p-custom-accordion li:first').on('click', function(e) {
             var html = '<ul id="p-custom-links" class="toggle-list__list">';
                 e.preventDefault();
           
                $('.level2-container').slideToggle(200);
            items.forEach(function(item) {
                 html += '<li class="toggle-list-item">' +
                            '<a href="' + item.url + '" class="toggle-list-item__anchor menu__item--' + item.icon + '">' +
                                '<span class="minerva-icon minerva-icon--' + item.icon + '"></span>' +
                                '<span class="toggle-list-item__label">' + item.label + '</span>' +
                            '</a>' +
                        '</li>';
             });
             });
           
            html += '</ul>';
            $navUl.after(html);
         }
         }
     }
     }


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


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