From 540ade00cc42ea539b680e868a3409fcb8264c04 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 8 Aug 2026 09:29:23 +0000 Subject: [PATCH] Renvoie vers le code source depuis le pied de page public MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le projet est ouvert : autant que les visiteurs puissent le voir. Un lien « Code source du site » rejoint la politique de confidentialité en pied de page. Ce pied de page n'existait que sur l'accueil ; les pages d'inscription, de confidentialité et « Rejoindre l'association » se terminaient à sec. Il devient un composant partagé, affiché sur les quatre — sans quoi « le pied de page du site public » serait resté une particularité d'une seule page. L'adresse du dépôt vient du même réglage que l'indicateur de version : une instance dérivée renvoie vers son propre code, pas vers celui d'origine. Vérifié sur une instance réelle : le lien et celui de la confidentialité sont présents sur l'accueil, la page d'inscription, la politique de confidentialité et la page « Rejoindre ». Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_014SfQYBU4xXTeSEHKhHQXdD --- src/app/confidentialite/page.tsx | 3 +++ src/app/inscription/[token]/page.tsx | 3 +++ src/app/page.tsx | 18 ++----------- src/app/rejoindre/page.tsx | 3 +++ src/components/site-footer.tsx | 40 ++++++++++++++++++++++++++++ src/lib/app-config.ts | 10 +++++++ 6 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 src/components/site-footer.tsx diff --git a/src/app/confidentialite/page.tsx b/src/app/confidentialite/page.tsx index 99f1d2a..59f0e62 100644 --- a/src/app/confidentialite/page.tsx +++ b/src/app/confidentialite/page.tsx @@ -7,6 +7,7 @@ import { } from "lucide-react"; import Link from "next/link"; +import { SiteFooter } from "@/components/site-footer"; import { SiteHeader } from "@/components/site-header"; import { getAssociationSettings } from "@/lib/services/association-settings"; @@ -143,6 +144,8 @@ export default async function PrivacyPage() { ← Retour à l'accueil + + ); } diff --git a/src/app/inscription/[token]/page.tsx b/src/app/inscription/[token]/page.tsx index 8325ee4..3663fb2 100644 --- a/src/app/inscription/[token]/page.tsx +++ b/src/app/inscription/[token]/page.tsx @@ -10,6 +10,7 @@ import { import Link from "next/link"; import { FormattedText } from "@/components/formatted-text"; +import { SiteFooter } from "@/components/site-footer"; import { SiteHeader } from "@/components/site-header"; import { VolunteerSignupForm, @@ -199,6 +200,8 @@ export default async function InscriptionPage({ + + ); } diff --git a/src/app/page.tsx b/src/app/page.tsx index 2f01c59..1f548fe 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -10,6 +10,7 @@ import { import Link from "next/link"; import { FormattedText } from "@/components/formatted-text"; +import { SiteFooter } from "@/components/site-footer"; import { SiteHeader } from "@/components/site-header"; import { getUpcomingPublishedEvents } from "@/lib/data"; import { formatDateTime } from "@/lib/dates"; @@ -336,22 +337,7 @@ export default async function HomePage() { -
-
-
- -

- {settings.associationName} — ensemble, pour nos enfants. -

-
- - Politique de confidentialité - -
-
+ ); } diff --git a/src/app/rejoindre/page.tsx b/src/app/rejoindre/page.tsx index bc33644..3e9e5d7 100644 --- a/src/app/rejoindre/page.tsx +++ b/src/app/rejoindre/page.tsx @@ -12,6 +12,7 @@ import type { Metadata } from "next"; import Link from "next/link"; import { JoinForm } from "@/components/join-form"; +import { SiteFooter } from "@/components/site-footer"; import { SiteHeader } from "@/components/site-header"; import { getAssociationSettings } from "@/lib/services/association-settings"; @@ -185,6 +186,8 @@ export default async function RejoindrePage() { + + ); } diff --git a/src/components/site-footer.tsx b/src/components/site-footer.tsx new file mode 100644 index 0000000..31d8ddf --- /dev/null +++ b/src/components/site-footer.tsx @@ -0,0 +1,40 @@ +import { Github } from "lucide-react"; +import Link from "next/link"; + +import { PROJECT_REPOSITORY_URL } from "@/lib/app-config"; +import { getAssociationSettings } from "@/lib/services/association-settings"; + +/** Pied de page commun aux écrans publics. */ +export async function SiteFooter() { + const settings = await getAssociationSettings(); + + return ( + + ); +} diff --git a/src/lib/app-config.ts b/src/lib/app-config.ts index 811b479..3c1377d 100644 --- a/src/lib/app-config.ts +++ b/src/lib/app-config.ts @@ -20,3 +20,13 @@ export const CONTACT_EMAIL = */ export const ASSOCIATION_RNA = process.env.NEXT_PUBLIC_ASSOCIATION_RNA?.trim() || ""; + +/** + * Dépôt du projet, au format `organisation/dépôt`. Même valeur que celle + * surveillée par l'indicateur de version : une instance dérivée renvoie ainsi + * vers son propre code, pas vers celui d'origine. + */ +export const PROJECT_REPOSITORY = + process.env.UPDATE_REPOSITORY?.trim() || "flocom/APEL-manager"; + +export const PROJECT_REPOSITORY_URL = `https://github.com/${PROJECT_REPOSITORY}`;