Files
Portfolio-Esteban/elements/footer.php
T
2026-09-03 01:24:22 +02:00

85 lines
3.7 KiB
PHP

<?php
// Ce Footer sera inseré sur des pages grâce a la fonction require_once('./../elements/footer.php')
// Rappel des différentes pages : Acceuil, Projets, Contact
// Notifications "toast" : affichées selon le paramètre présent dans l'URL
// (?success=1 après un message de contact, ?login=1 après connexion, ?logout=1 après déconnexion, ?import=1 après un import)
$toast = null;
if (isset($_GET['success']) && $_GET['success'] === '1') {
$toast = 'Votre message a bien été envoyé !';
} elseif (isset($_GET['login']) && $_GET['login'] === '1') {
$toast = 'Connexion réussie' . (isset($_SESSION['username']) ? ', bonjour ' . htmlspecialchars($_SESSION['username']) . ' !' : ' !');
} elseif (isset($_GET['logout']) && $_GET['logout'] === '1') {
$toast = 'Vous avez bien été déconnecté.';
} elseif (isset($_GET['import']) && $_GET['import'] === '1') {
$toast = 'Les données ont bien été importées.';
}
?>
</main>
<?php
// Notification toast : disparaît toute seule, clic pour fermer.
// Elle n'est affichée que si une des conditions plus haut a rempli $toast.
if ($toast !== null) {
echo '<div class="toast" onclick="this.remove()" role="status">';
echo '<i class="fa-solid fa-circle-check"></i>';
echo '<span>' . $toast . '</span>';
echo '</div>';
}
?>
<footer class="site-footer">
<div class="footer-content">
<p class="footer-copyright">
<!-- Logo droit d'auteur + année -->
&copy; <?php echo date('Y'); ?> - Portfolio développé par Esteban MOUSSU
</p>
<div class="footer-links">
<a href="https://www.linkedin.com/in/estebanmoussu/" target="_blank" rel="noopener noreferrer">LinkedIn</a>
<a href="https://www.instagram.com/ours_one_" target="_blank" rel="noopener noreferrer">Instagram</a>
<a href="https://git.eldorianet.work/esteban" target="_blank" rel="noopener noreferrer">Git</a>
<span class="discord-handle" title="@ours1" onclick="alert('Discord : @ours1')">Discord</span>
<a href="../pages/presentation.php">Mode présentation</a>
<!-- Le tableau de synthèse E4 est affiché dans le site (voir pages/synthese.php),
avec un bouton plein écran et un bouton de téléchargement au-dessus de l'aperçu -->
<a href="../pages/synthese.php">Tableau de synthèse Oral</a>
<a href="../pages/cgu.php">CGU</a>
</div>
</div>
</footer>
<!-- Apparition des cartes au défilement (IntersectionObserver) -->
<script>
(function () {
// On respecte la préférence "réduire les animations" du système
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
if (!('IntersectionObserver' in window)) return;
// Éléments qui apparaissent en glissant vers le haut quand ils entrent dans l'écran
var cibles = document.querySelectorAll(
'.project-card, .quick-link-card, .skill-category, .contact-card, ' +
'.login-card, .project-form-card, .cgu-card, .logo-admin-item, ' +
'.page-header, .quick-links-header, .skills-header, .projects-title, .logo-banner-header, ' +
'.stat-item'
);
var observer = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
observer.unobserve(entry.target);
}
});
}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });
cibles.forEach(function (el, i) {
el.classList.add('reveal');
// Petit décalage en cascade pour les éléments d'une même grille
el.style.setProperty('--reveal-delay', ((i % 4) * 0.08) + 's');
observer.observe(el);
});
})();
</script>
</body>
</html>