리버티게임:관리자 요청/2019년 2월

리버티게임, 모두가 만들어가는 자유로운 게임
< 리버티게임:관리자 요청
백괴게임>Bd3076님의 2019년 2월 21일 (목) 14:48 판 (→‎Common.js 수정 요청: 새 문단)
No Elephants Allowed.jpg
관리자 요청
 2019년 2월 
새 글 쓰기
새로 고침

비밀5 수정

민수 문서가 너무 커서 수정을 못하고 있습니다. 가장 처음으로 나오는(분리 위에 있는) |22= 부분을 제거해 주세요. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 1일 (금) 10:52 (KST)

Yes check.svg완료 문서 바이트 수가 20만 바이트인 거를 보고 놀랐습니다. -- 이의섭(사토|기여|노 백괴게임, 노 잼) 2019년 2월 1일 (금) 16:07 (KST)

백괴게임:발전소/그냥낚시 관련

총의로 일단 유지, 규제 생성으로 결론났습니다만, 기간이 지나도 한참 지났는데 처리가 안되고 있습니다. 처리 부탁드립니다. --Regurus (/) 2019년 2월 3일 (일) 07:46 (KST)

Yes check.svg완료 by manymaster (토론|기여) 2019년 2월 11일 (월) 01:45 (KST)

입력 상자 플러그인 커먼자스화

혹시 가능한지 여쭙고 싶습니다. 구조상 불가능하다면 어쩔 수 없지만요. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 4일 (월) 11:35 (KST)

전 자바스크립트에 대해 아는 것이 거의 없지만, 아마 가능할 것으로 보입니다. 자동저장은 반달로 악용될 수 있으나 입력 상자는 반달 위협이 없고 틀:키패드보다도 실용적이니 문제는 없어 보입니다만, 다른 관리자 또는 사용자들의 의견도 들어 보는 게 좋을 것 같습니다. -- 이의섭(사토|기여|노 백괴게임, 노 잼) 2019년 2월 4일 (월) 12:09 (KST)
테스트하니 가능합니다. 각 사용자 커먼자스를 지우는 등의 절차가 있어 완료하는데 시간이 좀 걸릴 것 같습니다. by manymaster (토론|기여) 2019년 2월 5일 (화) 08:56 (KST)
감사합니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 5일 (화) 11:26 (KST)
Yes check.svg완료 by manymaster (토론|기여) 2019년 2월 5일 (화) 11:27 (KST)

Common.js

제 사용자 커먼자스미디어위키:Common.js에 넣어 주세요. --사용자:Gustmd7410/서명 2019년 2월 5일 (화) 11:56 (KST)

Yes check.svg완료 by manymaster (토론|기여) 2019년 2월 5일 (화) 12:05 (KST)

틀:백괴게임 이름 바꾸기

틀의 상태가 맛이 갔습니다. 낚시 게임들에게 특히 피해가 크게 갈 것 같은데 수정해야 하지 않을까요?--My ! () 2019년 2월 8일 (금) 00:48 (KST)

Yes check.svg완료 대충 복구 완료. by manymaster (토론|기여) 2019년 2월 8일 (금) 04:55 (KST)

Common.js

JSON 데이터를 편리하게 수정할 수 있는 플러그인을 만들었습니다...만, 보안상 문제로 가능할진 모르겠네요. 가능하다면 혹시 제 commonjs 문서를 커먼자스에 추가해 주실 수 있나요? 맨 아래에 추가해 주시면 됩니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 13일 (수) 16:11 (KST)

잠시만요. 업데이트 하나만 할게요. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 13일 (수) 19:56 (KST)
업데이트 완료했습니다. 먼저 BANIP님이 만드신 MediaWikiAPI() 객체를 아래처럼 바꿔주시고,
/*
/** mediawiki api를 통해 간단하게 문서들을 수집, 변경하는 함수.
 * 플러그인 코어에서 사용하기 위해 만들었습니다.
 * 작성자: [[사용자:BANIP|BANIP]]
 * 사용방법 
 *: var api = MediaWikiAPI(); .changeDocument()
 *: api.changeDocument(변경할 문서의 타이틀, 편집 요약, 변경할 문서의 내용) => 문서의 내용을 변경합니다.
 *: api.addDocument(변경할 문서의 타이틀, 편집 요약, 추가할 문서의 내용) => 문서에 새로운 내용을 추가합니다.
 *: api.getDocument(가져올 문서의 타이틀) => 문서의 모든 텍스트를 읽어옵니다.
 *: api.readDocument(가져올 문서의 타이틀) => 문서의 모든 텍스트를 jquery 객체로 읽어옵니다.
 * 영 좋지 않은 목적으로 사용 하면 안드로메다 경찰관이 잡아간다!
 */

function MediaWikiAPI() {
    var token;
    var getToken = function() {
        if (token !== undefined) return token;
        $.ajax({
            url: "/w/api.php?action=query&meta=tokens",
            success: function(v, i) {
                var datas = JSON.parse($(v).find("pre").text());
                token = datas["query"]["tokens"]["csrftoken"];
            },
            async: false
        });
        return token;
    };

    function changeDocument(title, summary, content, isUnReload) {
    	mw.loader.using( ['mediawiki.util','mediawiki.Title'] ).then( function () {
		    $.ajax({
	            url: mw.util.wikiScript("api"),
	            data: {
	                format: 'json',
	                action: 'edit',
	                title: title,
	                summary: summary,
	                text: content,
	                token: getToken(),
	            },
	            dataType: 'json',
	            type: 'POST',
	            success: function(data) {
	                if (data && data.edit && data.edit.result == 'Success') {
	                    if (!isUnReload) window.location.reload(); // reload page if edit was successful
	                } else if (data && data.error) {
	                    alert('Error: API returned error code "' + data.error.code + '": ' + data.error.info);
	                } else {
	                    alert('Error: Unknown result from API.');
	                }
	            },
	            error: function(xhr) {
	                alert('Error: Request failed.');
	            }
	        });
		} );
    }

    function addDocument(title, summary, content, isUnReload) {
        originContent = getDocument(title);
        changeDocument(title, summary, originContent + content, isUnReload);
    }

    function getDocument(title) {
        function entityDecode(doc) {
            return $('<p></p>').html(doc).text();
        }

        var originContent;
        $.ajax({
            url: "/w/index.php?title=" + title + "&action=edit",
            success: function ajaxSucess(data) {
                originContent = $(data).find("textarea").html();
            },
            async: false
        });
        return entityDecode(originContent);
    }

    function readDocument(title) {
        var doc;
        $.ajax({
            url: "/wiki/" + title,
            success: function ajaxSucess(data) {
                doc = $(data).find("#mw-content-text");
            },
            async: false
        });
        return doc;
    }


    return {
        getToken: getToken,
        changeDocument: changeDocument,
        addDocument: addDocument,
        getDocument: getDocument,
        readDocument: readDocument,
    };
}
커먼자스 맨 아래에 사:Bd3076/common.js의 내용을 추가해 주시기 바랍니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 14일 (목) 15:45 (KST)
Yes check.svg완료Js091213 (토론) 2019년 2월 14일 (목) 15:52 (KST)

보안 문제로 인해 한 번 더 수정 부탁드립니다. 미디어위키:Common.js의 1506번째 줄을

mw.notify('JSON 데이터가 수정되었습니다.');

로 바꿔주세요. (1506줄에는 아무것도 없습니다.) -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 15일 (금) 17:44 (KST)

Yes check.svg완료 by manymaster (토론|기여) 2019년 2월 15일 (금) 19:43 (KST)

정말 죄송한데 요청 한 번만 더 들어주실 수 있나요? 미처 예상하지 못한 case가 생겼습니다.

mw.notify('JSON 데이터가 수정되었습니다.');

부분을

mw.loader.using( ['mediawiki.notify','mediawiki.Title'] ).then( function () {
    mw.notify('JSON 데이터가 수정되었습니다.');
});

로 바꿔 주세요. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 15일 (금) 21:34 (KST)

Yes check.svg완료 -- 이의섭(사토|기여|노 백괴게임, 노 잼) 2019년 2월 15일 (금) 23:10 (KST)

평라선 삭제신청

제곧내. 제 게임입니다. --Regurus (/) 2019년 2월 17일 (일) 09:33 (KST)

Yes check.svg완료 삭제 신청 틀을 통해 이미 처리되었습니다. 확인 부탁드립니다. by manymaster (토론|기여) 2019년 2월 17일 (일) 10:05 (KST)

Common.js 수정 요청

이의섭님이 게임 데이터 수정을 사소한 편집이 뜨게 해 달라고 요청하셔서 코드를 조금 수정했습니다.

먼저 banip님의 MediawikiAPI를 아래와 같이 바꿔 주세요.

function MediaWikiAPI() {
    var token;
    var getToken = function() {
        if (token !== undefined) return token;
        $.ajax({
            url: "/w/api.php?action=query&meta=tokens",
            success: function(v, i) {
                var datas = JSON.parse($(v).find("pre").text());
                token = datas["query"]["tokens"]["csrftoken"];
            },
            async: false
        });
        return token;
    };

    function changeDocument(title, summary, content, isUnReload, minor) {
    	mw.loader.using( ['mediawiki.util','mediawiki.Title'] ).then( function () {
		    $.ajax({
	            url: mw.util.wikiScript("api"),
	            data: {
	                format: 'json',
	                action: 'edit',
	                title: title,
	                summary: summary,
	                text: content,
	                minor: minor,
	                token: getToken(),
	            },
	            dataType: 'json',
	            type: 'POST',
	            success: function(data) {
	                if (data && data.edit && data.edit.result == 'Success') {
	                    if (!isUnReload) window.location.reload(); // reload page if edit was successful
	                } else if (data && data.error) {
	                    alert('Error: API returned error code "' + data.error.code + '": ' + data.error.info);
	                } else {
	                    alert('Error: Unknown result from API.');
	                }
	            },
	            error: function(xhr) {
	                alert('Error: Request failed.');
	            }
	        });
		} );
    }

    function addDocument(title, summary, content, isUnReload, minor) {
        originContent = getDocument(title);
        changeDocument(title, summary, originContent + content, isUnReload, minor);
    }

    function getDocument(title) {
        function entityDecode(doc) {
            return $('<p></p>').html(doc).text();
        }

        var originContent;
        $.ajax({
            url: "/w/index.php?title=" + title + "&action=edit",
            success: function ajaxSucess(data) {
                originContent = $(data).find("textarea").html();
            },
            async: false
        });
        return entityDecode(originContent);
    }

    function readDocument(title) {
        var doc;
        $.ajax({
            url: "/wiki/" + title,
            success: function ajaxSucess(data) {
                doc = $(data).find("#mw-content-text");
            },
            async: false
        });
        return doc;
    }


    return {
        getToken: getToken,
        changeDocument: changeDocument,
        addDocument: addDocument,
        getDocument: getDocument,
        readDocument: readDocument,
    };
}

/* DB 기능 초기화 끝 */

그리고 제 json수정 코드는

/** JSON 편집을 편리하게 해 주는 기능.
 *  [[틀:JSON수정]]을 위한 플러그인입니다.
 *  작성자: [[사:Bd3076|Bd3076]]
 */

function uncy_jsonEdit(){
	var mp = new Map();
	var api = MediaWikiAPI();
	
	$('.uncy-jsonedit').each(function() {
	    var jsonDoc = $(this).attr("data-title");
	    var jsonData;
	    if(mp.get(jsonDoc) === undefined){
	    	jsonData = JSON.parse(api.getDocument(jsonDoc));
	    }
	    else{
	    	jsonData = JSON.parse(mp.get(jsonDoc));
	    }
	    var variable = $(this).attr("data-var");
	    var value = $(this).attr("data-val");
	    
	    jsonData[variable] = value;
	    
	    mp.set(jsonDoc, JSON.stringify(jsonData));
	});
	
	mp.forEach(function(value, key) {
		if(key === undefined){
			console.log("error: document name is undefined");
			return;
		}
		if(value === undefined){
			console.log("error: variable or value is wrong");
			return;
		}
		api.changeDocument(key, "JSON 데이터 수정", value, 1, 1);
		mw.loader.using( ['mediawiki.notify','mediawiki.Title'] ).then( function () {
    		mw.notify('JSON 데이터가 수정되었습니다.');
		});
	});
}
$(uncy_jsonEdit());

와 같이 바꿔주세요. --Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 20일 (수) 18:49 (KST)

Yes check.svg완료Js091213 (토론) 2019년 2월 20일 (수) 19:55 (KST)

Common.js 수정 요청

커먼자스 맨 아래에

function enoughEdit(){
	function compareEditCount(number, id1, id2){
		var editCount = mw.config.get('wgUserEditCount');
		console.log(number + ', ' + id1 + ', ' + id2 + ', ' + editCount);
		if(editCount < number){
			document.getElementById(id2).innerHTML = "";
		}
		else{
			document.getElementById(id1).innerHTML = "";
		}
	}
	
	$('.editCompare').each(function(){
		console.log(1);
		var num = $(this).attr("data-num");
		var enough = $(this).attr("data-id1");
		var nenough = $(this).attr("data-id2");
		compareEditCount(num, enough, nenough);
	});
}
$(enoughEdit());

를 추가해 주세요.

요청을 너무 많이 해서 죄송합니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2019년 2월 21일 (목) 14:48 (KST)