fix(lab): значок «связанной симуляции» на карточках учебников не скрывался при выключенной лаборатории
В каталоге учебников (textbooks.html) у карточек есть кнопка .tb-lab-btn «открыть связанную симуляцию» (openLabSim → /lab?sim=…). Это <button onclick>, а не <a href="/lab">, поэтому kill-switch `[href="/lab"]` её не ловил, и значок-колба оставался при отключённой «Лаборатории». Фикс: добавил `.tb-lab-btn` в FEATURE_WIDGETS.lab → api.js скрывает её через инъекцию при lab=false (работает и без ls.css). Плюс страховка в openLabSim: при lab=false не открываем (тост «Лаборатория отключена»); админ — всегда (admin-override). Verified vm-смоук на реальном api.js 4/4 (lab off → .tb-lab-btn скрыта; lab on → нет; admin → ничего). node --check api.js + инлайн textbooks.html. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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=…). Это
|
||||
// <button onclick>, а не <a href="/lab">, поэтому [href="/lab"] её не ловит.
|
||||
lab: ['#hc-lab', '.tb-lab-btn'],
|
||||
pet: ['#hc-pet'],
|
||||
textbooks: ['#hc-read'],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user