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
 
(không hiển thị 3 phiên bản ở giữa của cùng người dùng)
Dòng 1: Dòng 1:
if(!mw.config.get('wgUserId')){
//문서 역사보는 버튼 히든
var currentUrl = window.location.href;
if (!mw.config.get('wgUserId')) {
var commJs = currentUrl.includes('Common.js');
    var currentUrl = window.location.href;
var commCss = currentUrl.includes('Common.css');
    var commJs = currentUrl.includes('Common.js');
var vectorJs = currentUrl.includes('Vector.js');
    var commCss = currentUrl.includes('Common.css');
var vectorCss = currentUrl.includes('Vector.css');  
    var vectorJs = currentUrl.includes('Vector.js');
if(commJs || commCss || vectorJs || vectorCss){
    var vectorCss = currentUrl.includes('Vector.css');
window.location.href = '/index.php';
    if (commJs || commCss || vectorJs || vectorCss) {
}
        window.location.href = '/index.php';
// 도구 메뉴들 숨김(사이드바);
    }
$pTb = document.getElementById('p-tb');
    // 도구 메뉴들 숨김(사이드바);
if ($pTb) $pTb.parentElement.removeChild($pTb);
    $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);


//파일중복 메세지 제거
    // 문서의 역사롤 봅니다. (hidden 시킴)
var $duplicates = document.getElementById('mw-imagepage-section-duplicates');
    var $lastModifiedBar = document.querySelector('.last-modified-bar');
if($duplicates) $duplicates.parentElement.removeChild($duplicates);
    if ($lastModifiedBar) $lastModifiedBar.parentElement.removeChild($lastModifiedBar);
 
    //파일중복 메세지 제거
    var $duplicates = document.getElementById('mw-imagepage-section-duplicates');
    if ($duplicates) $duplicates.parentElement.removeChild($duplicates);
}else{
document.querySelector('.mw-htmlform-ooui-wrapper').style.display='block';
}
}


/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */
//Naver Analytics
var NaverCdn = document.createElement('script');
NaverCdn.src = '//wcs.naver.net/wcslog.js';
document.body.appendChild(NaverCdn);
if (!wcs_add) var wcs_add = {};
wcs_add['wa'] = 'ab0e0ecee3c040';
 
//Google Analytics
//Google Analytics
var GoogleCdn = document.createElement('script');
var GoogleCdn = document.createElement('script');
Dòng 36: Dòng 45:
var topButton = document.createElement('div');
var topButton = document.createElement('div');
topButton.id = 'top-button';
topButton.id = 'top-button';
document.body.appendChild(topButton);
document.body.appendChild(topButton);
window.addEventListener('scroll', function (e) {
window.addEventListener('scroll', function (e) {
Dòng 56: Dòng 64:
     }
     }
});
});
/* 대문 섹션 토글 */
/* 대문 섹션 토글 */
if (mw.config.get('wgPageName') == '대문' || mw.config.get('wgPageName') == '대문테스트') {
if (mw.config.get('wgPageName') == '대문' || mw.config.get('wgPageName') == '대문테스트') {
    window.location.href = 'https://churchofgod.wiki/%ED%95%98%EB%82%98%EB%8B%98%EC%9D%98_%EA%B5%90%ED%9A%8C_%EC%A7%80%EC%8B%9D%EC%82%AC%EC%A0%84';
}
if (mw.config.get('wgPageName') == '하나님의_교회_지식사전') {
     var titles = document.querySelectorAll('.cog-box-title');
     var titles = document.querySelectorAll('.cog-box-title');
     for (var i = 0; i < titles.length; i++) {
     for (var i = 0; i < titles.length; i++) {
Dòng 71: Dòng 84:


/*모든 문서 */
/*모든 문서 */
if (mw.config.get('wgPageName').toLowerCase() == 'list_of_all_documents') {
if (mw.config.get('wgPageName').toLowerCase() == '모든_문서_목록') {
     var list = document.querySelectorAll('.mw-allpages-body li');
     var list = document.querySelectorAll('.mw-allpages-body li');
     for (var i = 0; i < list.length; i++) {
     for (var i = 0; i < list.length; i++) {
Dòng 83: Dòng 96:


/* 각주 팝업창 위치 보정 */
/* 각주 팝업창 위치 보정 */
var observer = new MutationObserver(function (mutationList) {
// MutationObserver를 사용하여 DOM 변경 사항 감지
    mutationList.forEach(function (mutation) {
var observer = new MutationObserver(function (mutationList){
mutationList.forEach(function(mutation){
         mutation.addedNodes.forEach(function (node) {
         mutation.addedNodes.forEach(function (node) {
            if (node.classList && node.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(node).left);
            var left = parseInt(window.getComputedStyle(node).left);
                    node.style.left = left - bodyLeft + 'px';
            node.style.left = left - bodyLeft + 'px';
                });
        });
            }
        }      
         });
         })
    });
})
});
})
// 감시할 대상 설정
// 감시할 대상 설정
observer.observe(document.body, {
observer.observe(document.body, {
    childList: true,
childList:true,
    subtree: true,
subtree:true
});
})


/* 우클릭 방지 */
/* 우클릭 방지
if (mw.config.get('wgUserName') == null) {
if (mw.config.get('wgUserName') == null) {
window.oncontextmenu = function (e) {
window.oncontextmenu = function (e) {
Dòng 111: Dòng 125:
};
};
}
}
*/
/* 존재하지 않는 문서 페이지의 '기록' 링크 삭제 */
/* 존재하지 않는 문서 페이지의 '기록' 링크 삭제 */
if (mw.config.get('wgUserId') == null && document.querySelector('.plainlinks a')) {
if (mw.config.get('wgUserId') == null && document.querySelector('.plainlinks a')) {
Dòng 148: Dòng 164:
             if (window.Kakao && $kakao) {
             if (window.Kakao && $kakao) {
                 // 사용할 앱의 JavaScript 키를 설정해 주세요.
                 // 사용할 앱의 JavaScript 키를 설정해 주세요.
                 Kakao.init('214de4d25d41a7b837b7bbeb75631c90');
                 Kakao.init('132b053079230ffc0880fd0a8155f444');
                 $kakao.children[0].style.display = 'inline';
                 $kakao.children[0].style.display = 'inline';
                 $kakao.onclick = sendScrap; // 카카오 Link 공유 API 사용
                 $kakao.onclick = sendScrap; // 카카오 Link 공유 API 사용
Dòng 162: Dòng 178:
                 $copy.addEventListener('click', function (e) {
                 $copy.addEventListener('click', function (e) {
                     copyStringToClipboard(decodeURI(location.href));
                     copyStringToClipboard(decodeURI(location.href));
                     alert('Saved the link to the clipboard.');
                     alert('링크를 클립보드에 저장했습니다.');
                     e.preventDefault();
                     e.preventDefault();
                 });
                 });
Dòng 197: Dòng 213:
     Kakao.Link.sendScrap({
     Kakao.Link.sendScrap({
         requestUrl: location.href,
         requestUrl: location.href,
         templateId: 91817,
         templateId: 82911,
         templateArgs: {
         templateArgs: {
             TITLE: og('title', 'Church of God Knowledge Encyclopedia'),
             TITLE: og('title', '하나님의 교회 지식사전'),
             DESC: og('description'),
             DESC: og('description'),
             THUMB: thumb(),
             THUMB: thumb(),
Dòng 287: Dòng 303:


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


// 이미지문서에서 commons 라이센스 관련 링크를 숨긴다.
window.addEventListener('load', function () {
var $sharedUploadNotice = document.querySelector('.sharedUploadNotice p');
    if (mw.user.getId() == 0) {
if($sharedUploadNotice){
        var $tb = document.querySelector('.mw-portlet-tb');
$sharedUploadNotice.parentElement.removeChild($sharedUploadNotice);
        if ($tb) $tb.parentElement.removeChild($tb);
}
    }
// origin file 영역 숨김.
});
var $fullMedia = document.querySelector('.fullMedia p');
if($fullMedia){
$fullMedia.parentElement.removeChild($fullMedia);
}

Bản mới nhất lúc 08:17, ngày 13 tháng 3 năm 2025

//문서 역사보는 버튼 히든
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);
}else{
	document.querySelector('.mw-htmlform-ooui-wrapper').style.display='block';
}

//Naver Analytics
var NaverCdn = document.createElement('script');
NaverCdn.src = '//wcs.naver.net/wcslog.js';
document.body.appendChild(NaverCdn);
if (!wcs_add) var wcs_add = {};
wcs_add['wa'] = 'ab0e0ecee3c040';

//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') == '대문테스트') {
    window.location.href = 'https://churchofgod.wiki/%ED%95%98%EB%82%98%EB%8B%98%EC%9D%98_%EA%B5%90%ED%9A%8C_%EC%A7%80%EC%8B%9D%EC%82%AC%EC%A0%84';
}

if (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() == '모든_문서_목록') {
    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 = '';
}

/* 각주 팝업창 위치 보정 */
// MutationObserver를 사용하여 DOM 변경 사항 감지
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('132b053079230ffc0880fd0a8155f444');
                $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('링크를 클립보드에 저장했습니다.');
                    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: 82911,
        templateArgs: {
            TITLE: og('title', '하나님의 교회 지식사전'),
            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';
}

window.addEventListener('load', function () {
    if (mw.user.getId() == 0) {
        var $tb = document.querySelector('.mw-portlet-tb');
        if ($tb) $tb.parentElement.removeChild($tb);
    }
});