본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

미디어위키:Gadget-RollbackComment.js: 두 판 사이의 차이

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
큰숲백과>Utolee90
잔글 판 1개를 가져왔습니다: 리브레 위키의 소도구를 가져옴
 
잔글 판 4개를 가져왔습니다: 미디어 파일 가져오기
 
(사용자 2명의 중간 판 3개는 보이지 않습니다)
7번째 줄: 7번째 줄:


function addExtRbLink() {
function addExtRbLink() {
    var rbnode = [], diffnode, index = {}, gebcn = document.getElementsByClassName
var wgCanonicalSpecialPageName = mw.config.get().wgCanonicalSpecialPageName;
        ? function(a, b, c) { return a.getElementsByClassName(c) }
var wgAction = mw.config.get().wgAction;
        : getElementsByClassName;
 
    if (typeof rollbackLinksDisable == 'object' && rollbackLinksDisable instanceof Array)
var rbnode = [], diffnode, index = {}, gebcn = document.getElementsByClassName
        for (var i = 0; i < rollbackLinksDisable.length; i++)
? function (a, b, c) { return a.getElementsByClassName(c) }
            index[rollbackLinksDisable[i]] = true;
: getElementsByClassName;
    if (!('user' in index) && wgCanonicalSpecialPageName == "Contributions" ||
if (typeof rollbackLinksDisable == 'object' && rollbackLinksDisable instanceof Array)
        !('recent' in index) && wgCanonicalSpecialPageName == "Recentchanges" ||
for (var i = 0; i < rollbackLinksDisable.length; i++)
        !('watchlist' in index) && wgCanonicalSpecialPageName == "Watchlist")
index[rollbackLinksDisable[i]] = true;
        rbnode = gebcn(document.getElementById("bodyContent"), "span", "mw-rollback-link");
 
    else if (!('history' in index) && wgAction == "history")
if (!('user' in index) && wgCanonicalSpecialPageName == "Contributions" ||
        rbnode = gebcn(document.getElementById("pagehistory"), "span", "mw-rollback-link");
!('recent' in index) && wgCanonicalSpecialPageName == "Recentchanges" ||
    else if (!('diff' in index) && (diffnode = document.getElementById("mw-diff-ntitle2")))
!('watchlist' in index) && wgCanonicalSpecialPageName == "Watchlist")
        rbnode = gebcn(diffnode, "span", "mw-rollback-link");
rbnode = gebcn(document.getElementById("bodyContent"), "span", "mw-rollback-link");
    for (var i = 0, len = rbnode.length; i < len; i++)
 
        addExtendedRollbackLink(rbnode[i]);
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 url = this.href;
    var user = url.match(/[?&]from=([^&]*)/);
var user = url.match(/[?&]from=([^&]*)/);
    if (!user) return;
if (!user) return;
    user = decodeURIComponent(user[1].replace(/\+/g, " "));
user = decodeURIComponent(user[1].replace(/\+/g, " "));
    var summary = prompt("추가할 편집 요약을 입력하세요\n\n$user 는 편집이 되돌려질 사용자 이름으로 치환됩니다.",
var summary = prompt("추가할 편집 요약을 입력하세요\n\n$user 는 편집이 되돌려질 사용자 이름으로 치환됩니다.",
                        rollbackSummaryDefault);
rollbackSummaryDefault);
    if (summary == undefined)
if (summary == undefined)
        return false;
return false;
    else if (summary == "")
else if (summary == "")
        return true;
return true;
    this.href += "&summary=" + '[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 전부 되돌림: '.replace(/\$2/g, user) + encodeURIComponent(summary.replace(/\$user/g, user));
this.href += "&summary=" + '[[Special:Contributions/$2|$2]]([[User talk:$2|토론]])의 편집을 전부 되돌림: '.replace(/\$2/g, user) + encodeURIComponent(summary.replace(/\$user/g, user));
    return true;
return true;
};
};


function rollbackAsBot() {
function rollbackAsBot() {
    this.href += "&bot=1";
this.href += "&bot=1";
    return true;
return true;
}
}
 
function addExtendedRollbackLink(rbnode) {
function addExtendedRollbackLink(rbnode) {
    var rblink = rbnode.getElementsByTagName("a")[0];
var rblink = rbnode.getElementsByTagName("a")[0];
    var alink = rblink.cloneNode(true);
var alink = rblink.cloneNode(true);
    alink.className = "";
alink.className = "";
    alink.firstChild.nodeValue = "(+편집 요약)";
alink.firstChild.nodeValue = "(+편집 요약)";
    alink.onclick = confirmRollback;
alink.onclick = confirmRollback;
    rbnode.insertBefore(alink, rblink.nextSibling);
rbnode.insertBefore(alink, rblink.nextSibling);
    rbnode.insertBefore(document.createTextNode(" | "), alink);
rbnode.insertBefore(document.createTextNode(" | "), alink);
    if (userIsInGroup('sysop'))
if (userIsInGroup('sysop')) {
    {
var blink = rblink.cloneNode(true);
        var blink = rblink.cloneNode(true);
blink.className = "";
        blink.className = "";
blink.firstChild.nodeValue = "(+봇)";
        blink.firstChild.nodeValue = "(+봇)";
blink.onclick = rollbackAsBot;
        blink.onclick = rollbackAsBot;
rbnode.insertBefore(blink, alink.nextSibling);
        rbnode.insertBefore(blink, alink.nextSibling);
rbnode.insertBefore(document.createTextNode(" | "), blink);
        rbnode.insertBefore(document.createTextNode(" | "), blink);
}
    }
};
};
if (typeof rollbackLinksDisable == 'undefined')
if (typeof rollbackLinksDisable == 'undefined')
    rollbackLinksDisable = [];
rollbackLinksDisable = [];
if (typeof rollbackSummaryDefault == 'undefined')
if (typeof rollbackSummaryDefault == 'undefined')
    rollbackSummaryDefault = "";
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 (wgUserGroups) {
    if (!group || group.length == 0) group = '*';
if (!group || group.length == 0) group = '*';
    return wgUserGroups.join (' ').indexOf (group) >= 0;
return wgUserGroups.join(' ').indexOf(group) >= 0;
  }
}
  return false;
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;
}