본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
도움말
최근 바뀜
게임 목록
임의의 게임으로
Top 20
청사진
커뮤니티
오락실
토론란
발전소
추천 게임
게임제작도움방
자매 프로젝트
리버티책
오사인덱스
진실위키
큰숲백과
위키연합회의장
연합회의장
사이트 개발 서버
개발 서버
리버티게임
검색
검색
보이기
계정 만들기
로그인
개인 도구
계정 만들기
로그인
로그아웃한 편집자를 위한 문서
더 알아보기
기여
토론
토론란
과
발전소
에서 진행되는 토의에 많은 참여 바랍니다.
미디어위키: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-views", "#", "메타데이터 편집", "metadata-edittab", "메타데이터를 편집합니다", 'metadataedit', '#ca-history'); metadataTab.addEventListener('click', (ev) => { var targetJSON = `${document.location.origin}/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.width = "800px"; 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/LibertygameWikiKorea/json-editor@latest/dist/jsoneditor.js"), fetch(`${document.location.origin}/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('메타데이터 편집기 로딩 실패\n'+e)}); }; $(addJSONEditor);
미디어위키:Gadget-MetadataEditor.js
문서로 돌아갑니다.