diff --git a/database/scriptDatabase.sql b/database/scriptDatabase.sql index 66b7e79..bc87f45 100644 --- a/database/scriptDatabase.sql +++ b/database/scriptDatabase.sql @@ -123,6 +123,30 @@ ALTER TABLE schools ADD COLUMN markdown LONGTEXT NULL, ADD COLUMN link_url VARCHAR(255) NULL; +-- ============================================================ +-- Juillet 2026 (4) : bandeaux de logos sur la page d'accueil +-- ("Outils que je sais manipuler" et "Ils m'ont fait confiance"), +-- gérés depuis le panel Admin +-- ============================================================ + +-- Une seule table pour les deux bandeaux, distingués par la colonne category : +-- - 'tool' => bandeau "Outils que je sais manipuler" +-- - 'partner' => bandeau "Ils m'ont fait confiance" +-- link_url est facultatif : si renseigné, le logo devient cliquable (nouvel onglet) +CREATE TABLE IF NOT EXISTS logo_banners ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + category ENUM('tool', 'partner') NOT NULL, + name VARCHAR(100) NOT NULL, + logo_url VARCHAR(255) NOT NULL, + link_url VARCHAR(255) NULL, + position INT NOT NULL DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (id) +); + +-- Table créée vide volontairement : les logos sont ajoutés depuis le panel Admin +-- (section Logos) pour éviter d'afficher des images devinées/potentiellement cassées + -- ============================================================ -- Juillet 2026 (3) : PDF en drag & drop pour les projets, -- expériences et écoles, lu depuis un mini lecteur intégré diff --git a/docker/php-uploads.ini b/docker/php-uploads.ini deleted file mode 100644 index 3f4a5e9..0000000 --- a/docker/php-uploads.ini +++ /dev/null @@ -1,14 +0,0 @@ -; Config PHP pour le conteneur Docker (image php:8.2-apache) -; Copiée dans /usr/local/etc/php/conf.d/ par le Dockerfile généré par scriptsite.sh - -; Augmente les limites d'upload pour permettre le dépôt de PDF depuis le panel admin -; post_max_size doit toujours être >= upload_max_filesize -upload_max_filesize = 20M -post_max_size = 20M - -; Coupe l'affichage des erreurs PHP dans le HTML en production (sécurité : ne pas exposer -; les chemins serveur aux visiteurs) et les envoie dans les logs Apache/Docker à la place. -; Bonus : évite les warnings HTML qui provoquaient "headers already sent" une fois affichés -; avant le session_start()/header() des scripts. -display_errors = Off -log_errors = On diff --git a/elements/footer.php b/elements/footer.php index 8e6636f..9c1e99d 100644 --- a/elements/footer.php +++ b/elements/footer.php @@ -51,8 +51,8 @@ if (isset($_GET['success']) && $_GET['success'] === '1') { // É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, ' + - '.page-header, .quick-links-header, .skills-header, .projects-title' + '.login-card, .project-form-card, .cgu-card, .logo-admin-item, ' + + '.page-header, .quick-links-header, .skills-header, .projects-title, .logo-banner-header' ); var observer = new IntersectionObserver(function (entries) { diff --git a/functions/listLogos.php b/functions/listLogos.php new file mode 100644 index 0000000..dcb763f --- /dev/null +++ b/functions/listLogos.php @@ -0,0 +1,111 @@ +prepare('SELECT id, category, name, logo_url, link_url, position FROM logo_banners WHERE category = :category ORDER BY position ASC, id ASC'); + $stmt->bindValue(':category', $category, PDO::PARAM_STR); + } else { + $stmt = $dbh->prepare('SELECT id, category, name, logo_url, link_url, position FROM logo_banners ORDER BY category ASC, position ASC, id ASC'); + } + $stmt->execute(); + return $stmt->fetchAll(PDO::FETCH_ASSOC); + } catch (PDOException $e) { + return []; + } +} + +// Fonction qui permet de récupérer un logo par id (pour la modification dans le panel Admin) +function recupererLogoParId($id) { + global $dbh; + + try { + $stmt = $dbh->prepare('SELECT id, category, name, logo_url, link_url, position FROM logo_banners WHERE id = :id'); + $stmt->bindValue(':id', $id, PDO::PARAM_INT); + $stmt->execute(); + return $stmt->fetch(PDO::FETCH_ASSOC); + } catch (PDOException $e) { + return false; + } +} + +// Fonction qui affiche le bandeau défilant d'une catégorie de logos sur la page publique +// N'affiche rien si la catégorie est vide (la section entière est masquée côté page d'accueil) +function afficherLogos($category) { + $logos = listeLogos($category); + + if (empty($logos)) { + return; + } + + $sens = $category === 'partner' ? ' logo-marquee-reverse' : ''; + + echo '
Aucun logo pour le moment.
'; + return; + } + + echo 'Gère le contenu du site : projets, expériences, écoles, compétences, notification et utilisateurs.
+Gère le contenu du site : projets, expériences, écoles, compétences, logos, notification et utilisateurs.
Contact
-Moussu Esteban
+Esteban MOUSSU
esteban.moussu@ik.me
20 Grande rue
52500 Broncourt
diff --git a/pages/home.php b/pages/home.php index 06d15b6..e369d95 100644 --- a/pages/home.php +++ b/pages/home.php @@ -12,6 +12,10 @@ require_once('./../elements/header.php'); // La notification est maintenant dynamique : modifiable depuis le panel Admin (table settings) require_once('../functions/listSettings.php'); +// Bandeaux de logos ("Outils que je sais manipuler" / "Ils m'ont fait confiance"), +// gérés depuis le panel Admin (table logo_banners) +require_once('../functions/listLogos.php'); + // Affichage de la notification (si elle est activée dans le panel Admin) afficherNotice(); ?> @@ -35,6 +39,16 @@ afficherNotice(); + + + + +