From 703c4b5edf4c330632891883b78395b7feb64e7d Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Wed, 20 May 2026 20:16:26 +0300 Subject: [PATCH] feat(admin): surface classroom feature toggle in tab-games MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The feature_classroom_enabled flag was fully wired in backend (classroom/sessions.js:11-14 returns 403 when '0', initialized in legacy-migrate.js:870 to '1') but had no UI control — admin could only flip it via direct SQL. - adminController.updateFeatures: classroom was ALREADY in allowed list - admin/sections/games.js: new toggle row with video icon added to GAME_FEATURES - js/api.js hideDisabledFeatures: classroom path mapping added ('/classroom') Co-Authored-By: Claude Sonnet 4.6 --- frontend/js/admin/sections/games.js | 1 + js/api.js | 1 + 2 files changed, 2 insertions(+) diff --git a/frontend/js/admin/sections/games.js b/frontend/js/admin/sections/games.js index 0c9b2f4..69cd05f 100644 --- a/frontend/js/admin/sections/games.js +++ b/frontend/js/admin/sections/games.js @@ -15,6 +15,7 @@ { key: 'board', label: 'Доска', desc: 'Классная доска с объявлениями, постами и обсуждениями', icon: 'layout-dashboard'}, { key: 'biochem', label: 'Биохимия', desc: 'Молекулярный редактор, задачи на построение молекул и реакции', icon: 'flask-conical' }, { key: 'live_quiz', label: 'Живая викторина', desc: 'Синхронная викторина в реальном времени для всего класса', icon: 'radio' }, + { key: 'classroom', label: 'Онлайн-уроки (classroom)', desc: 'Синхронные онлайн-уроки с доской и видео', icon: 'video' }, ]; const FS_FEATURES = [ diff --git a/js/api.js b/js/api.js index 4bdbbbf..7684d50 100644 --- a/js/api.js +++ b/js/api.js @@ -801,6 +801,7 @@ async function hideDisabledFeatures() { board: ['/board'], biochem: ['/biochem', '/biochem-library', '/biochem-reactions'], live_quiz: ['/live-quiz'], + classroom: ['/classroom'], exam9: ['/exam9', '/exam9.html'], textbooks: ['/textbooks', '/textbooks.html', '/textbook'], };