리버티게임:관리자 요청/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('&', '&')).replace('<', '<')).replace('>', '>')); | |||
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 판
관리자 요청 |
---|
◀ 2018년 12월 ▶ |
새 글 쓰기 |
새로 고침 |
문서 이동
수도권 전철 1호선 경원경인선과 하위 문서들을 수도권 전철 1호선
으로 이동해주시기 바랍니다. 사용자:Kh0505/서명 2018년 12월 2일 (일) 12:11 (KST)
- 완료 Js091213님이 처리해주셨습니다. by manymaster (토론|기여) 2018년 12월 2일 (일) 16:51 (KST)
문서 이동
사토:Regurus/연습장/준비물과 하위 문서를 사:Regurus/월곶광역시 임시 의 히위로 이동해 주세요. --Regurus (토/기) 2018년 12월 22일 (토) 08:52 (KST)
- 완료 -- 이의섭(사토|기여|노 백괴게임, 노 잼) 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)
- 완료 pre의 태그 옵션 사용 관련하여 오류가 있었습니다. 틀 끼워넣기를 하다보니 onlyinclude 태그가 pre 태그를 씹어먹고 작동을 해버렸습니다. 그거 해결했습니다. by manymaster (토론|기여) 2018년 12월 26일 (수) 22:16 (KST)
- 감사합니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
만든 게임: Bd3076의 게임 2018년 12월 26일 (수) 22:16 (KST)
- 감사합니다. -- Bd3076 (토론) (둘러보기)기여 횟수:
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)