diff --git a/assets/js/donation-tabs.js b/assets/js/donation-tabs.js
new file mode 100644
index 0000000..6325a54
--- /dev/null
+++ b/assets/js/donation-tabs.js
@@ -0,0 +1,59 @@
+/**
+ * Gestion des onglets de donation (ponctuel / mensuel)
+ */
+document.addEventListener('DOMContentLoaded', function() {
+ const tabButtons = document.querySelectorAll('.nav--tabs__btn');
+ const donationLinks = document.querySelectorAll('.btn--donation[data-amount]');
+
+ if (tabButtons.length === 0 || donationLinks.length === 0) return;
+
+ tabButtons.forEach(button => {
+ button.addEventListener('click', function() {
+ // Retirer la classe is-selected de tous les boutons
+ tabButtons.forEach(btn => btn.classList.remove('is-selected'));
+
+ // Ajouter la classe is-selected au bouton cliqué
+ this.classList.add('is-selected');
+
+ // Récupérer l'intervalle (o = ponctuel, m = mensuel)
+ const interval = this.getAttribute('data-interval');
+
+ // Mettre à jour les liens de donation
+ donationLinks.forEach(link => {
+ const amount = link.getAttribute('data-amount');
+ const currentHref = link.getAttribute('href');
+
+ // Remplacer l'intervalle dans l'URL
+ const newHref = currentHref.replace(
+ /default_interval=[om]/,
+ `default_interval=${interval}`
+ );
+
+ link.setAttribute('href', newHref);
+
+ // Mettre à jour le texte (ajouter /mois pour mensuel)
+ const amountSpan = link.querySelector('.amount-value');
+ const boldText = link.querySelector('.bold');
+
+ if (amountSpan && boldText) {
+ if (interval === 'm') {
+ boldText.innerHTML = `${amount}€/mois`;
+ } else {
+ boldText.innerHTML = `${amount}€`;
+ }
+ }
+ });
+
+ // Mettre à jour aussi le lien "Montant libre"
+ const freeAmountLink = document.querySelector('.btn--donation:not([data-amount])');
+ if (freeAmountLink) {
+ const currentHref = freeAmountLink.getAttribute('href');
+ const newHref = currentHref.replace(
+ /default_interval=[om]/,
+ `default_interval=${interval}`
+ );
+ freeAmountLink.setAttribute('href', newHref);
+ }
+ });
+ });
+});
diff --git a/site/config/config.php b/site/config/config.php
index d761de4..8e65d31 100644
--- a/site/config/config.php
+++ b/site/config/config.php
@@ -24,5 +24,11 @@ return [
],
'panel' => [
'menu' => require_once __DIR__ . '/menu.php'
+ ],
+ 'donorbox' => [
+ 'api_key' => '', // À remplir avec la clé API Donorbox
+ 'campaign_slug' => 'soutenir-index-en-2024',
+ 'campaign_url' => 'https://donorbox.org/soutenir-index-en-2024',
+ 'api_base_url' => 'https://donorbox.org/api/v1'
]
];
\ No newline at end of file
diff --git a/site/controllers/support.php b/site/controllers/support.php
new file mode 100644
index 0000000..d1b4138
--- /dev/null
+++ b/site/controllers/support.php
@@ -0,0 +1,55 @@
+option('donorbox');
+ $apiKey = $config['api_key'];
+ $campaignSlug = $config['campaign_slug'];
+
+ // Valeurs par défaut
+ $data = [
+ 'amount_raised' => 0,
+ 'donor_count' => 0,
+ 'goal_amount' => 20000, // Objectif par défaut
+ 'percentage' => 0,
+ 'campaign_url' => $config['campaign_url']
+ ];
+
+ // Si la clé API est configurée, récupérer les données en temps réel
+ if (!empty($apiKey)) {
+ try {
+ $apiUrl = $config['api_base_url'] . '/campaigns/' . $campaignSlug;
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $apiUrl);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, [
+ 'Authorization: Bearer ' . $apiKey,
+ 'Content-Type: application/json'
+ ]);
+
+ $response = curl_exec($ch);
+ $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ curl_close($ch);
+
+ if ($httpCode === 200 && $response) {
+ $campaignData = json_decode($response, true);
+
+ if ($campaignData) {
+ $data['amount_raised'] = $campaignData['amount_raised'] ?? 0;
+ $data['donor_count'] = $campaignData['donor_count'] ?? 0;
+ $data['goal_amount'] = $campaignData['goal_amount'] ?? 20000;
+
+ // Calculer le pourcentage
+ if ($data['goal_amount'] > 0) {
+ $data['percentage'] = round(($data['amount_raised'] / $data['goal_amount']) * 100, 0);
+ }
+ }
+ }
+ } catch (Exception $e) {
+ // En cas d'erreur, on garde les valeurs par défaut
+ // Optionnel : logger l'erreur
+ }
+ }
+
+ return $data;
+};
diff --git a/site/snippets/footer.php b/site/snippets/footer.php
index 691287b..c6f66be 100644
--- a/site/snippets/footer.php
+++ b/site/snippets/footer.php
@@ -1,2 +1,3 @@
+