미디어위키:Minerva.js: 두 판 사이의 차이

하나님의 교회 지식사전
둘러보기로 이동 검색으로 이동
편집 요약 없음
편집 요약 없음
84번째 줄: 84번째 줄:
});
});


/* -------------------------------
if ( mw.config.get('skin') === 'minerva' ) {
*  모바일 언어 메뉴 삽입 (Minerva)
* ------------------------------- */
mw.loader.using(['jquery']).then(function() {


     $(function() {
     // 1) 인터위키 링크 가져오기 (#p-lang 기준)
    var $interwikiLinks = $('#p-lang .vector-menu-content-list .interlanguage-link a');


        var modal = $('#myLayer');
    if ($interwikiLinks.length === 0) {
         var btn = $('#selectLanguage');
         console.warn('모바일 언어 메뉴: 인터위키 링크가 없습니다.');
         var span = $('.close-button').first();
         return;
    }


        btn.click(function() {
    // 2) 한국어 병기용 매핑
            modal.show();
    var langMap = {
        });
        'ko': '한국어',
 
        'en': '영어',
        span.click(function() {
        'es': '스페인어',
            modal.hide();
        'vi': '베트남어',
        });
        'ne': '네팔어',
 
        'pt': '포르투갈어'
        $(window).click(function(event) {
    };
            if ($(event.target).is(modal)) {
                modal.hide();
            }
        });
 
        // Minerva 스킨에서만 실행
        if (mw.config.get('skin') !== 'minerva') return;
 
        // 1) 인터위키 목록 읽기
        const $interwikiLinks = $('#p-lang .vector-menu-content-list .interlanguage-link a');
 
        if ($interwikiLinks.length === 0) {
            console.warn('인터위키 목록이 없습니다.');
            return;
        }
 
        // 2) mobile-language 리스트 비움
        const $mobileList = $('#mobile-language');
        $mobileList.empty();
 
        // 3) 언어 한국어 병기용 매핑
        const langMap = {
            'ko': '한국어',
            'en': '영어',
            'es': '스페인어',
            'vi': '베트남어',
            'ne': '네팔어',
            'pt': '포르투갈어'
        };
 
        // 4) 인터위키에서 데이터 읽어서 모바일 메뉴에 넣기
        $interwikiLinks.each(function() {
 
            const $a = $(this);


            const href = $a.attr('href');
    // 3) 모바일 ul 선택 후 기존 내용 비우기
            const langCode = $a.attr('lang');
    var $list = $('#mobile-language');
            const koreanName = langMap[langCode] || '';
    $list.empty();   // <ul id="mobile-language"> 안의 li 전부 제거
            const autonym = $a.find('span').text() || $a.text();


            // "English (영어)" 형식으로
    // 4) 인터위키 데이터를 이용해 li + a 생성
            const fullName = koreanName
    $interwikiLinks.each(function () {
                ? `${autonym} (${koreanName})`
        var $a = $(this);
                : autonym;


            const $li = $('<li>');
        var href      = $a.attr('href');             // 문서별 언어 URL
            const $newA = $('<a>', {
        var langCode  = $a.attr('lang');              // en, es, vi ...
                href: href,
        var autonym  = $a.find('span').text() || $a.text(); // English, Español ...
                text: fullName
        var korean    = langMap[langCode] || '';
            });
        var labelText = korean ? (autonym + ' (' + korean + ')') : autonym;


            $li.append($newA);
        var $li = $('<li>');
            $mobileList.append($li);
        var $new = $('<a>', {
            href: href,
            text: labelText
         });
         });


        $li.append($new);
        $list.append($li);
     });
     });
});
}

2025년 11월 24일 (월) 16:54 판

/* All JavaScript here will be loaded for users of the MinervaNeue skin */
function wikiLink(title) {
    return mw.config.get('wgServer') + '/' + title.replace(/ /g, '_');
}

document
    .querySelector('#mw-mf-page-left #p-navigation')
    .insertAdjacentHTML(
        'afterend',
        '<ul id="p-main-categories" class="recommended-open">' +
            '<li class="title-recommended open"><a><span>추천문서</span></a><span class="ico-arrow"></span></li>' +
            '<li class="recommended"><a href="/"><span>하나님의 교회</span></a></li>' +
            '<li class="recommended"><a href="'+wikiLink("안상홍")+'"><span>그리스도 안상홍님</span></a></li>' +
            '<li class="recommended"><a href="'+wikiLink("어머니 하나님")+'"><span>어머니 하나님</span></a></li>' +
            '<li class="recommended"><a href="'+wikiLink("안식일")+'"><span>안식일</span></a></li>' +
            '<li class="recommended"><a href="'+wikiLink("유월절")+'"><span>유월절</span></a></li>' +
            '<li class="recommended"><a href="'+wikiLink("복음과 새 언약")+'"><span>복음과 새 언약</span></a></li>' +
            '<li class="recommended"><a href="'+wikiLink("하나님의 교회 마지막 종교개혁")+'"><span>마지막 종교개혁</span></a></li>' +
            '<li class="title-category"><a><span>카테고리 둘러보기</span></a><span class="ico-arrow"></span></li>' +
			'<li class="category"><a href="'+wikiLink("분류:하나님의 교회")+'"><span>하나님의 교회</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:아버지")+'"><span>아버지 하나님</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:어머니")+'"><span>어머니 하나님</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:새 언약 복음")+'"><span>새 언약 복음</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:성경 일반")+'"><span>성경 상식</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:성경 이슈")+'"><span>성경 이슈</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:사회 공헌")+'"><span>사회 공헌</span></a></li>' +
            '<li class="category"><a href="'+wikiLink("분류:국제 협력")+'"><span>국제 협력</span></a></li>' +
            '</ul>'
    );

// Recommended Documents 토글
document.querySelector('#p-main-categories .title-recommended')
    .addEventListener('click', function (event) {
        event.stopPropagation(); // 사이드바 닫힘 방지
        openList(this, '.recommended');
    });

// Browse by Category 토글
document.querySelector('#p-main-categories .title-category')
    .addEventListener('click', function (event) {
        event.stopPropagation(); // 사이드바 닫힘 방지
        openList(this, '.category');
    });

function openList(titleLi, selector) {
    titleLi.classList.toggle('open');
    let next = titleLi.nextElementSibling;
    while (next && !next.classList.contains('title-recommended') && !next.classList.contains('title-category')) {
        if (next.matches(selector)) {
            next.style.display = (next.style.display === 'none' || next.style.display === '') ? 'block' : 'none';
        }
        next = next.nextElementSibling;
    }
}

// 유튜브 썸네일
document.querySelectorAll('iframe').forEach(function (iframe) {
    var $container = iframe.parentElement;
    var $videoWrap = $container.parentElement;
    if ($videoWrap && $videoWrap.classList.contains('video-wrap')) return;
    iframe.parentElement.classList.add('video-wrap');
});

mw.loader.using(['jquery']).then(function() {
    $(function() {
        var modal = $('#myLayer');
        var btn = $('#selectLanguage'); // jQuery 선택자 사용
        var span = $('.close-button').first();

        btn.click(function() {
            modal.show();
        });

        span.click(function() {
            modal.hide();
        });

        $(window).click(function(event) {
            if ($(event.target).is(modal)) {
                modal.hide();
            }
        });
    });
});

if ( mw.config.get('skin') === 'minerva' ) {

    // 1) 인터위키 링크 가져오기 (#p-lang 기준)
    var $interwikiLinks = $('#p-lang .vector-menu-content-list .interlanguage-link a');

    if ($interwikiLinks.length === 0) {
        console.warn('모바일 언어 메뉴: 인터위키 링크가 없습니다.');
        return;
    }

    // 2) 한국어 병기용 매핑
    var langMap = {
        'ko': '한국어',
        'en': '영어',
        'es': '스페인어',
        'vi': '베트남어',
        'ne': '네팔어',
        'pt': '포르투갈어'
    };

    // 3) 모바일 ul 선택 후 기존 내용 비우기
    var $list = $('#mobile-language');
    $list.empty();   // <ul id="mobile-language"> 안의 li 전부 제거

    // 4) 인터위키 데이터를 이용해 li + a 생성
    $interwikiLinks.each(function () {
        var $a = $(this);

        var href      = $a.attr('href');              // 문서별 언어 URL
        var langCode  = $a.attr('lang');              // en, es, vi ...
        var autonym   = $a.find('span').text() || $a.text(); // English, Español ...
        var korean    = langMap[langCode] || '';
        var labelText = korean ? (autonym + ' (' + korean + ')') : autonym;

        var $li  = $('<li>');
        var $new = $('<a>', {
            href: href,
            text: labelText
        });

        $li.append($new);
        $list.append($li);
    });
}