235 lines
9.8 KiB
PHP
235 lines
9.8 KiB
PHP
<?php
|
|
/**
|
|
* Page de dons - Template d'exemple
|
|
*
|
|
* Pour personnaliser cette page :
|
|
* 1. Copiez ce fichier vers dons.php
|
|
* 2. Activez les dons dans config.local.php :
|
|
* define('DONATIONS_ENABLED', true);
|
|
* define('PAYPAL_ME_URL', 'https://www.paypal.com/paypalme/votre-compte');
|
|
* 3. Personnalisez le contenu selon vos besoins
|
|
*/
|
|
|
|
require_once 'includes/config.php';
|
|
require_once 'includes/security.php';
|
|
|
|
// Vérifier si les dons sont activés
|
|
if (!defined('DONATIONS_ENABLED') || !DONATIONS_ENABLED || empty(PAYPAL_ME_URL)) {
|
|
http_response_code(404);
|
|
include '404.php';
|
|
exit;
|
|
}
|
|
|
|
// Définir les headers de sécurité
|
|
setSecurityHeaders();
|
|
|
|
// Validation et nettoyage de l'URL PayPal
|
|
$paypalUrl = filter_var(PAYPAL_ME_URL, FILTER_VALIDATE_URL);
|
|
if (!$paypalUrl || !str_contains($paypalUrl, 'paypal.com/paypalme/')) {
|
|
http_response_code(500);
|
|
error_log('Configuration PayPal invalide: ' . PAYPAL_ME_URL);
|
|
include '500.php';
|
|
exit;
|
|
}
|
|
|
|
// Configuration des montants et devise
|
|
$donationAmounts = defined('DONATION_AMOUNTS') ? DONATION_AMOUNTS : [5, 10, 20, 50];
|
|
$currency = defined('DONATION_CURRENCY') ? DONATION_CURRENCY : 'EUR';
|
|
$currencySymbol = $currency === 'EUR' ? '€' : '$';
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<!-- PERSONNALISEZ: Titre et description de votre page de dons -->
|
|
<title>Soutenir [VOTRE ORGANISATION] - Dons</title>
|
|
<meta name="description" content="Soutenez [VOTRE ORGANISATION] par un don. Chaque contribution compte pour [VOTRE CAUSE].">
|
|
|
|
<!-- Styles -->
|
|
<link rel="stylesheet" href="css/styles.css?v=<?php echo filemtime('css/styles.css'); ?>">
|
|
<link rel="stylesheet" href="css/donations.css?v=<?php echo filemtime('css/donations.css'); ?>">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css" crossorigin="anonymous">
|
|
|
|
<!-- Favicons -->
|
|
<link rel="apple-touch-icon" sizes="180x180" href="img/apple-touch-icon.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="img/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="img/favicon-16x16.png">
|
|
<link rel="manifest" href="manifest.json">
|
|
|
|
<!-- Schema.org pour les dons - PERSONNALISEZ -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Organization",
|
|
"name": "[VOTRE ORGANISATION]",
|
|
"description": "[DESCRIPTION DE VOTRE ORGANISATION]",
|
|
"url": "<?php echo htmlspecialchars($_SERVER['HTTP_HOST']); ?>",
|
|
"potentialAction": {
|
|
"@type": "DonateAction",
|
|
"target": {
|
|
"@type": "EntryPoint",
|
|
"urlTemplate": "<?php echo htmlspecialchars($paypalUrl); ?>"
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<?php include 'includes/header.php'; ?>
|
|
|
|
<!-- Sidebar gauche -->
|
|
<div class="sidebar-container">
|
|
<?php include 'includes/sidebar.php'; ?>
|
|
</div>
|
|
|
|
<main class="main-content">
|
|
<div class="container">
|
|
<!-- En-tête de la page - PERSONNALISEZ -->
|
|
<section class="donation-hero">
|
|
<div class="donation-hero-content">
|
|
<h1><i class="fas fa-heart"></i> Soutenir [VOTRE ORGANISATION]</h1>
|
|
<p class="hero-subtitle">Votre soutien est essentiel pour [VOTRE CAUSE]</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Section principale de don -->
|
|
<section class="donation-main">
|
|
<div class="donation-content">
|
|
<div class="donation-message">
|
|
<!-- PERSONNALISEZ: Votre message de don -->
|
|
<h2>Pourquoi nous soutenir ?</h2>
|
|
<p>[VOTRE ORGANISATION] est [DESCRIPTION].
|
|
Vos dons nous permettent de :</p>
|
|
<ul>
|
|
<!-- PERSONNALISEZ: Vos objectifs -->
|
|
<li><i class="fas fa-bullhorn"></i> [OBJECTIF 1]</li>
|
|
<li><i class="fas fa-users"></i> [OBJECTIF 2]</li>
|
|
<li><i class="fas fa-laptop"></i> [OBJECTIF 3]</li>
|
|
<li><i class="fas fa-book"></i> [OBJECTIF 4]</li>
|
|
</ul>
|
|
<p><strong>Chaque don, même petit, fait la différence !</strong></p>
|
|
</div>
|
|
|
|
<!-- Interface de don -->
|
|
<div class="donation-interface">
|
|
<h3>Choisissez votre montant</h3>
|
|
|
|
<div class="donation-amounts">
|
|
<?php foreach ($donationAmounts as $amount): ?>
|
|
<button class="donation-btn"
|
|
data-amount="<?php echo $amount; ?>"
|
|
onclick="redirectToPayPal(<?php echo $amount; ?>)">
|
|
<?php echo $amount . $currencySymbol; ?>
|
|
</button>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
|
|
<div class="custom-amount">
|
|
<label for="custom-amount-input">Ou entrez un montant personnalisé :</label>
|
|
<div class="custom-amount-input">
|
|
<input type="number"
|
|
id="custom-amount-input"
|
|
min="1"
|
|
max="10000"
|
|
step="1"
|
|
placeholder="Montant">
|
|
<span class="currency"><?php echo htmlspecialchars($currencySymbol); ?></span>
|
|
<button onclick="redirectToPayPalCustom()" class="btn-custom-donate">
|
|
Donner
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="donation-security">
|
|
<p><i class="fas fa-shield-alt"></i>
|
|
Paiement sécurisé via PayPal. Aucune donnée bancaire n'est stockée sur ce site.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Informations supplémentaires - PERSONNALISEZ -->
|
|
<section class="donation-info">
|
|
<div class="info-grid">
|
|
<div class="info-card">
|
|
<i class="fas fa-server"></i>
|
|
<h4>Hébergement & Infrastructure</h4>
|
|
<p>Maintenir nos serveurs, notre plateforme et nos outils numériques, représente des coûts mensuels importants.</p>
|
|
</div>
|
|
<div class="info-card">
|
|
<i class="fas fa-tools"></i>
|
|
<h4>Maintenance & Développement</h4>
|
|
<p>Assurer la sécurité, les mises à jour et l'évolution de nos outils technologiques demande un investissement constant.</p>
|
|
</div>
|
|
<div class="info-card">
|
|
<i class="fas fa-shield-alt"></i>
|
|
<h4>Indépendance Numérique</h4>
|
|
<p>Vos dons nous permettent de rester indépendants des plateformes commerciales et de préserver notre souveraineté numérique.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</main>
|
|
|
|
<?php include 'includes/footer.php'; ?>
|
|
|
|
<!-- Script de redirection PayPal -->
|
|
<script>
|
|
const PAYPAL_BASE_URL = <?php echo json_encode($paypalUrl, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>;
|
|
const CURRENCY = <?php echo json_encode($currency, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>;
|
|
|
|
function redirectToPayPal(amount) {
|
|
if (amount && amount > 0) {
|
|
// Construction de l'URL PayPal Me avec montant
|
|
const url = `${PAYPAL_BASE_URL}/${amount}${CURRENCY}`;
|
|
window.open(url, '_blank', 'noopener,noreferrer');
|
|
}
|
|
}
|
|
|
|
function redirectToPayPalCustom() {
|
|
const input = document.getElementById('custom-amount-input');
|
|
const amount = parseFloat(input.value);
|
|
|
|
if (!amount || amount <= 0) {
|
|
alert('Veuillez entrer un montant valide.');
|
|
input.focus();
|
|
return;
|
|
}
|
|
|
|
if (amount > 10000) {
|
|
alert('Le montant maximum est de 10000' + <?php echo json_encode($currencySymbol); ?> + '.');
|
|
return;
|
|
}
|
|
|
|
redirectToPayPal(amount);
|
|
}
|
|
|
|
// Permettre la validation par Entrée
|
|
document.getElementById('custom-amount-input').addEventListener('keypress', function(e) {
|
|
if (e.key === 'Enter') {
|
|
redirectToPayPalCustom();
|
|
}
|
|
});
|
|
|
|
// Highlight des boutons de montant
|
|
document.querySelectorAll('.donation-btn').forEach(btn => {
|
|
btn.addEventListener('click', function() {
|
|
// Retirer la classe active de tous les boutons
|
|
document.querySelectorAll('.donation-btn').forEach(b => b.classList.remove('active'));
|
|
// Ajouter la classe active au bouton cliqué
|
|
this.classList.add('active');
|
|
// Vider le champ personnalisé
|
|
document.getElementById('custom-amount-input').value = '';
|
|
});
|
|
});
|
|
|
|
// Réinitialiser la sélection si on tape dans le champ personnalisé
|
|
document.getElementById('custom-amount-input').addEventListener('input', function() {
|
|
document.querySelectorAll('.donation-btn').forEach(b => b.classList.remove('active'));
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|