✉️ Feature: Epic 5 - Formulaire de Contact (Stories 5.1-5.7)

- Formulaire HTML5 avec validation (nom, prénom, email, entreprise, catégorie, objet, message)
- Validation JavaScript côté client (FormValidator)
- Persistance localStorage des données (AppState)
- Intégration reCAPTCHA v3 avec dégradation gracieuse
- Traitement PHP sécurisé (CSRF, validation, envoi email)
- Feedback utilisateur AJAX (succès/erreur)
- Liens contact secondaires (LinkedIn, GitHub, Email protégé)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-24 01:43:13 +01:00
parent 08402e3ed2
commit 9180f116ec
25 changed files with 1293 additions and 22 deletions

View File

@@ -2,9 +2,9 @@
// Script principal du portfolio
document.addEventListener('DOMContentLoaded', () => {
console.log('Portfolio chargé');
initMobileMenu();
initNavbarScroll();
initEmailProtection();
});
/**
@@ -85,3 +85,21 @@ function initNavbarScroll() {
}
}, { passive: true });
}
/**
* Protection de l'email contre le scraping
* Reconstruit l'adresse email à partir de data-attributes
*/
function initEmailProtection() {
const emailLink = document.getElementById('email-link');
if (!emailLink) return;
const user = emailLink.dataset.user;
const domain = emailLink.dataset.domain;
if (user && domain) {
const email = `${user}@${domain}`;
emailLink.href = `mailto:${email}`;
emailLink.title = email;
}
}