본문으로 이동

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

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

미디어위키:Gadget-RollbackComment.js

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

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

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
/*

* 롤배커들을 위한 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;
}