feat(rgpd): política de privacidade e termos, mapa a pedido, fotos locais, retenção, tema claro/escuro
- Política de privacidade reescrita: tabela de dados/finalidades/fundamento (inclui os pedidos de aula, inscrição e eventos com IP), prazos concretos, subcontratantes, Google Maps e reviews, cookies. Termos e condições novos (/home/termos), no rodapé e no sitemap. Campos [ENTRE PARÊNTESES RETOS] e revisão por jurista pendentes antes de publicar no domínio real. - Google Maps só carrega ao carregar em «Mostrar mapa» (map_click_to_load); as fotos dos autores das reviews são guardadas pelo servidor em uploads/reviews/ e servidas localmente (review_avatar_url). - Retenção que a política declara, aplicada pelo cron (04:00): leads com mais de 12 meses → lixeira; blocked_submissions e outbox de segurança apagados aos 90 dias (trash_retention_sweep, auditado). - Backoffice e login com tema claro/escuro/automático: data-bs-theme aplicado no <head> antes do CSS (sem flash), escolha em localStorage, segue o sistema em tempo real, color-scheme e theme-color para os dois. Cores próprias passaram a variáveis do Bootstrap. lang="pt-PT". Testado numa cópia da BD de produção: 72/72 verificações. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
04c8c83e66
commit
b202262da0
16 files changed
+297
-34
No files matched your search
@@ -26,6 +26,8 @@
|
||||
</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>
|
||||
|
||||
@@ -9,6 +9,8 @@ $page_meta = [
|
||||
'Box de CrossFit em Mira (Lagoa). Aulas para todos os níveis com treinadores certificados. Marca a tua aula experimental no CrossFit 3070!'],
|
||||
'privacidade' => ['Política de Privacidade | FitMe 3070',
|
||||
'Política de privacidade do FitMe 3070 — como recolhemos, usamos e protegemos os teus dados pessoais.'],
|
||||
'termos' => ['Termos e Condições | FitMe 3070',
|
||||
'Termos e condições de utilização do website do FitMe 3070.'],
|
||||
];
|
||||
// The gym's homepage uses the gym's own SEO title/description when set
|
||||
// (Gestão → Ginásios); a new gym without them gets a generic one from its name
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="map" id="map">
|
||||
<?= clean_map_embed($info['google_maps'] ?? '') ?>
|
||||
<?= map_click_to_load(clean_map_embed($info['google_maps'] ?? ''), (string) ($info['google_maps_link'] ?? '')) ?>
|
||||
</div>
|
||||
Reference in new issue
Block a user