Khác biệt giữa bản sửa đổi của “MediaWiki:Common.js”

Từ Từ điển tri thức Hội Thánh của Đức Chúa Trời
Bước tới điều hướng Bước tới tìm kiếm
Không có tóm lược sửa đổi
Không có tóm lược sửa đổi
Dòng 67: Dòng 67:
);
);


/* 우클릭 방지 */
window.oncontextmenu = function (e) {
    return e.preventDefault();
};
window.onselectstart = function (e) {
    return e.preventDefault();
};
/* 우클릭 방지 */
/* 우클릭 방지 */
if (mw.config.get('wgUserName') == null) {
if (mw.config.get('wgUserName') == null) {

Phiên bản lúc 07:26, ngày 22 tháng 6 năm 2023

/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */


/* TOP 버튼 */
var topButton = document.createElement('div');
topButton.id = 'top-button';

document.body.appendChild(topButton);
window.addEventListener('scroll', function (e) {
    if (window.scrollY > 300) {
        topButton.classList.add('active');
    } else {
        topButton.classList.remove('active');
    }
});
topButton.addEventListener('click', function (e) {
    try {
        window.scrollTo({
            top: 0,
            left: 0,
            behavior: 'smooth',
        });
    } catch (e) {
        window.scrollTo(0, 0);
    }
});
/* 대문 섹션 토글 */
if (mw.config.get('wgPageName') == '대문' || mw.config.get('wgPageName') == '대문테스트') {
    var titles = document.querySelectorAll('.cog-box-title');
    for (var i = 0; i < titles.length; i++) {
        titles[i].addEventListener('click', function (e) {
            if (e.currentTarget.classList.contains('open')) {
                e.currentTarget.classList.remove('open');
            } else {
                e.currentTarget.classList.add('open');
            }
        });
    }
}

/*모든 문서 */
if (mw.config.get('wgPageName').toLowerCase() == 'list_of_all_documents') {
    var list = document.querySelectorAll('.mw-allpages-body li');
    for (var i = 0; i < list.length; i++) {
        var title = list[i].querySelector('a').title;
        if (title.indexOf(':') != -1) {
            list[i].parentNode.removeChild(list[i]);
        }
    }
    document.querySelector('.cog-commonpages').style.display = '';
}

/* 각주 팝업창 위치 보정 */
document.body.addEventListener(
    'DOMNodeInserted',
    function (e) {
        if (e.target.classList && e.target.classList.contains('mwe-popups')) {
            requestAnimationFrame(function () {
                var bodyLeft = document.body.getBoundingClientRect().left;
                var left = parseInt(window.getComputedStyle(e.target).left);
                e.target.style.left = left - bodyLeft + 'px';
            });
        }
    },
    false
);

/* 우클릭 방지 */
if (mw.config.get('wgUserName') == null) {
	window.oncontextmenu = function (e) {
	    return e.preventDefault();
	};
	window.onselectstart = function (e) {
	    return e.preventDefault();
	};
}
/* 존재하지 않는 문서 페이지의 '기록' 링크 삭제 */
if (mw.config.get('wgUserId') == null && document.querySelector('.plainlinks a')) {
    document.querySelector('.plainlinks a').removeAttribute('href');
    document.querySelector('.plainlinks a').classList.add('disable');
}

// 대문 공유 버튼
var sharebox = document.querySelector('.wikishare_toolbox');
if (sharebox) {
    sharebox.classList.add('a2a_kit_size_20');
    sharebox.classList.add('a2a_kit');
    var shares = ['Facebook', 'Twitter', 'Email', 'Line', 'Kakao', 'SMS'];
    for (var i in shares) {
        var elem = document.querySelector('[title="Share on ' + shares[i] + '"] a');
        elem.href = '';
        elem.classList.add('a2a_button_' + shares[i].toLowerCase());
    }
    document.querySelector('[title="Share on KakaoTalk"] a').href = '#';
    document.querySelector('[title="Share on KakaoTalk"] a').removeAttribute('target');

    var share_cdn = document.createElement('script');
    share_cdn.src = 'https://static.addtoany.com/menu/page.js';
    var kakao_cdn = document.createElement('script');
    kakao_cdn.src = 'https://developers.kakao.com/sdk/js/kakao.min.js';
    document.body.appendChild(share_cdn);
    document.body.appendChild(kakao_cdn);

    // 페이지 로딩 이후 초기화해야할 내용 정의
    initScript();
    function initScript() {
        var retry = false;

        // 카카오 링크 초기화
        if (window.initKakaoLink != true) {
            var $kakao = document.querySelector('[title="Share on KakaoTalk"]');
            if (window.Kakao && $kakao) {
                // 사용할 앱의 JavaScript 키를 설정해 주세요.
                Kakao.init('214de4d25d41a7b837b7bbeb75631c90');
                $kakao.children[0].style.display = 'inline';
                $kakao.onclick = sendScrap; // 카카오 Link 공유 API 사용
                window.initKakaoLink = true;
            } else retry = true;
        }

        // 링크 복사 초기화
        if (window.initCopyLink != true) {
            var $copy = document.querySelector('.wikishare_button_Copy');
            if ($copy) {
                $copy.style.display = 'inline';
                $copy.addEventListener('click', function (e) {
                    copyStringToClipboard(decodeURI(location.href));
                    alert('Saved the link to the clipboard.');
                    e.preventDefault();
                });
                window.initCopyLink = true;
            } else retry = true;
        }

        // 애널리틱스
        if (window.initWcs != true) {
            if (window.wcs) {
                wcs_do();
                window.initWcs = true;
            } else retry = true;
        }

        if (retry) setTimeout(initScript, 300);
    }
}

// 문자열을 클립보드에 저장
function copyStringToClipboard(str) {
    var el = document.createElement('textarea');
    el.value = str;
    el.setAttribute('readonly', '');
    el.style = { position: 'absolute', left: '-9999px' };
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);
}

function sendScrap() {
    // 카카오 Link 공유 API 사용
    Kakao.Link.sendScrap({
        requestUrl: location.href,
        templateId: 91817,
        templateArgs: {
            TITLE: og('title', 'Church of God Knowledge Encyclopedia'),
            DESC: og('description'),
            THUMB: thumb(),
            PAGE: path(),
        },
    });
    function og(name, defaultVal) {
        var $meta = document.querySelector('meta[property="og:' + name + '"]');
        if ($meta) return $meta.getAttribute('content');
        else return defaultVal ? defaultVal : '';
    }
    function thumb() {
        var img = og('image');
        if (!img) {
            var $img = document.querySelector('img[src]');
            if ($img) {
                img = $img.src;
            }
        }
        if (img.indexOf('http') != 0) img = location.origin + (img[0] == '/' ? img : '/' + img);
        return img;
    }
    function path() {
        if (location.pathname[0] == '/') return location.pathname.substring(1) + location.search;
        else return location.pathname + location.search;
    }
}

// 앨범 레이아웃 보정
updateAllAlbum();
window.addEventListener('load', updateAllAlbum);
window.addEventListener('resize', updateAllAlbum);
function updateAllAlbum() {
    var $albums = document.querySelectorAll('.custom-album');
    for (var i = 0; i < $albums.length; i++) {
        updateAlbum($albums[i]);
    }
}
function updateAlbum($elem) {
    var lineMax = 3;
    for (var i = 0; i < $elem.classList.length; i++) {
        if ($elem.classList[i].indexOf('line-max-') == 0) {
            lineMax = Number($elem.classList[i].replace('line-max-', ''));
        }
    }

    var totalWidth = $elem.clientWidth;

    if ($elem.children.length > 0) {
        for (var i = $elem.children.length - 1; i >= 0; i--) {
            if (!$elem.children[i].classList.contains('albumitem')) {
                $elem.children[i].remove();
                continue;
            }
            $elem.children[i].style.width = '';
            $elem.children[i].style.height = '';
        }

        if (window.innerWidth < 720) return;

        var lineTotalRatio = [];
        for (var i = 0; i < $elem.children.length; i++) {
            var lineIdx = Math.floor(i / lineMax);
            var $img = $elem.children[i].querySelector('img');

            if (!$img || $img.naturalWidth == 0) continue;

            if (lineTotalRatio[lineIdx] == undefined) {
                lineTotalRatio[lineIdx] = 0;
            }

            lineTotalRatio[lineIdx] += $img.naturalWidth / $img.naturalHeight;
        }

        for (var i = 0; i < $elem.children.length; i++) {
            var totalRatio = lineTotalRatio[Math.floor(i / lineMax)];
            var $img = $elem.children[i].querySelector('img');

            if (!$img || $img.naturalWidth == 0) continue;

            var ratio = $img.naturalWidth / $img.naturalHeight;
            var width = (ratio / totalRatio) * (totalWidth - 6 * lineMax) + 6;
            $elem.children[i].style.width = (width / totalWidth) * 100 + '%';
        }
    }
}
//const bodyElem = document.querySelector('#bodyContent');
//bodyElem.classList.add("mw-body-content");

//const navigationElem = document.querySelector('.minerva-user-navigation');
//navigationElem.remove()