feat(classroom): открытие любого учебника в онлайн-уроке

Учитель может выбрать любой активный учебник из каталога /api/textbooks
и открыть его в общем iframe для всех участников. По аналогии с симуляциями:

- Backend: контроллер classroom/textbook.js + 4 роута
  (POST/DELETE /:id/textbook, /:id/textbook/nav, /:id/textbook/mode)
  с SSE-событиями classroom_textbook_open|close|nav|mode
- Embed-режим /textbook/:slug?embed=1: сервер injectит CSS+JS-bridge
  перед </head>, скрывая хедер/сайдбар и пересылая клики/скролл наверх
  через postMessage (без правки 40+ HTML-учебников)
- Frontend (classroom.html): кнопка «Учебник» в header, пикер с
  фильтрами по предмету, iframe-панель с режимами демо/свободно,
  relay nav-событий учителя → всем студентам в demo-режиме
This commit is contained in:
Maxim Dolgolyov
2026-05-29 11:41:57 +03:00
parent 21c5ae2d91
commit 068d6c2afe
5 changed files with 482 additions and 0 deletions
@@ -8,5 +8,6 @@ module.exports = {
...require('./classroom/chat'),
...require('./classroom/permissions'),
...require('./classroom/sim'),
...require('./classroom/textbook'),
...require('./classroom/admin'),
};