terms: per-term installer visibility toggles + universal delete (v0.3.4)
- _meta.json: customLabels -> terms.{label,showInInstaller,showInInstallerRp}
- Drop builtin protection; any term kind can be deleted/added/toggled
- New public route /manifest/terms/<pack>/index.json for installer term lists
- Installers fetch terms:list dynamically; skip agreement step if list empty
- Term editor: 2 visibility checkboxes (설치기 / 리소스팩 설치기), multi-select
- Migration from old schema preserves custom labels (default: visible in both)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -149,15 +149,38 @@ function renderStep1() {
|
||||
}
|
||||
|
||||
// 약관 동의 페이지: 음악퀴즈 선택 직후, 싱글/멀티 선택(step2) 진입 전에 노출.
|
||||
// 메인 설치기는 맵·모드·설치기 세 약관을 모두 확인·동의해야 다음 단계로 갈 수 있다.
|
||||
// v0.3.4~ : 어떤 약관을 표시할지는 사이트(/manifest/terms/<pack>/index.json) 가
|
||||
// 결정. 메인 인스톨러용으로 표시 토글된 항목만 받아 탭을 만든다. 목록이 비면 약관 단계를 건너뛴다.
|
||||
function renderAgreement() {
|
||||
setActiveStep(1)
|
||||
clearPage()
|
||||
var KINDS = [
|
||||
{ id: 'map', tab: tt('agreement.tabMap') },
|
||||
{ id: 'mod', tab: tt('agreement.tabMod') },
|
||||
{ id: 'installer', tab: tt('agreement.tabInstaller') }
|
||||
]
|
||||
var loadingSection = document.createElement('section')
|
||||
loadingSection.className = 'page'
|
||||
loadingSection.innerHTML = '<h2>' + tt('agreement.heading') + '</h2>' +
|
||||
'<p class="formMessage">' + tt('agreement.loading') + '</p>'
|
||||
pageHost.appendChild(loadingSection)
|
||||
|
||||
installerApi.getTermsList().then(function (res) {
|
||||
if (!res || !res.ok) {
|
||||
// 목록 조회 실패면 약관 단계를 건너뛴다 (서버가 구버전일 수도 있으므로 차단보다 통과 선호).
|
||||
renderStep2()
|
||||
return
|
||||
}
|
||||
var terms = (res.terms || []).map(function (t) {
|
||||
return { id: t.kind, tab: t.label }
|
||||
})
|
||||
if (terms.length === 0) {
|
||||
renderStep2()
|
||||
return
|
||||
}
|
||||
clearPage()
|
||||
renderAgreementWithKinds(terms)
|
||||
}).catch(function () {
|
||||
renderStep2()
|
||||
})
|
||||
}
|
||||
|
||||
function renderAgreementWithKinds(KINDS) {
|
||||
var section = document.createElement('section')
|
||||
section.className = 'page'
|
||||
section.innerHTML =
|
||||
|
||||
Reference in New Issue
Block a user