사용자:하늘/addArticleMenuItem.js

< 사용자:하늘
하늘 (토론 | 기여)님의 2023년 12월 31일 (일) 00:18 판

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

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
/**
 * 문서 메뉴에 버튼을 추가하는 기능을 추가합니다.
 * @date 2023. 12. 31. - 오전 12:12:53
 *
 * @param {HTMLElement} htmlObject
 */
function addArticleMenuItem(htmlObject) {

    this.menuitem = htmlObject;

    this.AddItem = function (buttontitle, buttonname, callbackOrUrl) {
        let newItem = this.menuitem.cloneNode(true);
        this.menuitem.after(newItem);

        if (newItem.nodeName != "A") {
            newItem.innerHTML = "";
            let linkItem = document.createElement('a');
            newItem.append(linkItem);
            newItem = linkItem;
        }

        newItem.innerHTML = buttonname;
        newItem.accessKey = '';
        newItem.style.cursor = 'pointer';
        newItem.title = buttontitle;

        try {
            newItem.href = new URL(callbackOrUrl);
        } catch (e) {
            newItem.href = 'javascript:;'; // 'Invalid URL'
            newItem.onclick = callbackOrUrl;
            return;
        }
    };

    this.SetMenuItem = function (htmlObject) { this.menuitem = htmlObject; };
}

let skinContentTool = {
    ['liberty']: ".content-tools .dropdown-item:last-child",
    ['timeless']: ".mw-portlet-body #ca-move.mw-list-item"
}

window.extendedDropdownItemArray =
    window.extendedDropdownItemArray || new addArticleMenuItem(skinContentTool[mw.config.get('skin')]);