feat(admin): тумблер вкл/выкл для экзамен-модулей (exam-prep)
Не было UI для управления exam_tracks.enabled (только флаг в БД, ставился
миграцией). Добавлена админ-секция «Экзамен-модули»:
- backend exam-prep.js: GET /admin/tracks (все треки, вкл. выключенные, + число
заданий) и PATCH /admin/track (exam_key, enabled), обе requireRole('admin').
Пути без :examKey, чтобы не задеть гейт content_access.
- frontend: секция sections/exams.js (список треков + переключатель enabled),
вкладка в admin.html (admin-only через ADMIN_ONLY_TABS, locked для не-админов),
регистрация в admin.js (ROUTE_TO_SECTION).
Выключенный трек скрыт у учеников и пропадает из каталога прав доступа (тот
берёт exam_tracks WHERE enabled=1). Доступ ученикам по-прежнему в «Доступ · контент».
Требует перезапуска бэкенда + Ctrl+F5.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1067,6 +1067,9 @@
|
||||
<button class="admin-nav-item" data-tab="sims" onclick="switchTab(this)" id="btn-tab-sims" style="display:none">
|
||||
<i data-lucide="atom" style="width:15px;height:15px"></i> Симуляции
|
||||
</button>
|
||||
<button class="admin-nav-item" data-tab="exams" onclick="switchTab(this)" id="btn-tab-exams" style="display:none">
|
||||
<i data-lucide="clipboard-check" style="width:15px;height:15px"></i> Экзамен-модули
|
||||
</button>
|
||||
<button class="admin-nav-item" data-tab="games" onclick="switchTab(this)" id="btn-tab-games" style="display:none">
|
||||
<i data-lucide="gamepad-2" style="width:15px;height:15px"></i> Игры
|
||||
</button>
|
||||
@@ -1616,6 +1619,16 @@
|
||||
<div id="topics-list"></div>
|
||||
</div>
|
||||
|
||||
<!-- ── Экзамен-модули (вкл/выкл) ── -->
|
||||
<div class="tab-pane" id="tab-exams">
|
||||
<div class="section-title">Экзамен-модули</div>
|
||||
<p style="color:var(--muted);font-size:13px;margin:4px 0 16px;max-width:760px">
|
||||
Включение/выключение модулей подготовки к экзамену (<code>/exam-prep</code>). Выключенный модуль
|
||||
скрыт у учеников и не показывается в каталоге прав доступа. Доступ ученикам открывается отдельно
|
||||
в разделе «Доступ · контент» → «Экзамены».</p>
|
||||
<div class="perm-grid" id="exams-grid"></div>
|
||||
</div>
|
||||
|
||||
<!-- ── Доступ к учебникам / экзаменам ── -->
|
||||
<div class="tab-pane" id="tab-access">
|
||||
<div class="section-title">Доступ к учебникам и экзаменам</div>
|
||||
@@ -2136,6 +2149,7 @@
|
||||
<script src="/js/admin/sections/overview.js"></script>
|
||||
<script src="/js/admin/sections/sublog.js"></script>
|
||||
<script src="/js/admin/sections/sims.js"></script>
|
||||
<script src="/js/admin/sections/exams.js"></script>
|
||||
<script src="/js/admin/sections/games.js"></script>
|
||||
<script src="/js/admin/sections/assistant.js"></script>
|
||||
<script src="/js/admin/sections/imggen.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user