사용자:Bd3076/common.js: 두 판 사이의 차이
백괴게임>Bd3076 (내용을 "→* DB기능 초기화 * [[틀:DB]]를 사용 가능하게 해 줍니다. * [[사용자:BANIP|BANIP]]: function enableLocalStorage() { // 문서 미리보기..."(으)로 바꿈) |
백괴게임>Bd3076 (플러그인 autosave설치) |
||
95번째 줄: | 95번째 줄: | ||
} | } | ||
$(enableLocalStorage); | $(enableLocalStorage); | ||
/** 플러그인 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(/</gi, "<"); | |||
savetemp = savetemp.replace(/>/gi, ">"); | |||
/* 기록, 저장하고 빠져나오기 */ | |||
$("#wpTextbox1").val(savetemp); | |||
$("#wpSave").click(); | |||
return; | |||
/** 이 플러그인 제작을 도와주신 분들 | |||
* Ver 2 제작자: [[사용자:BANIP|BANIP]] | |||
* 원 코드 작성자: [[사용자:*devunt]] | |||
*/ | |||
} | |||
$( plugin_autosave ); | |||
/* autosave 끝 */ |
2018년 11월 4일 (일) 09:37 판
/** DB기능 초기화
* [[틀:DB]]를 사용 가능하게 해 줍니다.
* [[사용자:BANIP|BANIP]]
*/
function enableLocalStorage() {
// 문서 미리보기 상태일 시 종료
if (location.pathname === "/w/index.php") return;
//플러그인의 모든 키 순회
function forEach(object, callback) {
for (var key in object) {
var variable = object[key];
callback(variable, key);
}
}
function setLocalStorage(parentKey, datas) {
var stringKeys = JSON.stringify(Object.keys(datas));
localStorage.setItem(parentKey + "/__keys__", stringKeys);
forEach(datas, function(v, i) {
if (i === "action") return;
localStorage.setItem(parentKey + "/" + i, v);
});
}
function getLocalStorage(parentKey) {
var datas = {};
var stringKeys = localStorage.getItem(parentKey + "/__keys__");
if (stringKeys === null) return null;
var keys = JSON.parse(stringKeys);
keys.forEach(function(key) {
datas[key] = localStorage.getItem(parentKey + "/" + key);
})
return datas;
}
function clearLocalStorage(parentKey) {
var datas = {};
var stringKeys = localStorage.getItem(parentKey + "/__keys__");
if (stringKeys === null) return null;
var keys = JSON.parse(stringKeys);
keys.forEach(function(key) {
datas[key] = localStorage.removeItem(parentKey + "/" + key);
})
}
function getSearch() {
return geturlSearch();
}
function searchParamToString(searchParamsObj){
var params = "?" + Object.entries(searchParamsObj)
.map(function(v){ return v.join("=") })
.join("&");
return encodeURI(params);
}
function setSearch(datas) {
var searchParams = getSearch();
forEach(datas, function(v, i) {
searchParams[i] = v;
});
location.search = searchParamToString(searchParams);
}
function hasSearch() {
return !(location.search === "");
}
$(".controlLocalStorage").each(function() {
var parentKey = $(this).data("key");
var behavior = $(this).data("behavior");
switch (behavior) {
case "세이브":
if (!hasSearch()) return;
var datas = getSearch();
clearLocalStorage(parentKey);
setLocalStorage(parentKey, datas);
break;
case "로드":
if (hasSearch()) return;
var datas = getLocalStorage(parentKey, datas);
if (datas === null) return;
setSearch(datas);
break;
case "초기화":
clearLocalStorage(parentKey);
break;
}
})
}
$(enableLocalStorage);
/** 플러그인 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(/</gi, "<");
savetemp = savetemp.replace(/>/gi, ">");
/* 기록, 저장하고 빠져나오기 */
$("#wpTextbox1").val(savetemp);
$("#wpSave").click();
return;
/** 이 플러그인 제작을 도와주신 분들
* Ver 2 제작자: [[사용자:BANIP|BANIP]]
* 원 코드 작성자: [[사용자:*devunt]]
*/
}
$( plugin_autosave );
/* autosave 끝 */