Remplace le bloc RGPD permanent par une modale de bienvenue au 1er passage
Demande Kévin : mot de bienvenue personnalisé (nom de l'événement) + mention légale RGPD, affiché une fois par événement (localStorage) au lieu d'un bloc toujours visible dans le formulaire. Texte légal conservé à l'identique (docs/rgpd.md), seule la présentation change. Reste consultable à tout moment via un lien "Infos sur tes données" sous le formulaire, qui rouvre la même modale.
This commit is contained in:
@@ -48,6 +48,10 @@ const messageInput = document.getElementById("message-input");
|
||||
const progressText = document.getElementById("progress-text");
|
||||
const submitBtn = document.getElementById("submit-btn");
|
||||
const submitBtnLabel = document.getElementById("submit-btn-label");
|
||||
const welcomeModal = document.getElementById("welcome-modal");
|
||||
const welcomeModalTitle = document.getElementById("welcome-modal-title");
|
||||
const welcomeModalDismiss = document.getElementById("welcome-modal-dismiss");
|
||||
const legalLink = document.getElementById("legal-link");
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// État
|
||||
@@ -201,6 +205,52 @@ function incrementLocalGuestPhotoCount(slug) {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Mot de bienvenue + RGPD — affiché une fois par événement (localStorage),
|
||||
// plutôt qu'en bloc permanent dans le formulaire (décision Kévin 2026-09-16).
|
||||
// Reste ré-ouvrable à tout moment via le lien "Infos sur tes données".
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function welcomeSeenStorageKey(slug) {
|
||||
return `photobooth_welcome_seen_${slug}`;
|
||||
}
|
||||
|
||||
function hasSeenWelcome(slug) {
|
||||
try {
|
||||
return window.localStorage.getItem(welcomeSeenStorageKey(slug)) === "1";
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function markWelcomeSeen(slug) {
|
||||
try {
|
||||
window.localStorage.setItem(welcomeSeenStorageKey(slug), "1");
|
||||
} catch {
|
||||
// Pas grave : la modale se réaffichera simplement à la prochaine visite,
|
||||
// ce n'est pas un risque de conformité (juste redondant pour l'invité).
|
||||
}
|
||||
}
|
||||
|
||||
function openWelcomeModal(eventName) {
|
||||
welcomeModalTitle.textContent = eventName ? `Bienvenue à ${eventName} !` : "Bienvenue !";
|
||||
welcomeModal.hidden = false;
|
||||
}
|
||||
|
||||
function closeWelcomeModal() {
|
||||
welcomeModal.hidden = true;
|
||||
}
|
||||
|
||||
welcomeModalDismiss.addEventListener("click", () => {
|
||||
const slug = getSlugFromPath();
|
||||
if (slug) markWelcomeSeen(slug);
|
||||
closeWelcomeModal();
|
||||
});
|
||||
|
||||
legalLink.addEventListener("click", () => {
|
||||
openWelcomeModal(state.event ? state.event.nom : null);
|
||||
});
|
||||
|
||||
function isHeicFile(file) {
|
||||
const type = (file.type || "").toLowerCase();
|
||||
if (type === "image/heic" || type === "image/heif") return true;
|
||||
@@ -232,6 +282,11 @@ function showForm(event) {
|
||||
errorBlock.hidden = true;
|
||||
successBlock.hidden = true;
|
||||
form.hidden = false;
|
||||
|
||||
const slug = getSlugFromPath();
|
||||
if (slug && !hasSeenWelcome(slug)) {
|
||||
openWelcomeModal(event.nom);
|
||||
}
|
||||
}
|
||||
|
||||
function showError(rawErr, retryAction) {
|
||||
|
||||
Reference in New Issue
Block a user