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 @@ + \ No newline at end of file diff --git a/site/templates/support.php b/site/templates/support.php index a39a081..0ac014d 100644 --- a/site/templates/support.php +++ b/site/templates/support.php @@ -22,16 +22,16 @@
-
+

Donnateur·ices

-

288

+

Objectif

-

200

+

@@ -47,32 +47,32 @@

Index est une ONG d’investigation à but non-lucratif. Vos dons garantissent notre indépendance.

- - - - - +

Le don donne droit à une réduction fiscale de 66%
Vous pouvez stopper votre don à tout moment