사용자:하늘/addArticleMenuItem.js: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
37번째 줄: 37번째 줄:
}
}


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

2023년 12월 31일 (일) 00:21 판

/**
 * 문서 메뉴에 버튼을 추가하는 기능을 추가합니다.
 * @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; };
}

var 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')]);