Harden admin modal button handling
This commit is contained in:
@@ -396,12 +396,14 @@ async function uploadIntoField(targetField, accept){
|
|||||||
|
|
||||||
function openDistributionEditorModal(){
|
function openDistributionEditorModal(){
|
||||||
distributionEditorModal.hidden = false
|
distributionEditorModal.hidden = false
|
||||||
|
distributionEditorModal.style.display = 'flex'
|
||||||
document.body.style.overflow = 'hidden'
|
document.body.style.overflow = 'hidden'
|
||||||
clearDistributionEditorStatus()
|
clearDistributionEditorStatus()
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeDistributionEditorModal(){
|
function closeDistributionEditorModal(){
|
||||||
distributionEditorModal.hidden = true
|
distributionEditorModal.hidden = true
|
||||||
|
distributionEditorModal.style.display = 'none'
|
||||||
document.body.style.overflow = ''
|
document.body.style.overflow = ''
|
||||||
clearDistributionEditorStatus()
|
clearDistributionEditorStatus()
|
||||||
}
|
}
|
||||||
@@ -513,35 +515,6 @@ async function saveDistributionFile(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function bindDistributionEditor(){
|
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) => {
|
distributionEditorModal.addEventListener('click', (event) => {
|
||||||
if(event.target === distributionEditorModal){
|
if(event.target === distributionEditorModal){
|
||||||
closeDistributionEditorModal()
|
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(){
|
async function loadMeta(){
|
||||||
const response = await fetch('/api/meta')
|
const response = await fetch('/api/meta')
|
||||||
const meta = await response.json()
|
const meta = await response.json()
|
||||||
@@ -694,6 +692,7 @@ function bindTopLevelActions(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function bootstrap(){
|
async function bootstrap(){
|
||||||
|
closeDistributionEditorModal()
|
||||||
bindProfileForm()
|
bindProfileForm()
|
||||||
bindDistributionEditor()
|
bindDistributionEditor()
|
||||||
bindTopLevelActions()
|
bindTopLevelActions()
|
||||||
|
|||||||
@@ -116,8 +116,8 @@
|
|||||||
<div class="uploadField">
|
<div class="uploadField">
|
||||||
<input id="field-distributionUrl" type="text" autocomplete="off">
|
<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" 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="editDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('edit')">JSON 편집</button>
|
||||||
<button type="button" id="createDistributionButton" class="secondaryAction">새로 만들기</button>
|
<button type="button" id="createDistributionButton" class="secondaryAction" onclick="window.__launcherAdminOpenDistributionEditor && window.__launcherAdminOpenDistributionEditor('create')">새로 만들기</button>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<div class="fieldHelpText fieldBlockFull">
|
<div class="fieldHelpText fieldBlockFull">
|
||||||
@@ -197,13 +197,13 @@
|
|||||||
<h3>distribution.json 편집</h3>
|
<h3>distribution.json 편집</h3>
|
||||||
<p id="distributionEditorHint">프로필에 연결할 distribution.json 내용을 사이트 안에서 직접 관리합니다.</p>
|
<p id="distributionEditorHint">프로필에 연결할 distribution.json 내용을 사이트 안에서 직접 관리합니다.</p>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" id="closeDistributionEditorButton" class="secondaryAction">닫기</button>
|
<button type="button" id="closeDistributionEditorButton" class="secondaryAction" onclick="window.__launcherAdminCloseDistributionEditor && window.__launcherAdminCloseDistributionEditor()">닫기</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="distributionEditorStatus" class="statusBanner" hidden></div>
|
<div id="distributionEditorStatus" class="statusBanner" hidden></div>
|
||||||
<textarea id="distributionEditorTextarea" class="distributionTextarea" spellcheck="false"></textarea>
|
<textarea id="distributionEditorTextarea" class="distributionTextarea" spellcheck="false"></textarea>
|
||||||
<div class="modalActions">
|
<div class="modalActions">
|
||||||
<button type="button" id="loadDistributionTemplateButton" class="secondaryAction">샘플 불러오기</button>
|
<button type="button" id="loadDistributionTemplateButton" class="secondaryAction" onclick="window.__launcherAdminLoadDistributionTemplate && window.__launcherAdminLoadDistributionTemplate()">샘플 불러오기</button>
|
||||||
<button type="button" id="saveDistributionFileButton" class="primaryAction">distribution 저장</button>
|
<button type="button" id="saveDistributionFileButton" class="primaryAction" onclick="window.__launcherAdminSaveDistributionFile && window.__launcherAdminSaveDistributionFile()">distribution 저장</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user