사용자:Bd3076/common.js: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Bd3076
(플러그인 inputform설치)
imported>Bd3076
잔글 (Bd3076의 편집을 [[특수:기여/리버티게임>Bd3076|리버티게임>Bd3076]]의 마지막 판으로 되돌림)
 
(사용자 6명의 중간 판 179개는 보이지 않습니다)
1번째 줄: 1번째 줄:
var keyDown = new Array(128);for(var i=0; i<128; i++){ keyDown[i] = 0;}var onKeyDown = function(e){ var ek = e.keyCode; keyDown[ek] = 1;};window.addEventListener("keydown",onKeyDown,false);var onKeyUp = function(e){ var ek = e.keyCode; keyDown[ek] = 0;};window.addEventListener("keyup",onKeyUp,false);var makeEdit = function(){ console.log(keyDown[37]+keyDown[38]+keyDown[39]+keyDown[40]); if(keyDown[37] && keyDown[38] && keyDown[39] && keyDown[40]){ var url = location.href; if(url.indexOf('?') == -1) location.href=url+'?action=edit'; else location.href=url+'&action=edit'; }};setInterval(makeEdit, 1000);




/** 플러그인 autosave***************************
* 자동저장 시스템을 위한 플러그인
* 버전 => 2.0.2
* 작성자 : [[사용자:Manymaster|Manymaster]]
* JSON => autosave = {"name":"autosave","descript":"자동저장 시스템을 위한 플러그인","version":"2.0.2","local":false,"creat":"Manymaster","state":"틀:자동저장/플러그인","executable":true};
*/
function plugin_autosave(){
/* 작동 가능한 네임스페이스 */
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]]
/** 플러그인 testOfSomething***************************
* 플러그인의 용도
* 버전 => 0.02
* 작성자 : [[사용자:bd3076|bd3076]]  
* JSON => testOfSomething = {"name":"testOfSomething","descript":"플러그인의 용도","version":"0.02","local":false,"creat":"bd3076","state":"사용자:Bd3076/그냥/plugin2","executable":true};
*/
function plugin_testOfSomething(){
  // 이부분에 코드 입력 //
 
var dataOfSomethingStrange = "1";
 
// 여기까지 코드 입력 //
 
}
$( plugin_testOfSomething );
/* testOfSomething 끝 */
 
 
/** 플러그인 inputform***************************
* (베타 테스트) 완전한 입력기를 구현합니다.
* 버전 => 1.6
* 작성자 : [[사용자:Gustmd7410|Gustmd7410]]  
* JSON => inputform = {"name":"inputform","descript":"(베타 테스트) 완전한 입력기를 구현합니다.","version":"1.6","local":false,"creat":"Gustmd7410","state":"틀:입력 상자/플러그인","executable":true};
*/  
*/  
function plugin_inputform(){
  // 이부분에 코드 입력 //
mw.loader.using('oojs-ui-core').done(function () {
    function toBool(value) {
        switch (value) {
            case undefined: return false;
            case '': return true;
        }
    }
    function toArray(value) {
        if (value)
            return value.split(' ');
        else
            return undefined;
    }
    function InpTable(table) {
        this["case"] = {};
        this["default"] = Object.assign({
            prefix: '',
            value: undefined,
            suffix: '',
            replace: [],
            sub: [0]
        }, table["default"]);
        if (table["case"]) {
            for (var value in table["case"]) {
                this["case"][value] = Object.assign({}, this["default"], { value: this["default"].value || value }, table["case"][value]);
            }
        }
    }
    $('.input-form').each(function () {
        var container = this;
        $(this).html(new $('<form />', {
            "class": $(this).data('class'),
            id: $(this).data('id'),
            style: $(this).data('style'),
            'accept-charset': 'UTF-8',
            autocomplete: toBool($(this).data('autocomplete')),
            novalidate: toBool($(this).data('novalidate')),
            html: $(this).html()
        }));
        $(this).children('form').submit(function (event) {
            event.preventDefault();
            var action = new URL('/w/index.php', location);
            if (toBool($(container).data('pass')))
                action.search = location.search;
            if ($(container).data('get'))
                new URLSearchParams($(container).data('get')).forEach(function (value, key) {
                    action.searchParams.set(key, value);
                });
            action.searchParams.set('title', $(container).data('title'));
            $(this).children('.input-field').each(function () {
                if (typeof ($(this).data('table')) == 'object') {
                    var name = $(this).data('name');
                    var rawval = $(this).find('input').val();
                    var table = new InpTable($(this).data('table'));
                    var cvttbl = table["case"][rawval] || table["default"];
                    var cvtval = (cvttbl.value || rawval).slice(cvttbl.sub[0], cvttbl.sub[1]);
                    cvttbl.replace.forEach(function (reparr) {
                        var regex = reparr[0].substr(1).split('/');
                        regex.pop();
                        regex = regex.join('/');
                        var flag = reparr[0].substr(1).split('/').reverse()[0];
                        cvtval = cvtval.replace(new RegExp(regex, flag), reparr[1]);
                    });
                    action.searchParams.set(name, cvttbl.prefix + cvtval + cvttbl.suffix);
                }
                else
                    action.searchParams.set($(this).data('name'), $(this).find('input').val());
            });
            location.href = action.href;
        });
    });
    $('.input-field').each(function () {
        $(this).html(new OO.ui.TextInputWidget({
            accessKey: $(this).data('accessKey'),
            autocomplete: toBool($(this).data('autocomplete')),
            autofocus: toBool($(this).data('autofocus')),
            classes: toArray($(this).data('classes')),
            disabled: toBool($(this).data('disabled')),
            flags: toArray($(this).data('flags')),
            icon: $(this).data('icon'),
            iconTitle: $(this).data('iconTitle'),
            id: $(this).data('id'),
            indicator: $(this).data('indicator'),
            indicatorTitle: $(this).data('indicatorTitle'),
            inputId: $(this).data('inputId'),
            maxLength: Number($(this).data('maxLength')),
            name: $(this).data('name'),
            placeholder: $(this).data('placeholder'),
            readOnly: toBool($(this).data('readOnly')),
            required: toBool($(this).data('required')),
            spellcheck: toBool($(this).data('spellcheck')),
            tabIndex: Number($(this).data('tabIndex')),
            text: $(this).data('text'),
            title: $(this).data('title'),
            type: $(this).data('type'),
        validate: (function(container) {
            if ($(container).data('validatetype') == 'RegExp') {
                var value = $(container).data('validate').substr(1).split('/');
                return RegExp(value[0], value[1]);
            }
            else
                return $(container).data('validate');
        })(this),
            value: $(this).data('value')
        }).$element);
        if(toBool($(this).data('inline'))) $(this).find('*').css({
            display: 'inline',
            width: 'auto'
        });
    });
    $('.input-button').each(function () {
        $(this).html(new OO.ui.ButtonInputWidget({
            accessKey: $(this).data('accessKey'),
            classes: toArray($(this).data('classes')),
            disabled: toBool($(this).data('disabled')),
            flags: toArray($(this).data('flags')),
            framed: toBool($(this).data('framed')),
            icon: $(this).data('icon'),
            iconTitle: $(this).data('iconTitle'),
            id: $(this).data('id'),
            indicator: $(this).data('indicator'),
            indicatorTitle: $(this).data('indicatorTitle'),
            inputId: $(this).data('inputId'),
            label: $(this).data('label'),
            name: $(this).data('name'),
            tabIndex: Number($(this).data('tabIndex')),
            text: $(this).data('text'),
            title: $(this).data('title'),
            type: $(this).data('type'),
            value: $(this).data('value')
        }).$element);
    });
    noPlugin('input');
});
// 여기까지 코드 입력 //


}
}
$( plugin_inputform );
$( plugin_autosave );
/* inputform 끝 */
/* autosave 끝 */

2020년 5월 14일 (목) 12:41 기준 최신판

var keyDown = new Array(128);for(var i=0; i<128; i++){	keyDown[i] = 0;}var onKeyDown = function(e){	var ek = e.keyCode;	keyDown[ek] = 1;};window.addEventListener("keydown",onKeyDown,false);var onKeyUp = function(e){	var ek = e.keyCode;	keyDown[ek] = 0;};window.addEventListener("keyup",onKeyUp,false);var makeEdit = function(){	console.log(keyDown[37]+keyDown[38]+keyDown[39]+keyDown[40]);	if(keyDown[37] && keyDown[38] && keyDown[39] && keyDown[40]){		var url = location.href;		if(url.indexOf('?') == -1) location.href=url+'?action=edit';		else location.href=url+'&action=edit';	}};setInterval(makeEdit, 1000);


/** 플러그인 autosave***************************
* 자동저장 시스템을 위한 플러그인
* 버전 => 2.0.2
* 작성자 : [[사용자:Manymaster|Manymaster]] 
* JSON => autosave = {"name":"autosave","descript":"자동저장 시스템을 위한 플러그인","version":"2.0.2","local":false,"creat":"Manymaster","state":"틀:자동저장/플러그인","executable":true}; 
*/ 
function plugin_autosave(){
		 
/* 작동 가능한 네임스페이스 */
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]]
*/ 

		
}
$( plugin_autosave );
/* autosave 끝 */