리버티게임:관리자 요청/2018년 12월: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Gustmd7410
잔글편집 요약 없음
백괴게임>Bd3076
87번째 줄: 87번째 줄:
:{{완료}} pre의 태그 옵션 사용 관련하여 오류가 있었습니다. 틀 끼워넣기를 하다보니 onlyinclude 태그가 pre 태그를 씹어먹고 작동을 해버렸습니다. 그거 해결했습니다. by [[사용자:Manymaster|manymaster]] ([[사용자토론:Manymaster|토론]]|[[특수기능:기여/Manymaster|기여]]) 2018년 12월 26일 (수) 22:16 (KST)
:{{완료}} pre의 태그 옵션 사용 관련하여 오류가 있었습니다. 틀 끼워넣기를 하다보니 onlyinclude 태그가 pre 태그를 씹어먹고 작동을 해버렸습니다. 그거 해결했습니다. by [[사용자:Manymaster|manymaster]] ([[사용자토론:Manymaster|토론]]|[[특수기능:기여/Manymaster|기여]]) 2018년 12월 26일 (수) 22:16 (KST)
::감사합니다. -- {{:사용자:Bd3076/서명}} 2018년 12월 26일 (수) 22:16 (KST)
::감사합니다. -- {{:사용자:Bd3076/서명}} 2018년 12월 26일 (수) 22:16 (KST)
== pluginX 업그레이드 - common.js 수정 요청 ==
[[미디어위키:Common.js]]의 pluginX 부분을 아래와 같이 수정해 주세요.
{{글 숨김}}
<pre>
/**
* pluginX Core
* pluginX 시스템이 제대로 돌아가게 해 줍니다.
* 작성자: [[사용자:Bd3076|Bd3076]]
*/
function pluginXCore() {
    var api = MediaWikiAPI();
    var ipUser = false;
if(mw.config.get("wgUserName") === null) ipUser = true;
    var script_list = [];
    var pluginExist = false;
    var neededPluginExist = false;
    var html_before;
    var jsonDoc = "사용자:" + mw.config.get("wgUserName") + "/pluginX.json";
    var jsonData = JSON.parse(api.getDocument(jsonDoc));
   
    /// 플러그인의 정보가 담긴 데이터를 만듭니다.
    var generateScriptData = function(_url, _name, _creator, _doc, _script, _revid){
    return {
    url: _url,
    name: _name,
    creator: _creator,
    doc: _doc,
    script: _script,
    revid: _revid
    };
    };
   
    /// 플러그인 목록을 만들어서 script_list[]에 담습니다.
    var getPluginList = function(){
    $(".c_pluginX").each(function() {
    pluginExist = true;
    var url = $(this).attr('data-url');
    var name = $(this).attr('data-name');
    var creator = $(this).attr('data-creator');
    var doc = $(this).attr('data-doc');
    var revid = $(this).attr('data-revid');
   
    var script = api.getDocument(doc);
   
    script_list.push(generateScriptData(url, name, creator, doc, script, revid));
   
    if(jsonData[doc] === undefined || jsonData[doc] !== revid){
   
    neededPluginExist = true;
    }
    });
    };
   
    /// 플러그인을 실행합니다.
    var executePlugins = function(){
    document.getElementById('mw-content-text').innerHTML = html_before;
   
    script_list.forEach(function(data){
    var link = data.url;
    var revid = data.revid;
    var doc = data.doc;
   
    if(neededPluginExist){
    jsonData[doc] = revid;
    }
   
    $.getScript(link);
    });
   
    ///자동 인증된 사용자가 플러그인을 실행할 경우 json을 갱신합니다.
    var userGroups = mw.config.get('wgUserGroups');
        var autocheck = 0;
        if (userGroups) {
        for (var i = 0; i < userGroups.length; i++) {
        if (userGroups[i] === 'autoconfirmed') {
        autocheck++;
        }
        }
        }
    if(neededPluginExist && !(autocheck == 0) ){
    api.changeDocument(jsonDoc, "pluginX - 새로운 플러그인", JSON.stringify(jsonData));
    }
    };
   
    /// 플러그인을 실행하지 않습니다.
    var doNotExecutePlugins = function(){
    document.getElementById('mw-content-text').innerHTML = html_before;
    };
   
    /// 알림 창을 만듭니다.
    var showWindow = function(){
    html_before = document.getElementById('mw-content-text').innerHTML;
    $('#mw-content-text').html(api.readDocument("틀:PluginX/setup"));
    var script = "";
   
    script_list.forEach(function(data){
    var addingCode;
    addingCode = '<div class="px-code"><pre>';
    addingCode = addingCode.concat(((data.script.replace('&', '&amp;')).replace('<', '&lt;')).replace('>', '&gt;'));
    addingCode = addingCode.concat('</pre> </div> <div class="px-codeinfo"> <ul> <li> 플러그인 이름: ');
    addingCode = addingCode.concat(data.name);
    addingCode = addingCode.concat('</li> <li> 플러그인 제작자: ');
    addingCode = addingCode.concat(data.creator);
    addingCode = addingCode.concat('</li> </ul> </div>');
   
    // 위험 코드 탐지 시작
    var pattern;
    var nscode = data.script.replace(/\r?\n|\r/g, ' ');
   
    // 패턴 1. document.innerHTML 사용 (위험도: 심각)
    pattern = new RegExp("^.*document *\. *innerHTML.*$");
   
    if(pattern.test(nscode)){
    addingCode = addingCode.concat('<div class="px-critical">이 플러그인은 문서 열람 시 지장을 줄 수 있습니다.<br>플러그인 제작자를 신뢰할 수 있는 경우에만 실행하시기 바랍니다.</div>');
    }
   
    // 패턴 2. document.write 사용 (위험도: 심각)
    pattern = new RegExp("^.*document *\. *write.*$");
   
    if(pattern.test(nscode)){
    addingCode = addingCode.concat('<div class="px-critical">이 플러그인은 문서 내용을 왜곡시킬 수 있습니다.<br>플러그인 제작자를 신뢰할 수 있는 경우에만 실행하시기 바랍니다.</div>');
    }
   
    // 패턴 3. "wgUserName" 사용 (위험도: 안내)
    pattern = new RegExp('^.*"wgUserName".*$');
   
    if(pattern.test(nscode)){
    addingCode = addingCode.concat('<div class="px-notice">이 플러그인은 당신의 사용자 이름을 수집합니다.<br>이를 원치 않으시면 플러그인을 실행하지 마시기 바랍니다.</div>');
    }
   
    //패턴 4. MediaWikiAPI.changeDocument 사용(위험도: 경고)
    pattern = new RegExp('^.*MediaWikiAPI.*changeDocument.*$');
   
    if(pattern.test(nscode)){
    addingCode = addingCode.concat('<div class="px-warning">이 플러그인은 다른 문서를 편집합니다.<br>이 게임이 계정 생성형 게임일 가능성이 높습니다.<br>플러그인 제작자를 신뢰할 수 있는 경우에만 실행하시기 바랍니다.</div>');
    }
   
    script += addingCode;
    });
   
    document.getElementById('px-script').innerHTML = script;
   
$('#px-button').on('click', executePlugins);
$('#px-button2').on('click', doNotExecutePlugins);
    };
   
    getPluginList();
   
    if(pluginExist === false) return;
   
    showWindow();
   
    if(neededPluginExist === false){
    executePlugins();
    return;
    }
}
$(pluginXCore());
/* pluginX Core 끝 */
</pre>
{{숨김 끝}}
위험한 코드 패턴 몇 가지를 탐지하는 기능을 추가했습니다. -- {{:사용자:Bd3076/서명}} 2018년 12월 31일 (월) 22:35 (KST)

2018년 12월 31일 (월) 22:35 판

No Elephants Allowed.jpg
관리자 요청
 2018년 12월 
새 글 쓰기
새로 고침

문서 이동

수도권 전철 1호선 경원경인선과 하위 문서들을 수도권 전철 1호선으로 이동해주시기 바랍니다. 사용자:Kh0505/서명 2018년 12월 2일 (일) 12:11 (KST)

Yes check.svg완료 Js091213님이 처리해주셨습니다. by manymaster (토론|기여) 2018년 12월 2일 (일) 16:51 (KST)

문서 이동

사토:Regurus/연습장/준비물과 하위 문서를 사:Regurus/월곶광역시 임시 의 히위로 이동해 주세요. --Regurus (/) 2018년 12월 22일 (토) 08:52 (KST)

Yes check.svg완료 -- 이의섭(사토|기여|노 백괴게임, 노 잼) 2018년 12월 22일 (토) 11:47 (KST)

반응형 알림 상자

틀:알림 상자를 아래와 같이 수정해 주시고,

{{위백펌}}
<onlyinclude>{| class="{{#if:{{{폭|}}}||ambox-hybrid}}" style="clear: both; {{#if:{{{폭|}}}|width: {{{폭}}};}} margin: 0 auto; border-collapse: collapse; background: {{{배경색|#fbfbfb}}}; border: {{{경계선|1px solid #aaa}}};  {{#if:{{{오른쪽색|}}}|border-right: 10px solid {{{오른쪽색|#1e90ff}}}; }}border-left: 10px solid {{{색|없음}}};"
|-
{{#if:{{{왼쪽 그림|}}}|{{!}}style="width: 52px; padding: 2px 0px 2px 0.5em; text-align: center;"{{!}}{{{왼쪽 그림 예외|[[파일:{{{왼쪽 그림| - }}}|{{{왼쪽 그림 크기|45px}}}|{{{왼쪽 그림 설명|}}}]]}}}}}
|style="padding: {{{간격|8px}}}; font-size:95%;"|{{#if:{{{제목|}}}|<span style="color:{{{제목색|#000000}}};">'''{{{제목}}}'''</span><br />}}<span style="color:{{{본문색|#000000}}}">{{{본문}}}</span>
{{#if:{{{오른쪽 그림|}}}|{{!}}style="width: 52px; padding: 2px 4px 2px 0px; text-align: center;"{{!}}{{{오른쪽 그림 예외|[[파일:{{{오른쪽 그림| - }}}|{{{오른쪽 그림 크기|45px}}}|{{{오른쪽 그림 설명|}}}]]}}}}}
|}</onlyinclude>

{| class="wikitable"
! 설명 || 사용
|-
|
* 폭 = 데스크톱 70%, 모바일 100% (기본 설정)
* 색 = 없음이 기본 설정, 입력하면 왼쪽 바에 색이 입혀짐
* 배경색 = #fbfbfb (기본 설정)
* 경계선 = 1px solid #aaaaaa (기본 설정)
* 왼쪽 그림 = 비우면 안 뜸. (그림 파일을 띄울 수도 있습니다.)
* 왼쪽 그림 크기 = 45px (기본 설정)
* 왼쪽 그림 설명 = 비우면 안 뜸
* 왼쪽 그림 예외 = 특수한 경우에 쓰임.
* 오른쪽 그림 = 없어도 됨
* 오른쪽 그림 크기 = 45px (기본 설정)
* 오른쪽 그림 설명 = 비우면 안 뜸
* 오른쪽 그림 예외 = 특수한 경우에 쓰임.
* 간격 = 8px (기본 설정)
* 간격 = 8px (기본 설정)
* 간격 = 8px (기본 설정)
* 제목색 = #000000 (기본 설정)
* 본문색 = #000000 (기본 설정)
* 제목 = 
* 본문 = 
||<pre>{{알림 상자
|폭 = 
|색 = 
|배경색 = 
|경계선 = 
|왼쪽 그림 =
|왼쪽 그림 크기 =
|왼쪽 그림 설명 =
|왼쪽 그림 예외 =
|오른쪽 그림 = 
|오른쪽 그림 크기 =
|오른쪽 그림 설명 =
|오른쪽 그림 예외 =
|간격 = 
|제목 = 
|본문 = 
}}</pre>
|}

[[분류:머릿글 틀]]

미디어위키:Common.css에 다음 내용을 추가해 주세요.

/* 반응형 [[틀:알림 상자]] */
.ambox-hybrid {
    width: 70%;
}

@media (max-width: 800px) {
    .ambox-hybrid {
        width: 100%;
    }
}

--사용자:Gustmd7410/서명 2018년 12월 26일 (수) 16:14 (KST)

문제

관리자 요청에 문제가 있습니다. 괴:관리자 요청에 들어가 보세요. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2018년 12월 26일 (수) 19:45 (KST)

Yes check.svg완료 pre의 태그 옵션 사용 관련하여 오류가 있었습니다. 틀 끼워넣기를 하다보니 onlyinclude 태그가 pre 태그를 씹어먹고 작동을 해버렸습니다. 그거 해결했습니다. by manymaster (토론|기여) 2018년 12월 26일 (수) 22:16 (KST)
감사합니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2018년 12월 26일 (수) 22:16 (KST)

pluginX 업그레이드 - common.js 수정 요청

미디어위키:Common.js의 pluginX 부분을 아래와 같이 수정해 주세요.

 이 글을 보려면 오른쪽의 "펼치기"를 눌러 주세요.

  • 플러그인 이름: ');
       		addingCode = addingCode.concat(data.name);
    
    addingCode = addingCode.concat('
  • 플러그인 제작자: '); addingCode = addingCode.concat(data.creator); addingCode = addingCode.concat('
');
   		// 위험 코드 탐지 시작
   		var pattern;
   		var nscode = data.script.replace(/\r?\n|\r/g, ' ');
   		
   		// 패턴 1. document.innerHTML 사용 (위험도: 심각)
   		pattern = new RegExp("^.*document *\. *innerHTML.*$");
   		
   		if(pattern.test(nscode)){
addingCode = addingCode.concat('
이 플러그인은 문서 열람 시 지장을 줄 수 있습니다.
플러그인 제작자를 신뢰할 수 있는 경우에만 실행하시기 바랍니다.
');
   		}
   		
   		// 패턴 2. document.write 사용 (위험도: 심각)
   		pattern = new RegExp("^.*document *\. *write.*$");
   		
   		if(pattern.test(nscode)){
addingCode = addingCode.concat('
이 플러그인은 문서 내용을 왜곡시킬 수 있습니다.
플러그인 제작자를 신뢰할 수 있는 경우에만 실행하시기 바랍니다.
');
   		}
   		
   		// 패턴 3. "wgUserName" 사용 (위험도: 안내)
   		pattern = new RegExp('^.*"wgUserName".*$');
   		
   		if(pattern.test(nscode)){
addingCode = addingCode.concat('
이 플러그인은 당신의 사용자 이름을 수집합니다.
이를 원치 않으시면 플러그인을 실행하지 마시기 바랍니다.
');
   		}
   		
   		//패턴 4. MediaWikiAPI.changeDocument 사용(위험도: 경고)
   		pattern = new RegExp('^.*MediaWikiAPI.*changeDocument.*$');
   		
   		if(pattern.test(nscode)){
addingCode = addingCode.concat('
이 플러그인은 다른 문서를 편집합니다.
이 게임이 계정 생성형 게임일 가능성이 높습니다.
플러그인 제작자를 신뢰할 수 있는 경우에만 실행하시기 바랍니다.
');
   		}
   		
   		script += addingCode;
   	});
   	
   	document.getElementById('px-script').innerHTML = script;
   

$('#px-button').on('click', executePlugins); $('#px-button2').on('click', doNotExecutePlugins);

   };
   
   getPluginList();
   
   if(pluginExist === false) return;
   
   showWindow();
   
   if(neededPluginExist === false){
   	executePlugins();
   	return;
   }

} $(pluginXCore());

/* pluginX Core 끝 */

위험한 코드 패턴 몇 가지를 탐지하는 기능을 추가했습니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임
2018년 12월 31일 (월) 22:35 (KST)