- store.ts: 약관을 manifest/terms/<packKey>/ 폴더별로 저장. 첫 접근 시 legacy 전역 .md 파일을 시드로 자동 복사한다. - importTerms() 추가: 다른 음악퀴즈의 .md + _meta.json 을 현재 pack 으로 복사한다. 동일 kind 는 source 값으로 덮어쓴다. - /op/agreement 라우트를 세 단계로 분리: · /op/agreement → 음악퀴즈 카드 선택 페이지 · /op/agreement/:packName → 해당 pack 의 약관 목록 + 추가 + 불러오기 · /op/agreement/:packName/:kind → 에디터 - 공개 라우트도 /manifest/terms/:packKey/:fileName 으로 변경. - 설치기 main.ts: state.selectedKey 를 약관 URL 에 포함하도록 수정 (메인 + rp 양쪽). pack 미선택 상태에서는 에러 반환. - termsEditor.js: PACK_KEY 를 받아 저장 URL 에 포함. - 다른 음악퀴즈 후보 select + 확인 모달 + locale 추가. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
<!doctype html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title><%= t('terms.browserTitle') %></title>
|
|
<link rel="stylesheet" href="/static/styles.css" />
|
|
</head>
|
|
<body class="siteBody">
|
|
<%- include('../partials/navbar', { userId }) %>
|
|
|
|
<main class="pageWrap">
|
|
<section class="dashboardHeader">
|
|
<div>
|
|
<a class="ghostLink" href="/op/dashboard"><%= t('common.back') %></a>
|
|
<h1 style="margin-top:20px;"><%= t('terms.title') %></h1>
|
|
</div>
|
|
</section>
|
|
|
|
<p class="muted"><%= t('terms.pickPackHint') %></p>
|
|
|
|
<section class="cardRow horizontalScroll">
|
|
<% if (items.length === 0) { %>
|
|
<p class="muted"><%= t('site.empty') %></p>
|
|
<% } %>
|
|
<% items.forEach(function (item) { %>
|
|
<article class="packCard">
|
|
<a class="cardLink" href="/op/agreement/<%= item.key %>">
|
|
<h2><%= item.definition ? item.definition.name : item.key %></h2>
|
|
<p class="muted"><%= item.key %>.json</p>
|
|
<% if (item.definition) { %>
|
|
<ul class="metaList">
|
|
<li><%= t('dashboard.mcShort') %> <%= item.definition.mcVersion %></li>
|
|
<li><%= t('site.platform') %> <%= item.definition.platform.type %></li>
|
|
<li><%= t('site.modsFolder') %> <%= item.definition.modsFolder || t('site.noneFallback') %></li>
|
|
</ul>
|
|
<% } %>
|
|
</a>
|
|
</article>
|
|
<% }) %>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|