Ajoute un lien vers le mur depuis la page upload + corrige la mention RGPD

Lien "Voir le mur" dans l'en-tête (permanent) et sur l'écran de succès,
demandé par Kévin. href posé dès que le slug est connu, sans attendre la
réponse de get_public_event.

Corrige un oubli réel : la mention RGPD disait encore "mise à disposition
de l'organisateur" alors que la décision du 2026-09-18 (galerie invité
visible par tous) avait été consignée dans docs/decisions.md sans que le
texte affiché aux invités soit réellement mis à jour. Corrigé dans
docs/rgpd.md et dans la modale de bienvenue réelle.
This commit is contained in:
2026-09-18 09:33:44 +02:00
parent ea3e49cc04
commit c714316974
4 changed files with 75 additions and 16 deletions
+13 -6
View File
@@ -11,12 +11,13 @@ Texte à afficher, de façon visible, sur la page d'upload avant que l'invité
ne dépose une photo :
> En déposant une photo, vous acceptez qu'elle soit stockée temporairement
> dans le cadre de cet événement et mise à disposition de l'organisateur.
> Vos photos sont automatiquement supprimées **7 jours après la date de
> l'événement**, sans action de votre part. Aucune photo n'est utilisée à
> d'autres fins, ni transmise à des tiers. Vous pouvez demander la
> suppression anticipée d'une photo en contactant l'organisateur de
> l'événement.
> dans le cadre de cet événement et **visible par les autres invités de
> l'événement ainsi que par l'organisateur** (galerie commune accessible via
> le même lien/QR code). Vos photos sont automatiquement supprimées
> **7 jours après la date de l'événement**, sans action de votre part.
> Aucune photo n'est utilisée à d'autres fins, ni transmise à des tiers en
> dehors des invités de l'événement. Vous pouvez demander la suppression
> anticipée d'une photo en contactant l'organisateur de l'événement.
## Politique de conservation
@@ -38,6 +39,12 @@ ne dépose une photo :
## Points à valider avec Kévin (et si besoin un juriste) avant V2/V3
- **Galerie invité (2026-09-18)** : les photos/prénoms/messages sont
désormais visibles par tous les invités d'un même événement (pas
seulement par l'organisateur), cf. `docs/decisions.md`. Mention légale
mise à jour en conséquence — à faire valider par un juriste avant V2/V3
comme le reste de cette page, ce changement rend le sujet plus sensible
(données visibles par un groupe plus large que prévu initialement).
- Rédaction définitive des CGU/mentions légales pour un usage commercial
auprès de clients externes (mariages, événementiel pro).
- Statut du client (organisateur) comme responsable de traitement, et de
+21 -10
View File
@@ -31,6 +31,11 @@
</p>
<h1 id="event-name">Ajouter une photo</h1>
<p class="page__kicker">Une photo, un petit mot, et hop dans l'album&nbsp;!</p>
<!-- href posé par upload.js une fois le slug connu (getSlugFromPath) ;
"#" par défaut pour ne jamais pointer nulle part avant ça. Lien
permanent vers le mur, accessible même sans avoir uploadé — ajouté
suite à la demande de Kévin le 2026-09-18. -->
<a href="#" id="wall-link" class="wall-link">Voir le mur&nbsp;</a>
</header>
<!-- Mot de bienvenue + mention légale RGPD condensée, affiché une seule
@@ -50,8 +55,8 @@
</p>
<p class="welcome-modal__title" id="welcome-modal-title">Bienvenue&nbsp;!</p>
<p class="welcome-modal__text">
Scanne, souris, dépose ta photo — elle rejoint l'album de l'événement
en quelques secondes.
Scanne, souris, dépose ta photo — elle rejoint le mur de l'événement
en quelques secondes, visible par tous les invités.
</p>
<p class="legal-notice welcome-modal__legal">
<svg class="legal-notice__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
@@ -60,15 +65,18 @@
</svg>
<!-- Texte légal complet, identique à docs/rgpd.md (mention
obligatoire) — seule la présentation change (modale au premier
passage + lien de rappel), pas le contenu. -->
passage + lien de rappel), pas le contenu. Mis à jour le
2026-09-18 : mentionne explicitement la visibilité par les
autres invités (galerie commune), cf. docs/decisions.md. -->
<span>
En déposant une photo, tu acceptes qu'elle soit stockée temporairement
dans le cadre de cet événement et mise à disposition de l'organisateur.
Tes photos sont automatiquement supprimées 7 jours après la date de
l'événement, sans action de ta part. Aucune photo n'est utilisée à
d'autres fins, ni transmise à des tiers. Tu peux demander la
suppression anticipée d'une photo en contactant l'organisateur de
l'événement.
dans le cadre de cet événement et visible par les autres invités de
l'événement ainsi que par l'organisateur. Tes photos sont
automatiquement supprimées 7 jours après la date de l'événement,
sans action de ta part. Aucune photo n'est utilisée à d'autres
fins, ni transmise à des tiers en dehors des invités de
l'événement. Tu peux demander la suppression anticipée d'une
photo en contactant l'organisateur de l'événement.
</span>
</p>
<button type="button" id="welcome-modal-dismiss">C'est parti&nbsp;!</button>
@@ -109,7 +117,10 @@
</div>
<p class="success-title">C'est envoyé&nbsp;!</p>
<p class="success-text">Ta photo vient de rejoindre la fête. Merci d'avoir été là&nbsp;!</p>
<button type="button" id="add-another-btn">Ajouter une autre photo</button>
<div class="success-actions">
<button type="button" id="add-another-btn">Ajouter une autre photo</button>
<a href="#" id="wall-link-success" class="btn-secondary-link">Voir le mur&nbsp;</a>
</div>
</section>
<form id="upload-form" class="upload-form" hidden novalidate>
+33
View File
@@ -171,6 +171,20 @@ body {
margin: 0;
}
.wall-link {
display: inline-flex;
margin-top: 0.7rem;
font-family: var(--font-ui);
font-weight: 700;
font-size: 0.85rem;
color: var(--color-coral);
text-decoration: none;
}
.wall-link:active {
opacity: 0.7;
}
.page__kicker {
color: var(--color-muted);
font-size: 0.95rem;
@@ -644,6 +658,25 @@ button {
background: #ff7673;
}
.success-actions {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.7rem;
}
.btn-secondary-link {
font-family: var(--font-ui);
font-weight: 700;
font-size: 0.9rem;
color: var(--color-muted);
text-decoration: none;
}
.btn-secondary-link:active {
opacity: 0.7;
}
#submit-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
+8
View File
@@ -51,6 +51,8 @@ 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 wallLink = document.getElementById("wall-link");
const wallLinkSuccess = document.getElementById("wall-link-success");
const legalLink = document.getElementById("legal-link");
// ---------------------------------------------------------------------------
@@ -410,6 +412,12 @@ async function initEventCheck() {
showError(appError("event-not-found"));
return;
}
// Lien vers le mur posé dès que le slug est connu, sans attendre la
// réponse de get_public_event : /galerie/<slug> fait sa propre
// vérification (event inconnu/clos), pas besoin de la dupliquer ici.
const wallHref = `/galerie/${encodeURIComponent(slug)}`;
wallLink.href = wallHref;
wallLinkSuccess.href = wallHref;
try {
const event = await fetchEventPublicInfo(slug);
if (!isEventActive(event)) throw appError("event-closed");