미디어위키:Gadget-RollbackComment.js: 두 판 사이의 차이
보이기
큰숲백과>Utolee90 잔글 판 1개를 가져왔습니다: 리브레 위키의 소도구를 가져옴 |
잔글 판 4개를 가져왔습니다: 미디어 파일 가져오기 |
||
| (사용자 2명의 중간 판 3개는 보이지 않습니다) | |||
| 7번째 줄: | 7번째 줄: | ||
function addExtRbLink() { | function addExtRbLink() { | ||
var wgCanonicalSpecialPageName = mw.config.get().wgCanonicalSpecialPageName; | |||
var wgAction = mw.config.get().wgAction; | |||
var rbnode = [], diffnode, index = {}, gebcn = document.getElementsByClassName | |||
? function (a, b, c) { return a.getElementsByClassName(c) } | |||
: getElementsByClassName; | |||
if (typeof rollbackLinksDisable == 'object' && rollbackLinksDisable instanceof Array) | |||
for (var i = 0; i < rollbackLinksDisable.length; i++) | |||
index[rollbackLinksDisable[i]] = true; | |||
if (!('user' in index) && wgCanonicalSpecialPageName == "Contributions" || | |||
!('recent' in index) && wgCanonicalSpecialPageName == "Recentchanges" || | |||
!('watchlist' in index) && wgCanonicalSpecialPageName == "Watchlist") | |||
rbnode = gebcn(document.getElementById("bodyContent"), "span", "mw-rollback-link"); | |||
else if (!('history' in index) && wgAction == "history") | |||
rbnode = gebcn(document.getElementById("pagehistory"), "span", "mw-rollback-link"); | |||
else if (!('diff' in index) && (diffnode = document.getElementById("mw-diff-ntitle2"))) | |||
rbnode = gebcn(diffnode, "span", "mw-rollback-link"); | |||
for (var i = 0, len = rbnode.length; i < len; i++) | |||
addExtendedRollbackLink(rbnode[i]); | |||
}; | }; | ||
function confirmRollback() { | function confirmRollback() { | ||
var url = this.href; | |||
var user = url.match(/[?&]from=([^&]*)/); | |||
if (!user) return; | |||
user = decodeURIComponent(user[1].replace(/\+/g, " ")); | |||
var summary = prompt("추가할 편집 요약을 입력하세요\n\n$user 는 편집이 되돌려질 사용자 이름으로 치환됩니다.", | |||
rollbackSummaryDefault); | |||
if (summary == undefined) | |||
return false; | |||
else if (summary == "") | |||
return true; | |||
this.href += "&summary=" + '[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 전부 되돌림: '.replace(/\$2/g, user) + encodeURIComponent(summary.replace(/\$user/g, user)); | |||
return true; | |||
}; | }; | ||
function rollbackAsBot() { | function rollbackAsBot() { | ||
this.href += "&bot=1"; | |||
return true; | |||
} | } | ||
function addExtendedRollbackLink(rbnode) { | function addExtendedRollbackLink(rbnode) { | ||
var rblink = rbnode.getElementsByTagName("a")[0]; | |||
var alink = rblink.cloneNode(true); | |||
alink.className = ""; | |||
alink.firstChild.nodeValue = "(+편집 요약)"; | |||
alink.onclick = confirmRollback; | |||
rbnode.insertBefore(alink, rblink.nextSibling); | |||
rbnode.insertBefore(document.createTextNode(" | "), alink); | |||
if (userIsInGroup('sysop')) { | |||
var blink = rblink.cloneNode(true); | |||
blink.className = ""; | |||
blink.firstChild.nodeValue = "(+봇)"; | |||
blink.onclick = rollbackAsBot; | |||
rbnode.insertBefore(blink, alink.nextSibling); | |||
rbnode.insertBefore(document.createTextNode(" | "), blink); | |||
} | |||
}; | }; | ||
if (typeof rollbackLinksDisable == 'undefined') | if (typeof rollbackLinksDisable == 'undefined') | ||
rollbackLinksDisable = []; | |||
if (typeof rollbackSummaryDefault == 'undefined') | if (typeof rollbackSummaryDefault == 'undefined') | ||
rollbackSummaryDefault = ""; | |||
mw.hook( 'wikipage.content' ).add(addExtRbLink); | mw.hook('wikipage.content').add(addExtRbLink); | ||
function userIsInGroup (group) | function userIsInGroup(group) { | ||
var wgUserGroups = mw.config.get().wgUserGroups; | |||
if (wgUserGroups) { | |||
if (!group || group.length == 0) group = '*'; | |||
return wgUserGroups.join(' ').indexOf(group) >= 0; | |||
} | |||
return false; | |||
} | } | ||
2023년 7월 22일 (토) 17:24 기준 최신판
/*
* 롤배커들을 위한 Gadget Script v0.1
** by Devunt (korean wikipedia user)
*/
function addExtRbLink() {
var wgCanonicalSpecialPageName = mw.config.get().wgCanonicalSpecialPageName;
var wgAction = mw.config.get().wgAction;
var rbnode = [], diffnode, index = {}, gebcn = document.getElementsByClassName
? function (a, b, c) { return a.getElementsByClassName(c) }
: getElementsByClassName;
if (typeof rollbackLinksDisable == 'object' && rollbackLinksDisable instanceof Array)
for (var i = 0; i < rollbackLinksDisable.length; i++)
index[rollbackLinksDisable[i]] = true;
if (!('user' in index) && wgCanonicalSpecialPageName == "Contributions" ||
!('recent' in index) && wgCanonicalSpecialPageName == "Recentchanges" ||
!('watchlist' in index) && wgCanonicalSpecialPageName == "Watchlist")
rbnode = gebcn(document.getElementById("bodyContent"), "span", "mw-rollback-link");
else if (!('history' in index) && wgAction == "history")
rbnode = gebcn(document.getElementById("pagehistory"), "span", "mw-rollback-link");
else if (!('diff' in index) && (diffnode = document.getElementById("mw-diff-ntitle2")))
rbnode = gebcn(diffnode, "span", "mw-rollback-link");
for (var i = 0, len = rbnode.length; i < len; i++)
addExtendedRollbackLink(rbnode[i]);
};
function confirmRollback() {
var url = this.href;
var user = url.match(/[?&]from=([^&]*)/);
if (!user) return;
user = decodeURIComponent(user[1].replace(/\+/g, " "));
var summary = prompt("추가할 편집 요약을 입력하세요\n\n$user 는 편집이 되돌려질 사용자 이름으로 치환됩니다.",
rollbackSummaryDefault);
if (summary == undefined)
return false;
else if (summary == "")
return true;
this.href += "&summary=" + '[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 전부 되돌림: '.replace(/\$2/g, user) + encodeURIComponent(summary.replace(/\$user/g, user));
return true;
};
function rollbackAsBot() {
this.href += "&bot=1";
return true;
}
function addExtendedRollbackLink(rbnode) {
var rblink = rbnode.getElementsByTagName("a")[0];
var alink = rblink.cloneNode(true);
alink.className = "";
alink.firstChild.nodeValue = "(+편집 요약)";
alink.onclick = confirmRollback;
rbnode.insertBefore(alink, rblink.nextSibling);
rbnode.insertBefore(document.createTextNode(" | "), alink);
if (userIsInGroup('sysop')) {
var blink = rblink.cloneNode(true);
blink.className = "";
blink.firstChild.nodeValue = "(+봇)";
blink.onclick = rollbackAsBot;
rbnode.insertBefore(blink, alink.nextSibling);
rbnode.insertBefore(document.createTextNode(" | "), blink);
}
};
if (typeof rollbackLinksDisable == 'undefined')
rollbackLinksDisable = [];
if (typeof rollbackSummaryDefault == 'undefined')
rollbackSummaryDefault = "";
mw.hook('wikipage.content').add(addExtRbLink);
function userIsInGroup(group) {
var wgUserGroups = mw.config.get().wgUserGroups;
if (wgUserGroups) {
if (!group || group.length == 0) group = '*';
return wgUserGroups.join(' ').indexOf(group) >= 0;
}
return false;
}