diff --git a/frontend/textbooks.html b/frontend/textbooks.html index 2f2923e..7efa342 100644 --- a/frontend/textbooks.html +++ b/frontend/textbooks.html @@ -479,6 +479,15 @@ /* Фаза 5: открыть связанную симуляцию из карточки учебника (не уходя в учебник). */ function openLabSim(simId, ev) { if (ev) ev.stopPropagation(); + // Страховка: если «Лаборатория» отключена — не открываем (кнопка и так скрыта + // kill-switch'ем). Админ имеет доступ всегда (admin-override). + try { + const u = LS.getUser && LS.getUser(); + if (!(u && u.role === 'admin')) { + const f = JSON.parse(localStorage.getItem('ls_feat_cache') || 'null'); + if (f && f.lab === false) { if (LS.toast) LS.toast('Лаборатория отключена', 'warn'); return; } + } + } catch (e) { /* нет кэша — открываем как раньше */ } location.href = '/lab?sim=' + encodeURIComponent(simId); } window.openLabSim = openLabSim; diff --git a/js/api.js b/js/api.js index 3bdd26d..b672a90 100644 --- a/js/api.js +++ b/js/api.js @@ -866,7 +866,10 @@ const FEATURE_HREFS = { матчит, поэтому прячем по СТАБИЛЬНОМУ id #hc-lab (аналогично pet/чтение). */ const FEATURE_WIDGETS = { flashcards: ['#w-flashcard'], - lab: ['#hc-lab'], + // #hc-lab — hero-карточка дашборда; .tb-lab-btn — кнопка «открыть связанную + // симуляцию» на карточках каталога учебников (openLabSim → /lab?sim=…). Это + //