Harden admin modal button handling
This commit is contained in:
@@ -396,12 +396,14 @@ async function uploadIntoField(targetField, accept){
|
||||
|
||||
function openDistributionEditorModal(){
|
||||
distributionEditorModal.hidden = false
|
||||
distributionEditorModal.style.display = 'flex'
|
||||
document.body.style.overflow = 'hidden'
|
||||
clearDistributionEditorStatus()
|
||||
}
|
||||
|
||||
function closeDistributionEditorModal(){
|
||||
distributionEditorModal.hidden = true
|
||||
distributionEditorModal.style.display = 'none'
|
||||
document.body.style.overflow = ''
|
||||
clearDistributionEditorStatus()
|
||||
}
|
||||
@@ -513,35 +515,6 @@ async function saveDistributionFile(){
|
||||
}
|
||||
|
||||
function bindDistributionEditor(){
|
||||
editDistributionButton.addEventListener('click', async () => {
|
||||
await openDistributionEditor('edit')
|
||||
})
|
||||
|
||||
createDistributionButton.addEventListener('click', async () => {
|
||||
await openDistributionEditor('create')
|
||||
})
|
||||
|
||||
closeDistributionEditorButton.addEventListener('click', () => {
|
||||
closeDistributionEditorModal()
|
||||
})
|
||||
|
||||
loadDistributionTemplateButton.addEventListener('click', async () => {
|
||||
try {
|
||||
await loadDistributionTemplate()
|
||||
updateDistributionEditorHint(getSelectedProfile(), '')
|
||||
showStatus('distribution 템플릿을 다시 불러왔습니다.', 'success')
|
||||
showDistributionEditorStatus('샘플을 다시 불러왔습니다.', 'success')
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
showStatus(error instanceof Error ? error.message : 'distribution 템플릿을 불러오지 못했습니다.', 'error')
|
||||
showDistributionEditorStatus(error instanceof Error ? error.message : 'distribution 템플릿을 불러오지 못했습니다.', 'error')
|
||||
}
|
||||
})
|
||||
|
||||
saveDistributionFileButton.addEventListener('click', async () => {
|
||||
await saveDistributionFile()
|
||||
})
|
||||
|
||||
distributionEditorModal.addEventListener('click', (event) => {
|
||||
if(event.target === distributionEditorModal){
|
||||
closeDistributionEditorModal()
|
||||
@@ -555,6 +528,31 @@ function bindDistributionEditor(){
|
||||
})
|
||||
}
|
||||
|
||||
window.__launcherAdminOpenDistributionEditor = async (mode) => {
|
||||
await openDistributionEditor(mode)
|
||||
}
|
||||
|
||||
window.__launcherAdminCloseDistributionEditor = () => {
|
||||
closeDistributionEditorModal()
|
||||
}
|
||||
|
||||
window.__launcherAdminLoadDistributionTemplate = async () => {
|
||||
try {
|
||||
await loadDistributionTemplate()
|
||||
updateDistributionEditorHint(getSelectedProfile(), '')
|
||||
showStatus('distribution 템플릿을 다시 불러왔습니다.', 'success')
|
||||
showDistributionEditorStatus('샘플을 다시 불러왔습니다.', 'success')
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
showStatus(error instanceof Error ? error.message : 'distribution 템플릿을 불러오지 못했습니다.', 'error')
|
||||
showDistributionEditorStatus(error instanceof Error ? error.message : 'distribution 템플릿을 불러오지 못했습니다.', 'error')
|
||||
}
|
||||
}
|
||||
|
||||
window.__launcherAdminSaveDistributionFile = async () => {
|
||||
await saveDistributionFile()
|
||||
}
|
||||
|
||||
async function loadMeta(){
|
||||
const response = await fetch('/api/meta')
|
||||
const meta = await response.json()
|
||||
@@ -694,6 +692,7 @@ function bindTopLevelActions(){
|
||||
}
|
||||
|
||||
async function bootstrap(){
|
||||
closeDistributionEditorModal()
|
||||
bindProfileForm()
|
||||
bindDistributionEditor()
|
||||
bindTopLevelActions()
|
||||
|
||||
@@ -116,8 +116,8 @@
|
||||
<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">JSON 편집</button>
|
||||
<button type="button" id="createDistributionButton" class="secondaryAction">새로 만들기</button>
|
||||
<button type="button" id="editDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('edit')">JSON 편집</button>
|
||||
<button type="button" id="createDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('create')">새로 만들기</button>
|
||||
</div>
|
||||
</label>
|
||||
<div class="fieldHelpText fieldBlockFull">
|
||||
@@ -197,13 +197,13 @@
|
||||
<h3>distribution.json 편집</h3>
|
||||
<p id="distributionEditorHint">프로필에 연결할 distribution.json 내용을 사이트 안에서 직접 관리합니다.</p>
|
||||
</div>
|
||||
<button type="button" id="closeDistributionEditorButton" class="secondaryAction">닫기</button>
|
||||
<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 class="modalActions">
|
||||
<button type="button" id="loadDistributionTemplateButton" class="secondaryAction">샘플 불러오기</button>
|
||||
<button type="button" id="saveDistributionFileButton" class="primaryAction">distribution 저장</button>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user