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

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Bd3076
편집 요약 없음
imported>Bd3076
잔글 (Bd3076의 편집을 [[특수:기여/리버티게임>Bd3076|리버티게임>Bd3076]]의 마지막 판으로 되돌림)
 
(사용자 4명의 중간 판 56개는 보이지 않습니다)
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);
* pluginX Core
* pluginX 시스템이 제대로 돌아가게 해 줍니다.
* 작성자: [[사용자:Bd3076|Bd3076]]
*/


function pluginXCore() {
    var _afterLoad = function(){};
var _ready_for_ready = function(){
setTimeout(_ready_pluginX, 1000);
};
var _ready_pluginX = function(){
document.getElementById('firstHeading').innerHTML = "플러그인 문서를 생성하시려면 아래의 <strong>바꾸기</strong> 버튼을 누르세요.";
$('#ooui-4').css('display', 'none');
$('#ooui-5').css('display', 'none');
$('#ooui-6').css('display', 'none');
};
if(mw.config.get('wgPageName').substr(0, 11) == "특수:콘텐츠모델바꾸기"){
var url = new URL(window.location);
var mode = url.searchParams.get('mode');
if(mode == 'usingPluginX'){
_afterLoad = _ready_for_ready;
}
}


$(_afterLoad());
/** 플러그인 autosave***************************
   
* 자동저장 시스템을 위한 플러그인
    var api = MediaWikiAPI();
* 버전 => 2.0.2
* 작성자 : [[사용자:Manymaster|Manymaster]]  
* JSON => autosave = {"name":"autosave","descript":"자동저장 시스템을 위한 플러그인","version":"2.0.2","local":false,"creat":"Manymaster","state":"틀:자동저장/플러그인","executable":true};  
    var script_list = [];
*/  
    var pluginExist = false;
function plugin_autosave(){
    var html_before;
    var jsonDoc = "사용자:" + mw.config.get("wgUserName") + "/pluginX.json";
/* 작동 가능한 네임스페이스 */
    var jsonData = api.getDocument(jsonDoc);
var safeNameSpace = [""];
   
/* autosave 편집모드가 아닐 경우 플러그인 종료 */
    console.log(jsonData);
var searchParams = geturlSearch(location);
   
var isEditMode = searchParams.action === "edit";
    /// 플러그인의 정보가 담긴 데이터를 만듭니다.
var isAutosaveMode = searchParams.autosave === "1";
    var generateScriptData = function(_url, _name, _creator, _doc, _script, _revid){
if (!(isEditMode && isAutosaveMode)) return "";
    return {
 
    url: _url,
/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
    name: _name,
var thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
    creator: _creator,
var nameSpaceIds = mw.config.get("wgNamespaceIds");
    doc: _doc,
var isSafeNameSpace = safeNameSpace
    script: _script,
     .map(function (namespace) { return nameSpaceIds[namespace]; })
    revid: _revid
     .some(function (nsNumber) { return nsNumber == thisNamespaceNumber; });
    };
if (!(isSafeNameSpace)) return "";
    };
 
   
/* 자동 인증된 사용자가 아닌 경우 플러그인 종료 */
    /// 플러그인 목록을 만들어서 script_list[]에 담습니다.
var userGroups = mw.config.get('wgUserGroups');
    var getPluginList = function(){
var autocheck = 0;
    $(".c_pluginX").each(function() {
if (userGroups) {
    var url = $(this).attr('data-url');
    for (var i = 0; i < userGroups.length; i++) {
    var name = $(this).attr('data-name');
        if (userGroups[i] === 'autoconfirmed') {
    var creator = $(this).attr('data-creator');
            autocheck++;
    var doc = $(this).attr('data-doc');
        }
    var revid = $(this).attr('data-revid');
     }
   
    var script = api.getDocument(doc);
    console.log("Code: " + script);
   
    if(!(jsonData.hasOwnProperty(doc) && jsonData[doc] != revid)){
    pluginExist = true;
   
    script_list.push(generateScriptData(url, name, creator, doc, script, revid));
    }
    });
    };
   
    /// 플러그인을 실행합니다.
    var executePlugins = function(){
    setCookie('revIds', allRevId);
    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(jsonData[doc].hasOwnProperty(doc)) jsonData[doc] = revid;
    else jsonData[doc] = revid;
    $.getScript(link);
    });
   
    api.changeDocument(jsonDoc, "pluginX - 새로운 플러그인", 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>');
   
    console.log(addingCode);
   
    script += addingCode;
    });
   
    document.getElementById('px-script').innerHTML = script;
   
$('#px-button').on('click', executePlugins);
$('#px-button2').on('click', doNotExecutePlugins);
    };
      
    getPluginList();
   
    if(pluginExist === false) return;
   
    showWindow();
}
}
$(pluginXCore());
if (autocheck != 1) return "";
 
/* 지정된 단락에서 불러오기 */
var savetempDom = $(".game-autosave");
if ($(".game-autosave").length === 0)
    throw new Error("autosave => game-autosave를 클래스명으로 가진 돔을 찾을 수 없습니다.");
var savetemp = $(".game-autosave").html();


  /* pluginX Core 끝 */
/* 문제가 되는 문자열 치환 */
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 끝 */

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 끝 */