본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
게임 목록
임의의 게임으로
커뮤니티
리버티게임 본진
리버티게임(개발)
검색
검색
보이기
계정 만들기
로그인
개인 도구
계정 만들기
로그인
미디어위키:Gadget-MetadataEditor.js 문서 원본 보기
메시지
토론
English
읽기
원본 보기
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
원본 보기
역사 보기
새로 고침
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보
축약된 URL 얻기
보이기
사이드바로 이동
숨기기
←
미디어위키:Gadget-MetadataEditor.js
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다.
이 문서는
관리자
만이 수정할 수 있습니다. 내용의 변경이 필요하다면
관리자 요청
에 편집 요청을 남겨 주세요.
모든 방문자에게 영향을 미칠 수 있기 때문에 이 자바스크립트 문서의 편집 권한이 없습니다.
문서의 원본을 보거나 복사할 수 있습니다.
var metadata_schema; var jsonEditorContainer; var metadata_editorvalue; let editor; const saveToDocument = (ev) => { const jsonValue = editor.getValue(); if (!jsonValue) { mw.notify("메타데이터를 저장할 수 없습니다.", {type: "error"}); return; } else if (editor.validate().length) { console.log(editor.getValue()); mw.notify("메타데이터가 적절한지 확인하는 데에 실패했습니다.", {type: "error"}); return; } const api = new mw.Api(); api.postWithEditToken( { "action": "edit", "title": mw.config.get( "wgPageName" ) + "/game.json", "text": JSON.stringify(jsonValue), "summary": "메타데이터 수정", "contentmodel": "json" } ).then((result) =>{ mw.notify("메타데이터를 저장했습니다!", {type: "success"}); }).catch((error, result) => { mw.notify("메타데이터 저장 실패!" + error + " -> " + JSON.stringify(result), {type: "error"}); }); }; const addMetadataTab = (resultPromise) => { resultPromise.then((result) => { metadata_schema = result; metadata_editorvalue = document.querySelector('#value'); // JSONEditor.defaults.languages.ko = TRANSLATION; JSONEditor.defaults.language = "ko"; // 탭 추가 let metadataTab = mw.util.addPortletLink("p-associated-pages", "#", "메타데이터 편집", "metadata-edittab", "메타데이터를 편집합니다"); metadataTab.addEventListener('click', (ev) => { var targetJSON = `https://dev.libertygame.work/index.php/${mw.config.get("wgPageName")}/game.json?action=raw`; fetch(targetJSON).then(function(result){return result.json(); }).then(function (response) { document.getElementById("jsoneditor-container").style.display = "block"; editor = new JSONEditor(jsonEditorContainer, { mode: 'tree', schema: metadata_schema, theme: 'tailwind', iconlib: 'openiconic', keep_oneof_values: false, disable_edit_json: true, disable_collapse : true, array_controls_top : true, startval:response }); }).catch((e) => {console.log('JSON 에디터 로딩 후 JSON 타겟 가져오기 실패')}); }); // 메타데이터 편집기 추가 let metadataEditor = document.createElement("div"); metadataEditor.id = "jsoneditor-container"; metadataEditor.style.display = "none"; metadataEditor.style['background-color'] = "#bbeebb"; metadataEditor.style.position= "fixed"; metadataEditor.style["z-index"] = 8; metadataEditor.style.top = "80px"; document.getElementById("bodyContent").appendChild(metadataEditor); jsonEditorContainer = metadataEditor; let metadataCloseButton = document.createElement("button"); metadataCloseButton.onclick = (ev) => {ev.target.parentElement.style.display = "none";}; metadataCloseButton.innerText = "편집기 닫기"; metadataEditor.appendChild(metadataCloseButton); let metadataSaveButton = document.createElement("button"); metadataSaveButton.onclick = saveToDocument; metadataSaveButton.innerText = "저장하기"; metadataEditor.appendChild(metadataSaveButton); }); }; const addJSONEditor = () => { const title = mw.config.get("wgPageName"); const api = new mw.Api(); Promise.all([ api.getCategories(title), mw.loader.getScript("https://cdn.jsdelivr.net/gh/@Xen-alpha/json-editor@latest/dist/jsoneditor.js"), fetch("https://dev.libertygame.work/index.php/%EB%A6%AC%EB%B2%84%ED%8B%B0%EA%B2%8C%EC%9E%84:%EA%B2%8C%EC%9E%84_%EB%A9%94%ED%83%80%EB%8D%B0%EC%9D%B4%ED%84%B0/%EC%8A%A4%ED%82%A4%EB%A7%88.json?action=raw") ]).then((values) =>{ if (!values[0]) return; let esc = true; for (const category of values[0]){ if (category.title === "리버티게임"){ esc = false; } } if (esc) return; addMetadataTab(values[2].json()); }).catch((e) => {console.log('메타데이터 편집기 로딩 실패')}); }; $(addJSONEditor);
미디어위키:Gadget-MetadataEditor.js
문서로 돌아갑니다.