Files
fitme3070.pt/site/includes/footer.php
T
andreandClaude Sonnet 5 1e2068bea2 feat(css): site público passa de Bootstrap 4.3.1 (EOL) para 5.3.3
Auditoria: "Site público em Bootstrap 4.3.1 (EOL); backoffice em
5.3.3" — o backoffice já usa a 5.3.3 vendorizada (assets/vendor/bootstrap5/),
o site público passa a usar a mesma cópia em vez da 4.3.1.

Levantamento antes de mexer: a folha de estilo própria (style.css)
quase não usa classes utilitárias cruas do Bootstrap (grep confirma
zero ml-/mr-/pl-/pr-/float-left/float-right/custom-select/
custom-control/badge-/sr-only/font-weight-/text-left/text-right —
tudo classes próprias como .site-btn). O que precisava de mudar:

- CSS/JS: assets/vendor/bootstrap/ -> assets/vendor/bootstrap5/
  (bundle, inclui Popper).
- Os 7 atributos data-toggle/data-target/data-dismiss (BS4) ->
  data-bs-toggle/data-bs-target/data-bs-dismiss (BS5): toggle da nav
  mobile, os dois modais (aula experimental, inscrição), o botão de
  fechar do alerta. O seletor em main.js que lê data-target também
  mudou para não parar de encontrar os botões.
- .close -> .btn-close (BS5 renomeou o componente; markup sem o
  × interno, que o BS5 desenha via CSS).
- .form-row -> .row (BS4 tinha form-row com gutters menores; BS5 não
  tem, style.css não tinha overrides para form-row, confirmado).
- O apanhado maior: dois <script> inline chamavam
  jQuery('#trialModal').modal('show') ao estilo de plugin jQuery do
  BS4 (para reabrir o modal depois de um erro de submissão) — o BS5
  não regista plugins jQuery nenhuns, isto ficava morto em silêncio.
  Trocado por new bootstrap.Modal(...).show(), a API JS nativa do
  BS5. grep confirma zero outras chamadas .modal()/.collapse()/etc.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 21:47:15 +01:00

44 lines
2.6 KiB
PHP

</main><?php /* opened at the end of site/_open.php */ ?>
<!-- Footer section -->
<footer class="footer-section set-bg fade-in"
data-setbg="<?= base_url(($current_uri_2 ?? '') == 'crossfit' ? 'site/assets/img/footer-bg-cf.jpg' : 'site/assets/img/footer-bg-gym.jpg') ?>">
<?php /* Contact details live in the #contactos section — the footer just carries
social links, the site menu and the mandatory legal links. */ ?>
<div class="container text-center">
<?php if (!empty($info['facebook']) || !empty($info['instagram']) || !empty($info['whatsapp'])): ?>
<div class="social-links footer-social">
<?php if(!empty($info['facebook'])): ?>
<a href="<?= htmlspecialchars($info['facebook']) ?>" target="_blank" rel="noopener" aria-label="Facebook"><i class="fab fa-facebook"></i></a>
<?php endif; ?>
<?php if(!empty($info['instagram'])): ?>
<a href="<?= htmlspecialchars($info['instagram']) ?>" target="_blank" rel="noopener" aria-label="Instagram"><i class="fab fa-instagram"></i></a>
<?php endif; ?>
<?php if(!empty($info['whatsapp'])): ?>
<a target="_blank" href="https://wa.me/<?= htmlspecialchars($info['whatsapp']) ?>" rel="noopener" aria-label="WhatsApp"><i class="fab fa-whatsapp"></i></a>
<?php endif; ?>
</div>
<?php endif; ?>
<ul class="footer-menu">
<?php foreach($navbar as $key => $n): ?>
<li><a href="<?= htmlspecialchars($n) ?>" <?= str_contains($n, '#') ? 'class="smooth-scroll"' : '' ?>><?= $key ?></a></li>
<?php endforeach; ?>
</ul>
<p class="small footer-legal">Este estabelecimento possui livro de reclamações online em <a href="https://www.livroreclamacoes.pt/Pedido/Reclamacao" target="_blank" rel="noopener">www.livroreclamacoes.pt</a></p>
<p class="small footer-legal"><a href="<?= base_url('home/privacidade') ?>">Política de Privacidade</a>
<span class="footer-legal-sep" aria-hidden="true">·</span>
<a href="<?= base_url('home/termos') ?>">Termos e Condições</a>
<?php /* Discreet backoffice entry point — bounces through SSO (id.andmore.pt). */ ?>
<span class="footer-legal-sep" aria-hidden="true">·</span>
<a href="<?= base_url('views/auth/login.php') ?>" class="footer-admin-link" rel="nofollow" aria-label="Acesso reservado" title="Backoffice"><i class="fas fa-lock"></i></a>
</p>
</div>
</footer>
<!-- Scripts: jQuery first (Bootstrap navbar/alerts depend on it), then plugins -->
<?= script_tag('assets/vendor/jquery/jquery-3.7.1.min.js') ?>
<?= script_tag('assets/vendor/bootstrap5/js/bootstrap.bundle.min.js') ?>
<?= script_tag('site/assets/js/main.js') ?>
</body>
</html>