Replace distribution JSON editor with form UI
Some checks failed
Build / release (macos-latest) (push) Has been cancelled
Build / release (ubuntu-latest) (push) Has been cancelled
Build / release (windows-latest) (push) Has been cancelled
Windows Smoke Test / windows-smoke (push) Has been cancelled

This commit is contained in:
2026-05-06 03:15:30 +09:00
parent 7c7357e44e
commit 9ab8d88fd5
5 changed files with 228 additions and 17 deletions

View File

@@ -116,12 +116,12 @@
<div class="uploadField">
<input id="field-distributionUrl" type="text" autocomplete="off">
<button type="button" class="secondaryAction uploadButton" data-upload-target="distributionUrl" data-upload-accept=".json,application/json">JSON 업로드</button>
<button type="button" id="editDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('edit')">JSON 편집</button>
<button type="button" id="editDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('edit')"> 편집</button>
<button type="button" id="createDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('create')">새로 만들기</button>
</div>
</label>
<div class="fieldHelpText fieldBlockFull">
distribution.json은 여기서 직접 업로드하거나 JSON 편집기로 새로 만들 수 있습니다.
distribution.json은 여기서 직접 업로드하거나, 아래 편집기에서 설명을 보며 입력 폼으로 만들 수 있습니다.
</div>
</div>
</section>
@@ -195,12 +195,88 @@
<div>
<span class="eyebrow">Distribution Editor</span>
<h3>distribution.json 편집</h3>
<p id="distributionEditorHint">프로필에 연결할 distribution.json 내용을 사이트 안에서 직접 관리합니다.</p>
<p id="distributionEditorHint">프로필에 연결할 distribution.json 내용을 사이트 안에서 입력 폼으로 관리합니다.</p>
</div>
<button type="button" id="closeDistributionEditorButton" class="secondaryAction" onclick="window.__launcherAdminCloseDistributionEditor && window.__launcherAdminCloseDistributionEditor()">닫기</button>
</div>
<div id="distributionEditorStatus" class="statusBanner" hidden></div>
<textarea id="distributionEditorTextarea" class="distributionTextarea" spellcheck="false"></textarea>
<div id="distributionEditorSummary" class="fieldSection distributionSummary">
<div class="sectionHeader">
<h3>현재 보존되는 고급 정보</h3>
</div>
<div class="fieldGrid">
<div class="fieldBlock">
<span>모듈 수</span>
<div id="distributionModuleCount" class="distributionSummaryValue">0개</div>
</div>
<div class="fieldBlock">
<span>추가 서버 수</span>
<div id="distributionAdditionalServerCount" class="distributionSummaryValue">0개</div>
</div>
<div class="fieldHelpText fieldBlockFull">
이 편집기는 첫 번째 서버의 기본 정보만 수정합니다. 기존 모듈 목록과 추가 서버 정보는 저장할 때 그대로 보존됩니다.
</div>
</div>
</div>
<form id="distributionEditorForm" class="editorForm distributionEditorForm">
<section class="fieldSection">
<div class="sectionHeader">
<h3>기본 정보</h3>
</div>
<div class="fieldGrid">
<label class="fieldBlock">
<span>distribution 버전</span>
<input id="distribution-field-version" type="text" autocomplete="off" placeholder="1.0.0">
<div class="fieldHelpText">distribution 파일 자체 버전입니다.</div>
</label>
<label class="fieldBlock">
<span>뉴스 RSS 주소</span>
<input id="distribution-field-rss" type="text" autocomplete="off" placeholder="https://example.com/rss.xml">
<div class="fieldHelpText">선택값입니다. 비워두면 뉴스 피드를 사용하지 않습니다.</div>
</label>
</div>
</section>
<section class="fieldSection">
<div class="sectionHeader">
<h3>서버 기본 정보</h3>
</div>
<div class="fieldGrid">
<label class="fieldBlock">
<span>서버 ID</span>
<input id="distribution-field-serverId" type="text" autocomplete="off" placeholder="my-profile">
<div class="fieldHelpText">영문 식별자입니다. 보통 프로필 ID와 비슷하게 맞춥니다.</div>
</label>
<label class="fieldBlock">
<span>서버 이름</span>
<input id="distribution-field-serverName" type="text" autocomplete="off" placeholder="My Profile">
<div class="fieldHelpText">런처 안에 표시될 이름입니다.</div>
</label>
<label class="fieldBlock fieldBlockFull">
<span>서버 설명</span>
<textarea id="distribution-field-serverDescription" rows="4" placeholder="이 distribution이 어떤 클라이언트인지 설명합니다."></textarea>
<div class="fieldHelpText">런처와 설치 흐름에서 사용할 설명입니다.</div>
</label>
<label class="fieldBlock">
<span>배포 버전</span>
<input id="distribution-field-serverVersion" type="text" autocomplete="off" placeholder="1.0.0">
<div class="fieldHelpText">이 프로필의 배포 버전 표기입니다.</div>
</label>
<label class="fieldBlock">
<span>마인크래프트 버전</span>
<input id="distribution-field-minecraftVersion" type="text" autocomplete="off" placeholder="1.20.1">
<div class="fieldHelpText">실제 마크 버전입니다.</div>
</label>
<label class="toggleBlock">
<input id="distribution-field-mainServer" type="checkbox">
<span>기본 서버로 사용</span>
</label>
<label class="toggleBlock">
<input id="distribution-field-autoconnect" type="checkbox">
<span>자동 접속 사용</span>
</label>
</div>
</section>
</form>
<div class="modalActions">
<button type="button" id="loadDistributionTemplateButton" class="secondaryAction" onclick="window.__launcherAdminLoadDistributionTemplate && window.__launcherAdminLoadDistributionTemplate()">샘플 불러오기</button>
<button type="button" id="saveDistributionFileButton" class="primaryAction" onclick="window.__launcherAdminSaveDistributionFile && window.__launcherAdminSaveDistributionFile()">distribution 저장</button>