편집 요약 없음 |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
/** | /** | ||
* 문서 메뉴에 버튼을 추가하는 기능을 추가합니다. | * 문서 메뉴에 버튼을 추가하는 기능을 추가합니다. | ||
* | * | ||
* @ | * @class addArticleButtonItem | ||
* @typedef {addArticleButtonItem} | |||
*/ | */ | ||
class addArticleButtonItem { | |||
this.menuitem = | /** | ||
* @constructor | |||
* @param {string} selector | |||
*/ | |||
constructor(selector) { | |||
this.menuitem = document.querySelector(selector); | |||
} | |||
/** | |||
* Add Button | |||
* | |||
* @param {string} buttontitle | |||
* @param {string} buttonname | |||
* @param {string|function} callbackOrUrl | |||
*/ | |||
AddItem (buttontitle, buttonname, callbackOrUrl) { | |||
let newItem = this.menuitem.cloneNode(true); | let newItem = this.menuitem.cloneNode(true); | ||
this.menuitem.after(newItem); | this.menuitem.after(newItem); | ||
25번째 줄: | 38번째 줄: | ||
newItem.title = buttontitle; | newItem.title = buttontitle; | ||
try { | try { | ||
newItem.href = new URL(callbackOrUrl); | newItem.href = new URL(callbackOrUrl); | ||
33번째 줄: | 47번째 줄: | ||
} | } | ||
}; | }; | ||
} | } | ||
40번째 줄: | 52번째 줄: | ||
['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" | ||
} | }; | ||
window.extendedDropdownItemArray = new | window.extendedDropdownItemArray = new addArticleButtonItem(skinContentTool[mw.config.get('skin')]); |
2023년 12월 31일 (일) 00:34 판
/**
* 문서 메뉴에 버튼을 추가하는 기능을 추가합니다.
*
* @class addArticleButtonItem
* @typedef {addArticleButtonItem}
*/
class addArticleButtonItem {
/**
* @constructor
* @param {string} selector
*/
constructor(selector) {
this.menuitem = document.querySelector(selector);
}
/**
* Add Button
*
* @param {string} buttontitle
* @param {string} buttonname
* @param {string|function} callbackOrUrl
*/
AddItem (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;
}
};
}
var skinContentTool = {
['liberty']: ".content-tools .dropdown-item:last-child",
['timeless']: ".mw-portlet-body #ca-move.mw-list-item"
};
window.extendedDropdownItemArray = new addArticleButtonItem(skinContentTool[mw.config.get('skin')]);