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

t
t
69行目: 69行目:


/* beta2 ここまで */
/* beta2 ここまで */
/* お知らせよう */
$(function() {
    var $notice = $('#wiki-origin-notice');
    if (!$notice.length) return;
    var contentId = $notice.data('content-id');
    var cookieName = 'originnotice-' + contentId;
    // Cookieがあるか確認
    if (document.cookie.indexOf(cookieName + '=true') > -1) {
        $notice.hide();
    }
    $('#close-notice-btn').on('click', function() {
        $notice.fadeOut();
        var date = new Date();
        date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toUTCString();
        document.cookie = cookieName + "=true" + expires + "; path=/";
    });
});


/* スマホめにゅー */
/* スマホめにゅー */
(function() {
(function() {
     var checkCount = 0;
     function initCustomMenu() {
    var timer = setInterval(function() {
         // Minervaのメニュー(三本線クリックで出る中身)を探す
         checkCount++;
        // いろいろなパターンに対応
         var $targetUl = $('.menu ul:first, .navigation-drawer ul:first');
         var $target = $('.menu ul:first, .navigation-drawer ul:first, #mw-mf-page-left ul:first');


         if ($targetUl.length) {
         if ($target.length && !$('#p-custom-accordion').length) {
             clearInterval(timer);
             console.log("Target found! Injecting menu...");
              
              
             if ($('#p-custom-accordion').length) return;
             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>';


             $targetUl.after(
             $target.before(html); // prepend(一番上)ではなくbefore(直前)で試す
                '<ul class="level1" id="p-custom-accordion" style="list-style:none; margin:0; padding:0;">' +
                    '<li style="padding: 10px;">' +
                        '<a href="#" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-mf-expand mw-ui-icon-small" style="font-weight:bold;">' +
                            '<span>カスタムメニュー</span>' +
                        '</a>' +
                    '</li>' +
                    '<ul class="level2" style="list-style:none; margin:0; padding-left: 20px;">' +
                        '<li><a href="/wiki/Wiki:方針" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-notice"><span>方針</span></a></li>' +
                        '<li><a href="/wiki/特別:特別ページ一覧" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-star"><span>特別ページ一覧</span></a></li>' +
                        '<li><a href="/wiki/特別:ページ一覧" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>全てのページ</span></a></li>' +
                        '<li><a href="/wiki/特別:最近の更新" class="mw-ui-icon mw-ui-icon-before mw-ui-icon-recentChanges"><span>最近の更新</span></a></li>' +
                    '</ul>' +
                '</ul>'
            );


             $(".level2").hide();
             $('#p-custom-accordion .level1, #p-custom-accordion li:first').on('click', function(e) {
            $(".level1 > li").on('click', function(e) {
                 e.preventDefault();
                 e.preventDefault();
                 $(".level2").slideToggle(300);
                 $('.level2-container').slideToggle(200);
             });
             });
         }
         }
    }


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


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