- Formulaire d'édition des paramètres SMTP (serveur, port, chiffrement,
utilisateur, mot de passe, expéditeur) stockés dans data/smtp_settings.json
(écrit par www-data, contrairement au .env en lecture seule)
- Test de connexion SMTP avec logs PHPMailer complets (DEBUG_SERVER)
- Envoi d'email de test avec contenu personnalisé anti-spam
- src/SmtpSettings.php : lecture/écriture smtp_settings.json avec fallback env()
- mailer.php : lit les paramètres depuis SmtpSettings en priorité
- admin.js : indicateurs spinner sur les boutons pendant le traitement
login/index.php n'incluait pas src/SiteSettings.php, provoquant un
fatal error sur siteLang() appelée par layout.php dès la ligne 2.
Fixes#46
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Les articles en avant-première (published_at > now) s'affichaient dans
la grille pour tous les visiteurs, occupant des slots de pagination sans
être lisibles. Ils sont désormais filtrés côté serveur pour les
utilisateurs sans la capability view_previews, cohérent avec le
comportement déjà en place dans la recherche et les pages auteur.
- Génération côté PHP depuis les h2/h3 du contenu rendu (slug, accents, déduplication)
- Injection d'id sur chaque titre pour les ancres
- Affichage dans la sidebar si >= 3 titres, H3 indenté
- Sidebar défilable (max-height 100vh) pour que la TOC reste visible
- IntersectionObserver JS : surlignage du chapitre courant au défilement
- Admin/roles : tableau des roles avec edition par role (/admin/role/<nom>)
- Permissions par role : cases a cocher groupees (Articles, Acces & lecture)
- Nouvelles capacites : propose/validate/publish articles (own/all), view_previews
- Nom technique auto-genere depuis le label (JS + fallback serveur)
- Blocage suppression du dernier administrateur
- user_capabilities table ajoutee en DB
- Navbar : dropdown unique (nom + Mon identite + Administration + Deconnexion)
- SSO callback : preserve le nom personnalise, ne l ecrase plus a la connexion
- Grille articles : CSS Grid auto-fill full-width, hauteur uniforme par ligne
- CSP : add_files.js et post_confirm.js externalises