리버티게임:관리자 요청/2018년 11월: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Bd3076
imported>Hsl0
(보존 이름공간으로 통합)
 
(사용자 11명의 중간 판 26개는 보이지 않습니다)
1번째 줄: 1번째 줄:
<noinclude>{{관리자 요청 보존|2018|11}}</noinclude>
#REDIRECT [[보존:관리자 요청/2018년 11월]]
 
== Common.js 수정 요청 ==
 
DB 플러그인 파트를
<pre>
/** 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);
</pre>
처럼 바꿔주세요. 초기화 기능을 추가했습니다.

2022년 9월 26일 (월) 00:07 기준 최신판