feat(backoffice,site): Sistema consistente com a frota; horário como acordeão

- Sidebar do backoffice: Backups/Auditoria/IP bans/Geo/Origem das visitas/
  Atualizações deixam de ser um link cada (enumerados à mão) e passam a um
  só link "Sistema" para o índice partilhado do platform-tools
  (platform.php?tool=index), como a fotografia/design/dance já fazem — uma
  ferramenta nova no platform-tools passa a aparecer sozinha, sem link novo
  a escrever aqui. Definições, Mensagens e Comunicações continuam com link
  próprio (são páginas do fitme, não do router).
- Horário de Aulas (home e CrossFit, mesmo componente partilhado): a grelha
  fica fechada por omissão atrás de um botão "Ver Horário das aulas"
  (Bootstrap collapse); clicar em "Horário" na navbar (ou abrir a página já
  com #horario no URL) abre-a de imediato em vez de só rolar até uma secção
  fechada.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
andreandClaude Sonnet 5 committed 2026-09-26 10:14:46 +01:00
1 parent b5bbbd3b5f
commit 4222b8f2e0
4 files changed
+41 -29

No files matched your search

+10 -3
View File
@@ -35,14 +35,20 @@ foreach ($rows as $d) { $grid[$d['dia_semana']][$d['hora_inicio']][] = $d; }
<div class="section-title text-center deco">
<h2><?= htmlspecialchars($schedule_h2) ?></h2>
</div>
<div class="text-center mb-2">
<button type="button" class="schedule-dl-btn" id="scheduleDownloadCf">
<i class="fas fa-download" aria-hidden="true"></i> Guardar horário
<div class="text-center">
<button type="button" class="site-btn" data-bs-toggle="collapse" data-bs-target="#horarioCollapseCf" aria-expanded="false" aria-controls="horarioCollapseCf">
Ver Horário das aulas
</button>
</div>
</div>
</div>
<?php endif; ?>
<div class="collapse" id="horarioCollapseCf">
<div class="text-center mb-4">
<button type="button" class="schedule-dl-btn" id="scheduleDownloadCf">
<i class="fas fa-download" aria-hidden="true"></i> Guardar horário
</button>
</div>
<div class="row">
<div class="col">
<div class="schedule_container">
@@ -82,6 +88,7 @@ foreach ($rows as $d) { $grid[$d['dia_semana']][$d['hora_inicio']][] = $d; }
</div>
</div>
</div>
</div>
</div>
</div>
<script>
+14
View File
@@ -111,6 +111,7 @@ $logo_dims = svg_img_dims_attr(dirname(__DIR__, 2) . '/' . $logo_rel);
sections.push({ link: link, target: target, id: url.hash });
link.addEventListener('click', function(e) {
e.preventDefault();
openHorarioIfNeeded(url.hash);
smoothScrollTo(target, 600);
history.pushState(null, null, url.hash);
var navCollapse = document.getElementById('navbarSupportedContent');
@@ -120,6 +121,19 @@ $logo_dims = svg_img_dims_attr(dirname(__DIR__, 2) . '/' . $logo_rel);
});
});
/* Horário de Aulas is a closed accordion (button "Ver Horário das aulas") —
clicking the navbar link (or landing on #horario directly) should open
it right away instead of scrolling to a section that still needs an
extra click. */
function openHorarioIfNeeded(hash) {
if (hash !== '#horario') return;
var el = document.getElementById('horarioCollapse');
if (el && window.bootstrap) {
bootstrap.Collapse.getOrCreateInstance(el, { toggle: false }).show();
}
}
openHorarioIfNeeded(window.location.hash);
/* ── Scroll-spy: highlight current section ──────────────────────────── */
// Measure each section against the viewport with getBoundingClientRect:
// a link is "current" only while the line just below the navbar sits