From 51f08368943cd645d61622a0676347706057e30a Mon Sep 17 00:00:00 2001 From: Vladislav Kopnin Date: Thu, 17 Sep 2026 20:41:54 +0300 Subject: [PATCH] Learn: remember expanded sections, open only in the last chapter by default --- .../resources/templates/fragments/base.html | 18 ++++++++++++++++++ .../resources/templates/learn/chapter.html | 5 +++-- .../main/resources/templates/learn/index.html | 7 ++++--- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/web/src/main/resources/templates/fragments/base.html b/web/src/main/resources/templates/fragments/base.html index aadebfa..a981187 100644 --- a/web/src/main/resources/templates/fragments/base.html +++ b/web/src/main/resources/templates/fragments/base.html @@ -35,12 +35,30 @@ function closeModal(id){ var d=document.getElementById(id); if(d) d.close(); } function openModalData(btn){ openModal(btn.dataset.modal); } function closeModalData(btn){ closeModal(btn.dataset.modal); } + function sectionStateKey(id){ return 'lms-section-open:' + id; } + function applySectionState(acc){ + var id = acc.getAttribute('data-section-id'); + var stored = null; + try { stored = id ? localStorage.getItem(sectionStateKey(id)) : null; } catch (e) { /* приватный режим */ } + var open = stored === '1' ? true + : stored === '0' ? false + : acc.getAttribute('data-default-open') === 'true'; + acc.classList.toggle('collapsed', !open); + var btn = acc.querySelector('.sub-toggle'); + if (btn) btn.setAttribute('aria-expanded', open ? 'true' : 'false'); + } + function initSections(){ + document.querySelectorAll('.sub-acc[data-section-id]').forEach(applySectionState); + } function toggleSection(btn){ var acc = btn.closest('.sub-acc'); if (!acc) return; var collapsed = acc.classList.toggle('collapsed'); btn.setAttribute('aria-expanded', collapsed ? 'false' : 'true'); + var id = acc.getAttribute('data-section-id'); + if (id) { try { localStorage.setItem(sectionStateKey(id), collapsed ? '0' : '1'); } catch (e) { /* приватный режим */ } } } + document.addEventListener('DOMContentLoaded', initSections); diff --git a/web/src/main/resources/templates/learn/chapter.html b/web/src/main/resources/templates/learn/chapter.html index b934fa2..7a6f3fd 100644 --- a/web/src/main/resources/templates/learn/chapter.html +++ b/web/src/main/resources/templates/learn/chapter.html @@ -47,12 +47,13 @@
-
+