From aa86bf65e43a3d8431d0a9c1acf7969c4520b9c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Sat, 25 Jul 2026 21:42:54 +0400 Subject: [PATCH] feat(donations): clickable OKI links in donation disclaimer --- css/donations.css | 10 ++++++++++ dons.php.sample | 20 +++++++++++++++++++- includes/config.default.php | 3 ++- includes/config.local.php.sample | 3 ++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/css/donations.css b/css/donations.css index 31f56a7..8c68337 100644 --- a/css/donations.css +++ b/css/donations.css @@ -105,6 +105,16 @@ margin-right: 10px; } +.donation-disclaimer a { + color: var(--primary-red); + text-decoration: underline; + font-weight: 600; +} + +.donation-disclaimer a:hover { + text-decoration: none; +} + @media (max-width: 1024px) { .donation-disclaimer { margin-bottom: 20px; diff --git a/dons.php.sample b/dons.php.sample index 3ab9ffa..688a5fc 100644 --- a/dons.php.sample +++ b/dons.php.sample @@ -49,6 +49,24 @@ $currencySymbol = $currency === 'EUR' ? '€' : '$'; $stripeOneTimeLinks = defined('STRIPE_ONE_TIME_LINKS') ? STRIPE_ONE_TIME_LINKS : []; $stripeMonthlyLinks = defined('STRIPE_MONTHLY_LINKS') ? STRIPE_MONTHLY_LINKS : []; +/** + * Convertit les URLs d'un texte en liens cliquables tout en échappant le reste. + * Utilisé pour le message de transparence sur les dons. + */ +function linkUrlsInText(string $text): string { + $parts = preg_split('/(https?:\/\/[^\s<]+)/i', $text, -1, PREG_SPLIT_DELIM_CAPTURE); + $result = ''; + foreach ($parts as $i => $part) { + if ($i % 2 === 1) { + $url = htmlspecialchars($part, ENT_QUOTES, 'UTF-8'); + $result .= '' . $url . ''; + } else { + $result .= htmlspecialchars($part, ENT_QUOTES, 'UTF-8'); + } + } + return $result; +} + ?> @@ -136,7 +154,7 @@ $stripeMonthlyLinks = defined('STRIPE_MONTHLY_LINKS') ? STRIPE_MONTHLY_LINKS : [
-

+

diff --git a/includes/config.default.php b/includes/config.default.php index 004f012..a882b25 100644 --- a/includes/config.default.php +++ b/includes/config.default.php @@ -235,8 +235,9 @@ if (!defined('STRIPE_ENABLED')) define('STRIPE_ENABLED', false); // Message de transparence affiché sur la page de dons. // Renseignez ce texte lorsque les liens pointent vers les comptes d'une organisation // tierce (par exemple OKI) afin d'expliquer aux visiteurs pourquoi. +// Les URLs présentes dans ce texte sont automatiquement transformées en liens cliquables. if (!defined('DONATIONS_OKI_DISCLAIMER')) { - define('DONATIONS_OKI_DISCLAIMER', 'Les liens ci-dessous pointent vers les comptes de donation de l\'association ORGANISATION KA INTERNATIONALE (OKI), mainteneur de cette application libre sous licence AGPL. Vous pouvez les remplacer par vos propres liens dans config.local.php ou désactiver la page de dons avec DONATIONS_ENABLED.'); + define('DONATIONS_OKI_DISCLAIMER', 'Les liens ci-dessous pointent vers les comptes de donation de l\'association ORGANISATION KA INTERNATIONALE (OKI) — o-k-i.net. Pour soutenir spécifiquement OKI : o-k-i.net/dons. Pour adapter cette page à votre propre instance, voir la documentation (lien "Code Source" en bas de la page)'); } // Configuration Stripe diff --git a/includes/config.local.php.sample b/includes/config.local.php.sample index c0a2cad..f78b1e2 100644 --- a/includes/config.local.php.sample +++ b/includes/config.local.php.sample @@ -390,8 +390,9 @@ define('WORDPRESS_ENABLED', false); // Message de transparence affiché sur la page de dons. // À renseigner si les liens pointent vers les comptes d'une organisation tierce // (par exemple OKI) afin d'expliquer aux visiteurs pourquoi. +// Les URLs présentes dans ce texte sont automatiquement transformées en liens cliquables. // Laissez vide ou commentez pour masquer ce message. -// define('DONATIONS_OKI_DISCLAIMER', 'Les liens ci-dessous pointent vers les comptes de donation de l\'association ORGANISATION KA INTERNATIONALE (OKI), mainteneur de cette application libre sous licence AGPL. Vous pouvez les remplacer par vos propres liens dans ce fichier ou désactiver la page de dons avec DONATIONS_ENABLED.'); +// define('DONATIONS_OKI_DISCLAIMER', 'Les liens ci-dessous pointent vers les comptes de donation de l\'association ORGANISATION KA INTERNATIONALE (OKI) — https://o-k-i.net. Pour soutenir spécifiquement OKI : https://o-k-i.net/dons. Pour adapter cette page à votre propre instance, voir la documentation : https://labola.o-k-i.net/cedric/annu-kute-ced'); // ========================================= // Texte de présentation du podcast