사용자:하늘/common.js

< 사용자:하늘
하늘 (토론 | 기여)님의 2024년 3월 16일 (토) 14:27 판

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
// EditTools 커스텀
mw.loader.load('/index.php?title=사용자:하늘/EditTools.js&action=raw&ctype=text/javascript'); mw.loader.load('/index.php?title=사용자:하늘/EditTools-custom.js&action=raw&ctype=text/javascript');
//mw.loader.load('//commons.wikimedia.org/wiki/MediaWiki:Edittools.js?action=raw&ctype=text/javascript');

// 사용자 상태
mw.loader.load('/index.php?title=사용자:하늘/userinfo.js&action=raw&ctype=text/javascript');

// Imagemap 에디터
if (mw.config.get('wgNamespaceNumber') == 6 && mw.config.get('wgAction') == 'view') {
    mw.loader.load('//imagemapedit.toolforge.org/ime.js');
}

//상용구 버튼 추가
esEditSummaries = [
    /*
    ['버튼 이름', '입력될 편집 요약', '툴팁으로 뜨는 설명(생략 가능)', '사소한 편집 여부(0/1 혹은 true/false, 생략 가능)', '상용구 넣기 전에 요약 지우기(0/1 혹은 true/false, 생략 가능)']
    위와 같은 형식으로 새로운 버튼을 추가할 수 있습니다.
    마지막 줄을 제외한 줄 끝에 쉼표가 들어가 있는지 확인해 주세요.
    */
    ['갱신 ', '문서 정보 갱신', '오래된 문서 정보를 갱신', 0, 1],
    ['넘겨주기 ', '넘겨주기', '넘겨주기 생성', 1, 1],
    ['동음이의 ', '동음이의어 문서', '동음이의 문서를 작성', 0, 1],
    ['분류 ', '분류 추가', '분류 추가', 1, 1],
    ['삭제 신청 ', '문서 삭제 신청', '삭제 신청 틀', 1, 1],
    ['내부 링크', '내부 링크 추가', '내부 링크 추가', 1, 1],
    ['오타 ', '오타 수정', '문서에서 오타를 정정', 1, 1],
    ['답변 ', '의견에 답변', '질문이나 의견에 답변', 1, 0],
    ['분기 ', '문단 새 문서로 분기 - ', '다른 문서와의 병합을 제안하거나 실행', 0, 1],
    ['디자인 ', '디자인 수정', '디자인 개선', 0, 1],
    ['테스트', '테스트', '테스트', 0, 1],
    ['가독성', '가독성 개선', '가독성 개선', 0, 1]
];

mw.loader.getScript('https://cdn.jsdelivr.net/gh/cerulean10110/Mediawiki-EditSummary@main/EditSummary.js');
//mw.loader.load('/index.php?title=사용자:하늘/editSummary.js&action=raw&ctype=text/javascript');

//대용량 이미지 파일 나중에 오픈 스크립트
mw.loader.load('/index.php?title=사용자:하늘/mobile.js&action=raw&ctype=text/javascript');

//커스텀 navbar 리버티
mw.loader.load('/index.php?title=사용자:하늘/custom-navbar.js&action=raw&ctype=text/javascript');

//한자 사전 툴
mw.loader.load('/index.php?title=사용자:하늘/hanja-dict-tools.js&action=raw&ctype=text/javascript');

// 편집 도구 추가
mw.loader.getScript('https://cdn.jsdelivr.net/gh/cerulean10110/Mediawiki-AddArticleButtons@main/AddArticleButtons.js');

jQuery( document ).ready( function() {
	mw.loader.load('/index.php?title=사용자:하늘/addArticleMenuItem-func.js&action=raw&ctype=text/javascript');
});

//분류 문서에 편집 링크 추가
// document.querySelectorAll('.mw-category a:not(.image, .galleryfilename)').forEach(function (link) {
//     var catLinksEdit = document.createElement('a');
//     catLinksEdit.title = link.title + ' 편집하기';
//     catLinksEdit.href = link.href + '?action=edit';
//     catLinksEdit.style.paddingLeft = '0.2em';
//     catLinksEdit.innerHTML = '편집';
//     // 글자 살짝 작게 표시
//     catLinksEdit.style.fontSize = '0.9em';
//     // 스타일링을 위해 별도의 클래스 추가
//     catLinksEdit.classList.add('fw-edit-link');
//     link.after(catLinksEdit);
// });

//최근 읽은 기록
mw.loader.load('//librewiki.net/index.php?title=사용자:하늘/BreadCrumb.js&action=raw&ctype=text/javascript');

//바로가기 키 추가, 페이지 정보
var pageinfo = document.querySelectorAll('a[href*="action=info"]');
if (pageinfo.length) {
    pageinfo[0].accessKey = 'i';
    pageinfo[0].title += ' [' + pageinfo[0].accessKey + ']';
}

//리버티-타임리스 스킨 전환
mw.loader.load('/index.php?title=사용자:하늘/switchskin.js&action=raw&ctype=text/javascript');

// 코드 상자 복사버튼 추가
mw.loader.load('/index.php?title=사용자:하늘/addCopyButtonToCode.js&action=raw&ctype=text/javascript');

//코드 편집기 테마 적용.
mw.hook('codeEditor.configure').add(function () {
    const editarea = document.querySelector('.ace_editor');
    const aceInstance = ace.edit(editarea);
    aceInstance.setOptions({
        wrap: false,
        theme: './theme/tomorrow_night',
        enableLiveAutocompletion: true
    });
});
/*** 폰트 설정 ***/
/*var UserAgent = navigator.userAgent;
if (UserAgent.match(/iPhone|iPod|Android|Opera Mini|Opera Mobi|IEMobile/) !== null || UserAgent.match(/LG|SAMSUNG|Samsung/) !== null) {
} else {
    console.log('webfont');*/
/*** 폰트 설정 ***/
/*if (window.getComputedStyle(document.querySelector('body')).fontFamily == "Noto Sans KR") {
    if (document.querySelectorAll('[lang="ja"], [lang="zh"], [lang="zh-hk"], [lang="zh-tw"]').length) {
        var link = document.createElement("link");
        link.href = "https://fonts.googleapis.com", link.rel = "preconnect", document.head.append(link);
        link = document.createElement("link");
        link.href = "https://fonts.gstatic.com", link.rel = "preconnect", link.setAttribute("crossorigin", ""), document.head.append(link);
        
        if (document.querySelectorAll('[lang="ja"]').length) {
            link = document.createElement("link")
            link.href = "https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@100;300;400;500;700;900&display=swap";
            link.rel = "stylesheet";
            document.head.append(link)
        }
        if (document.querySelectorAll('[lang="zh"], [lang="zh-cn"]').length) {
            link = document.createElement("link")
            link.href = "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@100;300;400;500;700;900&display=swap";
            link.rel = "stylesheet";
            document.head.append(link)
        }
        if (document.querySelectorAll('[lang="zh-hk"]').length) {
            link = document.createElement("link")
            link.href = "https://fonts.googleapis.com/css2?family=Noto+Serif+HK:wght@100;300;400;500;700;900&display=swap";
            link.rel = "stylesheet";
            document.head.append(link)
        }
        if (document.querySelectorAll('[lang="zh-tw"]').length) {
            link = document.createElement("link")
            link.href = "https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@100;300;400;500;700;900&display=swap";
            link.rel = "stylesheet";
            document.head.append(link)
        }
    }
}}*/

mw.hook('wikiEditor.toolbarReady').add(function ($textarea) {
    $textarea.wikiEditor('addToToolbar', {
        section: 'main',
        group: 'format',
        tools: {
            "strikethrough": {
                label: '취소선',
                type: 'button',
                oouiIcon: 'strikethrough',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<del>", post: "</del>"
                    }
                }
            }
        }
    });
    $textarea.wikiEditor('addToToolbar', {
        section: 'advanced',
        group: 'format',
        tools: [
            {
                label: '수평선',
                type: 'button',
                oouiIcon: 'subtract',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: '----',
                        ownline: true
                    }
                }
            },
            {
                label: '인라인 코드 (nowiki)',
                type: 'button',
                oouiIcon: 'code',
                action: {
                    type: 'encapsulate',
                    options: { pre: "<code><nowiki>", post: "</nowiki></code>" }
                }
            },
            {
                label: '인라인 코드',
                type: 'button',
                oouiIcon: 'code',
                action: { type: 'encapsulate', options: { pre: "<code>", post: "</code>" } }
            }
        ]
    });
});

function getRaw(title) {
    var raw;
    $.ajax({
        async: false,
        url: location.origin + mw.util.getUrl(title || mw.title, { action: 'raw' }),
        success: function (data) { raw = data; }
    });
    return raw;
}

var mw_parser_output = document.querySelector('.mw-parser-output');
if (mw_parser_output && mw.config.get('wgPageContentModel') == 'wikitext')
    console.log(mw_parser_output.innerHTML.match('<!\-\-[^\]*\-\->')[0]);

mw.loader.getScript('/index.php?title=사용자:하늘/page.js&action=raw&ctype=text/javascript');

/**
 * 리브레 맵스
**/
/* 리브레 맵스에서 편집 버튼 새 창으로 */
if (location.search.includes('curid')) {
    document.querySelector('#ca-edit').onclick = function (e) {
        e.preventDefault();
        window.open(this.href);
    };
}

/* 오픈스트리트맵으로 확인 (잘못된 경우 편집) */
var libremaps_marker = document.querySelector('.libremaps-marker');
if (libremaps_marker) {
	var markerinfo = libremaps_marker.dataset;
	markerinfo.zoom = Number(markerinfo.zoom);
	
	var libremaps_marker_link = document.createElement('a'); // Continent, nation ..
	/*if (markerinfo.zoom < 8) {
		
	} else if (markerinfo.zoom) {
		
	}*/
	libremaps_marker_link.href = 'https://www.openstreetmap.org/#map=' + ((markerinfo.zoom <= 8 ? 2 : 5) + Number(markerinfo.zoom)) + 
	'/' + markerinfo.lat + '/' + markerinfo.lng;
	libremaps_marker_link.innerText = '오픈스트리트맵 - ' + markerinfo.name;
	libremaps_marker.append(libremaps_marker_link);
}

// 찾아바꾸기 프리셋
mw.hook('wikiEditor.toolbarReady').add(function ($textarea) {
document.querySelector('#wikiEditor-section-advanced .group.group-search a').addEventListener('click', function (e) {
    if (document.querySelector('select[for*=wikieditor-toolbar-replace-preset]')) return;
    var dialog = document.getElementById('wikieditor-toolbar-replace-dialog');
    if (dialog) {
        var toinput = '\
        <select for="wikieditor-toolbar-replace-preset">\
        <option>정규식 프리셋</option>\
        <option data-format="<ref>\\[([^ ]*) ([^\\]]*)\\], ([^,]*), ([0-9]*)\\.([0-9]*)\\.([0-9]*)[^<]*</ref>" data-replace="<ref>{{뉴스 인용|url=$1|제목=$2|뉴스=$3|날짜=$4-$5-$6}}</ref>">[url title], news, date -> {{뉴스 인용}}</option>\
        </select>';

        dialog.innerHTML = toinput + dialog.innerHTML;

        var searchtool_search = document.getElementById('wikieditor-toolbar-replace-search');
        var searchtool_replace = document.getElementById('wikieditor-toolbar-replace-replace');

        document.querySelector('select[for*=wikieditor-toolbar-replace-preset]').addEventListener('change', function (e) {
            data = this.selectedOptions[0].dataset;
            searchtool_search.value = data.format || '';
            searchtool_replace.value = data.replace || '';
        });
    }
});
});

/**
 * HotCat 수정 버전
 */
window.hotcat_translations_from_commons = true;

$(function () {
	if ( mw.config.get("wgNamespaceNumber") !== 118 ) {
		mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );
	}
}());