틀:자동저장/플러그인: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Manymaster
(새로운플러그인생성)
 
잔글 ("틀:자동저장/플러그인" 문서를 보호했습니다: 방문이 많거나 리버티게임 프로젝트에서 중요한 문서: 변조될 경우 자동저장을 사용하는 모든 게임에 문제가 발생하므로, 관리자 전용 편집으로 변경 ([편집=관리자만 허용] (무기한) [이동=관리자만 허용] (무기한)))
 
(사용자 2명의 중간 판 17개는 보이지 않습니다)
5번째 줄: 5번째 줄:


{{#vardefine:name|autosave}}
{{#vardefine:name|autosave}}
{{#vardefine:creat|BANIP}}
{{#vardefine:creat|Manymaster}}
{{#vardefine:version|0.0.5}}
{{#vardefine:version|2.0.2}}
{{#vardefine:descript|자동저장 시스템을 위한 플러그인}}
{{#vardefine:descript|자동저장 시스템을 위한 플러그인}}
{{#vardefine:local|false}}
{{#vardefine:local|false}}
14번째 줄: 14번째 줄:
<nowiki>
<nowiki>
/* 작동 가능한 네임스페이스 */
/* 작동 가능한 네임스페이스 */
const safeNameSpace = [""];
var safeNameSpace = [""];
 
/* autosave 편집모드가 아닐 경우 플러그인 종료 */
/* autosave 편집모드가 아닐 경우 플러그인 종료 */
const searchParams = new URL(location).searchParams;
var searchParams = geturlSearch(location);
const isEditMode = searchParams.get("action") === "edit";
var isEditMode = searchParams.action === "edit";
const isAutosaveMode = searchParams.get("autosave") === "1";
var isAutosaveMode = searchParams.autosave === "1";
if(!(isEditMode && isAutosaveMode)) return "";
if (!(isEditMode && isAutosaveMode)) return "";


/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
const thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
var thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
const nameSpaceIds = mw.config.get("wgNamespaceIds");
var nameSpaceIds = mw.config.get("wgNamespaceIds");
const isSafeNameSpace = safeNameSpace
var isSafeNameSpace = safeNameSpace
.map( function(namespace){ return nameSpaceIds[namespace]; })
    .map(function (namespace) { return nameSpaceIds[namespace]; })
.some( function(nsNumber){ return nsNumber == thisNamespaceNumber; });
    .some(function (nsNumber) { return nsNumber == thisNamespaceNumber; });
if(!(isSafeNameSpace)) return "";
if (!(isSafeNameSpace)) return "";


/* 자동 인증된 사용자가 아닌 경우 플러그인 종료 */
/* 자동 인증된 사용자가 아닌 경우 플러그인 종료 */
var userGroups = mw.config.get( 'wgUserGroups' );
var userGroups = mw.config.get('wgUserGroups');
var autocheck = 0
var autocheck = 0;
if ( userGroups ) {
if (userGroups) {
for ( var i = 0; i < userGroups.length; i++ ) {
    for (var i = 0; i < userGroups.length; i++) {
if ( userGroups[i] === 'autoconfirmed' ) {
        if (userGroups[i] === 'autoconfirmed') {
autocheck++;
            autocheck++;
        }
    }
}
}
}
if (autocheck != 1) return "";
}
if(!(autocheck == 1 )) return "";


/* 지정된 단락에서 불러오기 */
/* 지정된 단락에서 불러오기 */
const savetempDom = $(".game-autosave");
var savetempDom = $(".game-autosave");
if($(".game-autosave").length === 0)  
if ($(".game-autosave").length === 0)
     throw new Error("autosave => game-autosave를 클래스명으로 가진 돔을 찾을 수 없습니다.");
     throw new Error("autosave => game-autosave를 클래스명으로 가진 돔을 찾을 수 없습니다.");
var savetemp = $(".game-autosave").html();
var savetemp = $(".game-autosave").html();


/* 문제가 되는 문자열 치환 */
/* 문제가 되는 문자열 치환 */
savetemp = savetemp.replace(/(<([^>]+)>)/ig,"");
savetemp = savetemp.replace(/(<([^>]+)>)/ig, "");
savetemp = savetemp.replace(/\n+/gi, "\n");
savetemp = savetemp.replace(/\n+/gi, "\n");
savetemp = savetemp.replace("\n", "");
savetemp = savetemp.replace("\n", "");
savetemp = savetemp.replace(/</gi, "<");
savetemp = savetemp.replace(/&amp;lt;/gi, "<");
savetemp = savetemp.replace(/>/gi, ">");
savetemp = savetemp.replace(/&amp;gt;/gi, ">");


/* 기록, 저장하고 빠져나오기 */
/* 기록, 저장하고 빠져나오기 */
59번째 줄: 58번째 줄:
$("#wpSave").click();
$("#wpSave").click();
return;
return;
 
}
/** 이 플러그인 제작을 도와주신 분들
$( plugin_autosavetest );
* Ver 2 제작자: [[사용자:BANIP|BANIP]]
* 원 코드 작성자: [[사용자:*devunt]]
*/
</nowiki>
</nowiki>
}}
}}


!!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 끝 아래는 만지지 마시오!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 끝 아래는 만지지 마시오!!!!!!!!!!!!!!!!!
{{플러그인/preset/css}}
</div>{{#switch: {{{1|화면}}}
</div>{{#switch: {{{1|화면}}}
|dump =  
|dump =  
|화면 =  
|화면 = 이 플러그인에 대한 자세한 설명을 보시려면 [[틀:자동저장]]을 참고해주세요.[[분류:플러그인]]
<p<includeonly></includeonly>re class="script" data-name="{{#var:name}}"  
<p<includeonly></includeonly>re class="script" data-name="{{#var:name}}"  
    data-create="{{#var:creat}}"  
    data-create="{{#var:creat}}"  
76번째 줄: 76번째 줄:
    data-local="{{#var:local}}"
    data-local="{{#var:local}}"
    data-executable="{{#var:executable}}"
    data-executable="{{#var:executable}}"
    data-state="백괴게임:자동저장 플러그인">
    data-state=":자동저장/플러그인">
{{#var:code}}
{{#var:code}}
</pre>
</pre>
82번째 줄: 82번째 줄:
                 {{#ifeq:{{{2|틀}}}|틀|{{플러그인/알림|{{#var:name}}}}|}}
                 {{#ifeq:{{{2|틀}}}|틀|{{플러그인/알림|{{#var:name}}}}|}}
<span class="use-script" data-name="{{#var:name}}" data-creat="{{#var:creat}}" data-version="{{#var:version}}" data-executable="{{#var:executable}}"
<span class="use-script" data-name="{{#var:name}}" data-creat="{{#var:creat}}" data-version="{{#var:version}}" data-executable="{{#var:executable}}"
data-descript="{{#var:descript}}" data-local="{{#var:local}}" data-state="백괴게임:자동저장 플러그인" data-link="{{fullurl: {{#rel2abs: {{{1}}} }} }}"></span>
data-descript="{{#var:descript}}" data-local="{{#var:local}}" data-state=":자동저장/플러그인" data-link="{{fullurl: {{#rel2abs: {{{1}}} }} }}"></span>
}}
}}

2024년 7월 12일 (금) 10:42 기준 최신판

요령 => 아래 변수들의 첫번째 인자들을 내용에 맞게 자르고 붙여넣어주세요

!!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 윗부분은 만지지 마시오 절대로!!!!!!!!!!!!!!!!!






!!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 끝 아래는 만지지 마시오!!!!!!!!!!!!!!!!!

이 플러그인에 대한 자세한 설명을 보시려면 틀:자동저장을 참고해주세요.

		 
/* 작동 가능한 네임스페이스 */
var safeNameSpace = [""];
/* autosave 편집모드가 아닐 경우 플러그인 종료 */
var searchParams = geturlSearch(location);
var isEditMode = searchParams.action === "edit";
var isAutosaveMode = searchParams.autosave === "1";
if (!(isEditMode && isAutosaveMode)) return "";

/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
var thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
var nameSpaceIds = mw.config.get("wgNamespaceIds");
var isSafeNameSpace = safeNameSpace
    .map(function (namespace) { return nameSpaceIds[namespace]; })
    .some(function (nsNumber) { return nsNumber == thisNamespaceNumber; });
if (!(isSafeNameSpace)) return "";

/* 자동 인증된 사용자가 아닌 경우 플러그인 종료 */
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 (autocheck != 1) return "";

/* 지정된 단락에서 불러오기 */
var savetempDom = $(".game-autosave");
if ($(".game-autosave").length === 0)
    throw new Error("autosave => game-autosave를 클래스명으로 가진 돔을 찾을 수 없습니다.");
var savetemp = $(".game-autosave").html();

/* 문제가 되는 문자열 치환 */
savetemp = savetemp.replace(/(<([^>]+)>)/ig, "");
savetemp = savetemp.replace(/\n+/gi, "\n");
savetemp = savetemp.replace("\n", "");
savetemp = savetemp.replace(/&lt;/gi, "<");
savetemp = savetemp.replace(/&gt;/gi, ">");

/* 기록, 저장하고 빠져나오기 */
$("#wpTextbox1").val(savetemp);
$("#wpSave").click();
return;

/** 이 플러그인 제작을 도와주신 분들
 * Ver 2 제작자: [[사용자:BANIP|BANIP]]
 * 원 코드 작성자: [[사용자:*devunt]]
*/