미디어위키: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);
     });
     });
});
}