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 83: Dòng 83:


/* 각주 팝업창 위치 보정 */
/* 각주 팝업창 위치 보정 */
document.body.addEventListener(
var observer = new MutationObserver(function (mutationList) {
     'DOMNodeInserted',
     mutationList.forEach(function (mutation) {
    function (e) {
        mutation.addedNodes.forEach(function (node) {
        if (e.target.classList && e.target.classList.contains('mwe-popups')) {
            if (node.classList && node.classList.contains('mwe-popups')) {
            requestAnimationFrame(function () {
                requestAnimationFrame(function () {
                var bodyLeft = document.body.getBoundingClientRect().left;
                    var bodyLeft = document.body.getBoundingClientRect().left;
                var left = parseInt(window.getComputedStyle(e.target).left);
                    var left = parseInt(window.getComputedStyle(node).left);
                e.target.style.left = left - bodyLeft + 'px';
                    node.style.left = left - bodyLeft + 'px';
            });
                });
         }
            }
     },
         });
     false
     });
);
});
// 감시할 대상 설정
observer.observe(document.body, {
     childList: true,
    subtree: true,
});


/* 우클릭 방지 */
/* 우클릭 방지 */

Phiên bản lúc 01:47, ngày 12 tháng 8 năm 2024

if(!mw.config.get('wgUserId')){
	var currentUrl = window.location.href;
	var commJs = currentUrl.includes('Common.js');
	var commCss = currentUrl.includes('Common.css');
	var vectorJs = currentUrl.includes('Vector.js');
	var vectorCss = currentUrl.includes('Vector.css'); 
	if(commJs || commCss || vectorJs || vectorCss){
		window.location.href = '/index.php';
	}
	// 도구 메뉴들 숨김(사이드바);
	$pTb = document.getElementById('p-tb');
	if ($pTb) $pTb.parentElement.removeChild($pTb);		
	
	// 문서의 역사롤 봅니다. (hidden 시킴)
	var $lastModifiedBar = document.querySelector('.last-modified-bar');
	if($lastModifiedBar) $lastModifiedBar.parentElement.removeChild($lastModifiedBar);

	//파일중복 메세지 제거
	var $duplicates = document.getElementById('mw-imagepage-section-duplicates');
	if($duplicates) $duplicates.parentElement.removeChild($duplicates);	
}

/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */
//Google Analytics
var GoogleCdn = document.createElement('script');
GoogleCdn.src = 'https://www.googletagmanager.com/gtag/js?id=G-MN2WCQEXLW';
document.body.appendChild(GoogleCdn);
window.dataLayer = window.dataLayer || [];
function gtag() {
    dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-MN2WCQEXLW');

/* 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 = '';
}

/* 각주 팝업창 위치 보정 */
var observer = new MutationObserver(function (mutationList) {
    mutationList.forEach(function (mutation) {
        mutation.addedNodes.forEach(function (node) {
            if (node.classList && node.classList.contains('mwe-popups')) {
                requestAnimationFrame(function () {
                    var bodyLeft = document.body.getBoundingClientRect().left;
                    var left = parseInt(window.getComputedStyle(node).left);
                    node.style.left = left - bodyLeft + 'px';
                });
            }
        });
    });
});
// 감시할 대상 설정
observer.observe(document.body, {
    childList: true,
    subtree: true,
});

/* 우클릭 방지 */
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 + '%';
        }
    }
}

//넘겨주기 문서를 숨깁니다.
var redirectList = document.querySelectorAll('.mw-parser-output li.allpagesredirect')
for (var i=0; i < redirectList.length; i++){
	redirectList[i].style.display = 'none';
}

// 이미지문서에서 commons 라이센스 관련 링크를 숨긴다.
var $sharedUploadNotice = document.querySelector('.sharedUploadNotice p');
if($sharedUploadNotice){
	$sharedUploadNotice.parentElement.removeChild($sharedUploadNotice);
}
// origin file 영역 숨김.
var $fullMedia = document.querySelector('.fullMedia p');
if($fullMedia){
	$fullMedia.parentElement.removeChild($fullMedia);
}