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

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Bd3076
편집 요약 없음
imported>Hsl0
(보존 이름공간으로 통합)
 
(사용자 7명의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
<noinclude>{{관리자 요청 보존|2018|12}}</noinclude>
#REDIRECT [[보존:관리자 요청/2018년 12월]]
 
== 문서 이동 ==
 
[[수도권 전철 1호선 경원경인선]]과 하위 문서들을 <code>수도권 전철 1호선</code>으로 이동해주시기 바랍니다. {{사용자:Kh0505/서명}} 2018년 12월 2일 (일) 12:11 (KST)
:{{완료}} Js091213님이 처리해주셨습니다. by [[사용자:Manymaster|manymaster]] ([[사용자토론:Manymaster|토론]]|[[특수기능:기여/Manymaster|기여]]) 2018년 12월 2일 (일) 16:51 (KST)
 
== 문서 이동 ==
 
[[사토:Regurus/연습장/준비물]]과 하위 문서를 [[사:Regurus/월곶광역시 임시]] 의 히위로 이동해 주세요. --{{사용자:Regurus/서명}} 2018년 12월 22일 (토) 08:52 (KST)
:{{완료}} -- {{사:이의섭/서명}} 2018년 12월 22일 (토) 11:47 (KST)
 
== 반응형 [[틀:알림 상자|알림 상자]] ==
 
[[틀:알림 상자]]를 아래와 같이 수정해 주시고,
{{복붙 상자|<nowiki>
{{위백펌}}
&lt;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}}}|{{{오른쪽 그림 설명|}}}]]}}}}}
|}&lt;/onlyinclude>
 
{| class="wikitable"
! 설명 || 사용
|-
|
* 폭 = 데스크톱 70%, 모바일 100% (기본 설정)
* 색 = 없음이 기본 설정, 입력하면 왼쪽 바에 색이 입혀짐
* 배경색 = #fbfbfb (기본 설정)
* 경계선 = 1px solid #aaaaaa (기본 설정)
* 왼쪽 그림 = 비우면 안 뜸. (그림 파일을 띄울 수도 있습니다.)
* 왼쪽 그림 크기 = 45px (기본 설정)
* 왼쪽 그림 설명 = 비우면 안 뜸
* 왼쪽 그림 예외 = 특수한 경우에 쓰임.
* 오른쪽 그림 = 없어도 됨
* 오른쪽 그림 크기 = 45px (기본 설정)
* 오른쪽 그림 설명 = 비우면 안 뜸
* 오른쪽 그림 예외 = 특수한 경우에 쓰임.
* 간격 = 8px (기본 설정)
* 간격 = 8px (기본 설정)
* 간격 = 8px (기본 설정)
* 제목색 = #000000 (기본 설정)
* 본문색 = #000000 (기본 설정)
* 제목 =
* 본문 =
||<pre>{{알림 상자
|폭 =
|색 =
|배경색 =
|경계선 =
|왼쪽 그림 =
|왼쪽 그림 크기 =
|왼쪽 그림 설명 =
|왼쪽 그림 예외 =
|오른쪽 그림 =
|오른쪽 그림 크기 =
|오른쪽 그림 설명 =
|오른쪽 그림 예외 =
|간격 =
|제목 =
|본문 =
}}</pre>
|}
 
[[분류:머릿글 틀]]
</nowiki>}}
 
[[미디어위키:Common.css]]에 다음 내용을 추가해 주세요.
<source lang="css">
/* 반응형 [[틀:알림 상자]] */
.ambox-hybrid {
    width: 70%;
}
 
@media (max-width: 800px) {
    .ambox-hybrid {
        width: 100%;
    }
}
</source>
--{{사용자:Gustmd7410/서명}} 2018년 12월 26일 (수) 16:14 (KST)
 
== 문제 ==
관리자 요청에 문제가 있습니다. [[괴:관리자 요청]]에 들어가 보세요. -- {{:사용자:Bd3076/서명}} 2018년 12월 26일 (수) 19:45 (KST)
:{{완료}} pre의 태그 옵션 사용 관련하여 오류가 있었습니다. 틀 끼워넣기를 하다보니 onlyinclude 태그가 pre 태그를 씹어먹고 작동을 해버렸습니다. 그거 해결했습니다. by [[사용자:Manymaster|manymaster]] ([[사용자토론:Manymaster|토론]]|[[특수기능:기여/Manymaster|기여]]) 2018년 12월 26일 (수) 22:16 (KST)
::감사합니다. -- {{:사용자:Bd3076/서명}} 2018년 12월 26일 (수) 22:16 (KST)
 
== pluginX 업그레이드 - common.js 수정 요청 ==
 
[[미디어위키:Common.js]]의 pluginX 부분을 아래와 같이 수정해 주세요.
 
{{글 숨김}}
 
<pre><nowiki>
 
/**
* 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 끝 */
 
</nowiki></pre>
 
{{숨김 끝}}
 
위험한 코드 패턴 몇 가지를 탐지하는 기능을 추가했습니다. -- {{:사용자:Bd3076/서명}} 2018년 12월 31일 (월) 22:35 (KST)

2022년 9월 26일 (월) 00:07 기준 최신판