start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
start [07/09/2026 08:43] – ajeanstart [14/10/2026 09:10] (Version actuelle) – ajean
Ligne 2: Ligne 2:
  
 <PHP> <PHP>
 +
 +/* ============================================================
 +   CONFIGURATION DES SECTIONS
 +   ============================================================ */
  
 $SECTIONS = [ $SECTIONS = [
-    ['titre' => 'Administratif',        'url' => '/doku.php?id=admin',              'desc' => 'Annuaire, congés, courriers, RH...',                    'color' => '#1A4A7A', 'bg' => '#E6F1FB', 'icon' => '<rect x="3" y="7" width="18" height="14" rx="2"/><path d="M16 3v4M8 3v4M3 11h18"/>'], + 
-    ['titre' => 'Informatique',         'url' => '/doku.php?id=informatique',       'desc' => 'Applicatifs, tutoriels, accès à distance...',            'color' => '#7F77DD', 'bg' => '#F0EFFF', 'icon' => '<rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/>'], +    [ 
-    ['titre' => 'GNI',                  'url' => '/doku.php?id=gni',                'desc' => 'Documents, procédures, tutoriels, applicatifs...',       'color' => '#0F6E56', 'bg' => '#E1F5EE', 'icon' => '<path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/>'], +        'titre' => 'Administratif', 
-    ['titre' => 'Résultats',            'url' => '/doku.php?id=resultats',          'desc' => 'Résultats des formations du GNI',                        'color' => '#BA7517', 'bg' => '#FEF3C7', 'icon' => '<path d="M3 3v18h18"/><rect x="7" y="13" width="3" height="5"/><rect x="12" y="9" width="3" height="9"/><rect x="17" y="5" width="3" height="13"/>'], +        'url' => '/doku.php?id=admin', 
-    ['titre' => 'Handicap',             'url' => '/doku.php?id=handicap',           'desc' => 'Ressources et informations dédiées',                     'color' => '#D85A30', 'bg' => '#FEF0EB', 'icon' => '<circle cx="12" cy="5" r="2"/><path d="M12 7v6l4 4M12 13l-4 4"/>'], +        'desc' => 'Annuaire, congés, courriers, RH...', 
-    ['titre' => 'RP',                   'url' => '/doku.php?id=rp:cr',              'desc' => 'Représentants du Personnel : comptes rendus, œuvres sociales...', 'color' => '#B03A5B', 'bg' => '#FBE8EE', 'icon' => '<path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/>'], +        'color' => '#2563A6', 
-    ['titre' => 'GFD',                  'url' => '/doku.php?id=gni:app:gfd:gfd',    'desc' => 'Gestion des Frais de Déplacements : guides, FAQ, textes...', 'color' => '#0F6E56', 'bg' => '#E1F5EE', 'icon' => '<path d="M3 13l2-6h14l2 6M5 13h14v5H5z"/><circle cx="7.5" cy="18" r="1.5"/><circle cx="16.5" cy="18" r="1.5"/>'], +        'bg' => '#EAF2FB', 
-    ['titre' => 'Docuseal',             'url' => '/doku.php?id=docuseal',           'desc' => 'Signature électronique de documents',                    'color' => '#5B21B6', 'bg' => '#F1EBFB', 'icon' => '<path d="M4 4h12l4 4v12H4z"/><path d="M16 4v4h4"/><path d="M8 14l2.5 2.5L16 11"/>'],+        'icon' => '<rect x="3" y="7" width="18" height="14" rx="2"/><path d="M16 3v4M8 3v4M3 11h18"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'Informatique', 
 +        'url' => '/doku.php?id=informatique', 
 +        'desc' => 'Applicatifs, tutoriels, accès à distance...', 
 +        'color' => '#16857B', 
 +        'bg' => '#E8F5F3', 
 +        'icon' => '<rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'GNI', 
 +        'url' => '/doku.php?id=gni', 
 +        'desc' => 'Documents, procédures, tutoriels, applicatifs...', 
 +        'color' => '#6366A8', 
 +        'bg' => '#F0F0FA', 
 +        'icon' => '<path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'Résultats', 
 +        'url' => '/doku.php?id=resultats', 
 +        'desc' => 'Résultats des formations du GNI', 
 +        'color' => '#C18332', 
 +        'bg' => '#FBF4E8', 
 +        'icon' => '<path d="M3 3v18h18"/><rect x="7" y="13" width="3" height="5"/><rect x="12" y="9" width="3" height="9"/><rect x="17" y="5" width="3" height="13"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'Handicap', 
 +        'url' => '/doku.php?id=handicap', 
 +        'desc' => 'Ressources et informations dédiées', 
 +        'color' => '#49779C', 
 +        'bg' => '#EDF4F8', 
 +        'icon' => '<circle cx="12" cy="5" r="2"/><path d="M12 7v6l4 4M12 13l-4 4"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'RP', 
 +        'url' => '/doku.php?id=rp:cr', 
 +        'desc' => 'Représentants du Personnel : comptes rendus, œuvres sociales...', 
 +        'color' => '#667085', 
 +        'bg' => '#F2F4F7', 
 +        'icon' => '<path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'GFD', 
 +        'url' => '/doku.php?id=gni:app:gfd:gfd', 
 +        'desc' => 'Gestion des Frais de Déplacements : guides, FAQ, textes...', 
 +        'color' => '#16857B', 
 +        'bg' => '#E8F5F3', 
 +        'icon' => '<path d="M3 13l2-6h14l2 6M5 13h14v5H5z"/><circle cx="7.5" cy="18" r="1.5"/><circle cx="16.5" cy="18" r="1.5"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'Docuseal', 
 +        'url' => '/doku.php?id=docuseal', 
 +        'desc' => 'Signature électronique de documents', 
 +        'color' => '#6366A8', 
 +        'bg' => '#F0F0FA', 
 +        'icon' => '<path d="M4 4h12l4 4v12H4z"/><path d="M16 4v4h4"/><path d="M8 14l2.5 2.5L16 11"/>' 
 +    ] 
 ]; ];
 +
 +
 +/* ============================================================
 +   LIENS RAPIDES
 +   ============================================================ */
  
 $LIENS_RAPIDES = [ $LIENS_RAPIDES = [
 +
     ['titre' => 'Annuaire du personnel', 'url' => '/doku.php?id=admin:annuaire'],     ['titre' => 'Annuaire du personnel', 'url' => '/doku.php?id=admin:annuaire'],
-    ['titre' => 'Tutoriels',             'url' => '/doku.php?id=gni:tutos'], +    ['titre' => 'Tutoriels', 'url' => '/doku.php?id=gni:tutos'], 
-    ['titre' => 'Applicatifs',           'url' => '/doku.php?id=gni:app'], +    ['titre' => 'Applicatifs', 'url' => '/doku.php?id=gni:app'], 
-    ['titre' => 'Portail Documentaire',  'url' => '/doku.php?id=gni:doc_type'], +    ['titre' => 'Portail Documentaire', 'url' => '/doku.php?id=gni:doc_type'], 
-    ['titre' => 'RP - Comptes Rendus',   'url' => '/doku.php?id=rp:cr'], +    ['titre' => 'RP - Comptes Rendus', 'url' => '/doku.php?id=rp:cr'], 
-    ['titre' => 'RP - Œuvres Sociales',  'url' => '/doku.php?id=rp:cos'], +    ['titre' => 'RP - Oeuvres Sociales', 'url' => '/doku.php?id=rp:cos'], 
-    ['titre' => 'RP - Divers',           'url' => '/doku.php?id=rp:divers'],+    ['titre' => 'RP - Divers', 'url' => '/doku.php?id=rp:divers'] 
 ]; ];
 +
 +
 +/* ============================================================
 +   RESEAUX
 +   ============================================================ */
  
 $RESEAUX = [ $RESEAUX = [
-    ['titre' => 'Site Internet', 'url' => 'http://gretani.fr',                                             'color' => '#1A4A7A', 'icon' => '<circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 010 20 15 15 0 010-20z"/>'], + 
-    ['titre' => 'Facebook',      'url' => 'https://www.facebook.com/gretanordisere',                        'color' => '#1877F2', 'icon' => '<path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/>'], +    [ 
-    ['titre' => 'Instagram',     'url' => 'https://www.instagram.com/greta_nord_isere/',                    'color' => '#E1306C', 'icon' => '<rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="0.5"/>'], +        'titre' => 'Site Internet', 
-    ['titre' => 'YouTube',       'url' => 'https://www.youtube.com/channel/UCtNdtb8NExeddwpbflNqwnA',        'color' => '#FF0000', 'icon' => '<rect x="2" y="5" width="20" height="14" rx="4"/><path d="M10 9l6 3-6 3z"/>'],+        'url' => 'http://gretani.fr', 
 +        'color' => '#2563A6', 
 +        'icon' => '<circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 010 20 15 15 0 010-20z"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'Facebook', 
 +        'url' => 'https://www.facebook.com/gretanordisere', 
 +        'color' => '#1877F2', 
 +        'icon' => '<path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'Instagram', 
 +        'url' => 'https://www.instagram.com/greta_nord_isere/', 
 +        'color' => '#C45B84', 
 +        'icon' => '<rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="0.5"/>' 
 +    ], 
 + 
 +    [ 
 +        'titre' => 'YouTube', 
 +        'url' => 'https://www.youtube.com/channel/UCtNdtb8NExeddwpbflNqwnA', 
 +        'color' => '#E34B4B', 
 +        'icon' => '<rect x="2" y="5" width="20" height="14" rx="4"/><path d="M10 9l6 3-6 3z"/>' 
 +    ] 
 ]; ];
 +
 +
 +/* ============================================================
 +   NEWSLETTER AUTOMATIQUE
 +   ============================================================ */
 +
 +$MOIS_FR = [
 +    1 => 'Janvier',
 +    2 => 'Février',
 +    3 => 'Mars',
 +    4 => 'Avril',
 +    5 => 'Mai',
 +    6 => 'Juin',
 +    7 => 'Juillet',
 +    8 => 'Août',
 +    9 => 'Septembre',
 +    10 => 'Octobre',
 +    11 => 'Novembre',
 +    12 => 'Décembre'
 +];
 +
 +$newsletter_mois = $MOIS_FR[(int)date('n')];
 +$newsletter_annee = date('Y');
 +
 +$newsletter_fichier =
 +    'GretaNews ' .
 +    $newsletter_mois .
 +    ' ' .
 +    $newsletter_annee .
 +    '.mp4';
 +
 +$newsletter_url =
 +    'https://files.gretani.com/news/' .
 +    rawurlencode($newsletter_fichier);
 +
 +$newsletter_url =
 +    htmlspecialchars($newsletter_url, ENT_QUOTES);
 +
 +
 +/* ============================================================
 +   FETES
 +   ============================================================ */
 +
 +$FETES = [
 +
 + '1-1'=>'Jour de l\'An','2-1'=>'Basile','3-1'=>'Geneviève','4-1'=>'Odilon','5-1'=>'Édouard','6-1'=>'Mélaine','7-1'=>'Raymond',
 + '8-1'=>'Lucien','9-1'=>'Alix','10-1'=>'Guillaume','11-1'=>'Paulin','12-1'=>'Tatiana','13-1'=>'Yvette','14-1'=>'Nina',
 + '15-1'=>'Rémi','16-1'=>'Marcel','17-1'=>'Roseline','18-1'=>'Prisca','19-1'=>'Marius','20-1'=>'Sébastien','21-1'=>'Agnès',
 + '22-1'=>'Vincent','23-1'=>'Barnard','24-1'=>'François de Sales','25-1'=>'Conversion de Paul','26-1'=>'Paule','27-1'=>'Angèle',
 + '28-1'=>'Thomas d\'Aquin','29-1'=>'Gildas','30-1'=>'Martine','31-1'=>'Marcelle',
 +
 + '1-2'=>'Ella','2-2'=>'Présentation','3-2'=>'Blaise','4-2'=>'Véronique','5-2'=>'Agathe','6-2'=>'Gaston','7-2'=>'Eugénie',
 + '8-2'=>'Jacqueline','9-2'=>'Apolline','10-2'=>'Arnaud','11-2'=>'Notre-Dame de Lourdes','12-2'=>'Félix','13-2'=>'Béatrice',
 + '14-2'=>'Valentin','15-2'=>'Claude','16-2'=>'Julienne','17-2'=>'Alexis','18-2'=>'Bernadette','19-2'=>'Gabin','20-2'=>'Aimée',
 + '21-2'=>'Pierre-Damien','22-2'=>'Isabelle','23-2'=>'Lazare','24-2'=>'Modeste','25-2'=>'Roméo','26-2'=>'Nestor',
 + '27-2'=>'Honorine','28-2'=>'Romain','29-2'=>'Auguste',
 +
 + '1-3'=>'Aubin','2-3'=>'Charles le Bon','3-3'=>'Guénolé','4-3'=>'Casimir','5-3'=>'Olive','6-3'=>'Colette','7-3'=>'Félicité',
 + '8-3'=>'Jean de Dieu','9-3'=>'Françoise','10-3'=>'Vivien','11-3'=>'Rosine','12-3'=>'Justine','13-3'=>'Rodrigue',
 + '14-3'=>'Mathilde','15-3'=>'Louise de Marillac','16-3'=>'Bénédicte','17-3'=>'Patrick','18-3'=>'Cyrille','19-3'=>'Joseph',
 + '20-3'=>'Herbert','21-3'=>'Clémence','22-3'=>'Léa','23-3'=>'Victorien','24-3'=>'Catherine de Suède','25-3'=>'Humbert',
 + '26-3'=>'Larissa','27-3'=>'Habib','28-3'=>'Gontran','29-3'=>'Gwladys','30-3'=>'Amédée','31-3'=>'Benjamin',
 +
 + '1-4'=>'Hugues','2-4'=>'Sandrine','3-4'=>'Richard','4-4'=>'Isidore','5-4'=>'Irène','6-4'=>'Marcellin','7-4'=>'Jean-Baptiste de la Salle',
 + '8-4'=>'Julie','9-4'=>'Gautier','10-4'=>'Fulbert','11-4'=>'Stanislas','12-4'=>'Jules','13-4'=>'Ida','14-4'=>'Maxime',
 + '15-4'=>'Paterne','16-4'=>'Benoît-Joseph','17-4'=>'Anicet','18-4'=>'Parfait','19-4'=>'Emma','20-4'=>'Odette','21-4'=>'Anselme',
 + '22-4'=>'Alexandre','23-4'=>'Georges','24-4'=>'Fidèle','25-4'=>'Marc','26-4'=>'Alida','27-4'=>'Zita','28-4'=>'Valérie',
 + '29-4'=>'Catherine de Sienne','30-4'=>'Robert',
 +
 + '1-5'=>'Fête du Travail','2-5'=>'Boris','3-5'=>'Philippe et Jacques','4-5'=>'Sylvain','5-5'=>'Judith','6-5'=>'Prudence',
 + '7-5'=>'Gisèle','8-5'=>'Victoire 1945','9-5'=>'Pacôme','10-5'=>'Solange','11-5'=>'Estelle','12-5'=>'Achille',
 + '13-5'=>'Rolande','14-5'=>'Matthias','15-5'=>'Denise','16-5'=>'Honoré','17-5'=>'Pascal','18-5'=>'Éric','19-5'=>'Yves',
 + '20-5'=>'Bernardin','21-5'=>'Constantin','22-5'=>'Émile','23-5'=>'Didier','24-5'=>'Donatien','25-5'=>'Sophie',
 + '26-5'=>'Bérenger','27-5'=>'Augustin','28-5'=>'Germain','29-5'=>'Aymard','30-5'=>'Ferdinand','31-5'=>'Visitation',
 +
 + '1-6'=>'Justin','2-6'=>'Blandine','3-6'=>'Kévin','4-6'=>'Clotilde','5-6'=>'Igor','6-6'=>'Norbert','7-6'=>'Gilbert',
 + '8-6'=>'Médard','9-6'=>'Diane','10-6'=>'Landry','11-6'=>'Barnabé','12-6'=>'Guy','13-6'=>'Antoine de Padoue',
 + '14-6'=>'Élisée','15-6'=>'Germaine','16-6'=>'Jean-François Régis','17-6'=>'Hervé','18-6'=>'Léonce','19-6'=>'Romuald',
 + '20-6'=>'Silvère','21-6'=>'Rodolphe','22-6'=>'Alban','23-6'=>'Audrey','24-6'=>'Jean-Baptiste','25-6'=>'Prosper',
 + '26-6'=>'Anthelme','27-6'=>'Fernand','28-6'=>'Irénée','29-6'=>'Pierre et Paul','30-6'=>'Martial',
 +
 + '1-7'=>'Thierry','2-7'=>'Martinien','3-7'=>'Thomas','4-7'=>'Florent','5-7'=>'Antoine-Marie','6-7'=>'Mariette',
 + '7-7'=>'Raoul','8-7'=>'Thibaut','9-7'=>'Amandine','10-7'=>'Ulrich','11-7'=>'Benoît','12-7'=>'Olivier',
 + '13-7'=>'Henri','14-7'=>'Fête Nationale','15-7'=>'Donald','16-7'=>'Notre-Dame du Mont-Carmel','17-7'=>'Charlotte',
 + '18-7'=>'Frédéric','19-7'=>'Arsène','20-7'=>'Marina','21-7'=>'Victor','22-7'=>'Marie-Madeleine','23-7'=>'Brigitte',
 + '24-7'=>'Christine','25-7'=>'Jacques','26-7'=>'Anne et Joachim','27-7'=>'Nathalie','28-7'=>'Samson','29-7'=>'Marthe',
 + '30-7'=>'Juliette','31-7'=>'Ignace de Loyola',
 +
 + '1-8'=>'Alphonse','2-8'=>'Julien-Eymard','3-8'=>'Lydie','4-8'=>'Jean-Marie Vianney','5-8'=>'Abel','6-8'=>'Transfiguration',
 + '7-8'=>'Gaëtan','8-8'=>'Dominique','9-8'=>'Amour','10-8'=>'Laurent','11-8'=>'Claire','12-8'=>'Clarisse',
 + '13-8'=>'Hippolyte','14-8'=>'Évrard','15-8'=>'Assomption','16-8'=>'Armel','17-8'=>'Hyacinthe','18-8'=>'Hélène',
 + '19-8'=>'Jean Eudes','20-8'=>'Bernard','21-8'=>'Christophe','22-8'=>'Fabrice','23-8'=>'Rose de Lima','24-8'=>'Barthélemy',
 + '25-8'=>'Louis','26-8'=>'Natacha','27-8'=>'Monique','28-8'=>'Augustin','29-8'=>'Sabine','30-8'=>'Fiacre','31-8'=>'Aristide',
 +
 + '1-9'=>'Gilles','2-9'=>'Ingrid','3-9'=>'Grégoire','4-9'=>'Rosalie','5-9'=>'Raïssa','6-9'=>'Bertrand','7-9'=>'Reine',
 + '8-9'=>'Nativité de Marie','9-9'=>'Alain','10-9'=>'Inès','11-9'=>'Adelphe','12-9'=>'Apollinaire','13-9'=>'Aimé',
 + '14-9'=>'La Sainte-Croix','15-9'=>'Roland','16-9'=>'Édith','17-9'=>'Renaud','18-9'=>'Nadège','19-9'=>'Émilie',
 + '20-9'=>'Davy','21-9'=>'Matthieu','22-9'=>'Maurice','23-9'=>'Constant','24-9'=>'Thècle','25-9'=>'Hermann',
 + '26-9'=>'Côme et Damien','27-9'=>'Vincent de Paul','28-9'=>'Venceslas','29-9'=>'Michel, Gabriel, Raphaël','30-9'=>'Jérôme',
 +
 + '1-10'=>'Thérèse de l\'Enfant-Jésus','2-10'=>'Léger','3-10'=>'Gérard','4-10'=>'François d\'Assise','5-10'=>'Fleur',
 + '6-10'=>'Bruno','7-10'=>'Serge','8-10'=>'Pélagie','9-10'=>'Denis','10-10'=>'Ghislain','11-10'=>'Firmin',
 + '12-10'=>'Wilfried','13-10'=>'Géraud','14-10'=>'Juste','15-10'=>'Thérèse d\'Avila','16-10'=>'Edwige',
 + '17-10'=>'Baudouin','18-10'=>'Luc','19-10'=>'René','20-10'=>'Adeline','21-10'=>'Céline','22-10'=>'Élodie',
 + '23-10'=>'Jean de Capistran','24-10'=>'Florentin','25-10'=>'Crépin','26-10'=>'Dimitri','27-10'=>'Émeline',
 + '28-10'=>'Simon et Jude','29-10'=>'Narcisse','30-10'=>'Bienvenue','31-10'=>'Quentin',
 +
 + '1-11'=>'Toussaint','2-11'=>'Défunts','3-11'=>'Hubert','4-11'=>'Charles Borromée','5-11'=>'Sylvie','6-11'=>'Bertille',
 + '7-11'=>'Carine','8-11'=>'Geoffroy','9-11'=>'Théodore','10-11'=>'Léon','11-11'=>'Armistice 1918','12-11'=>'Christian',
 + '13-11'=>'Brice','14-11'=>'Sidoine','15-11'=>'Albert','16-11'=>'Marguerite','17-11'=>'Élisabeth de Hongrie',
 + '18-11'=>'Aude','19-11'=>'Tanguy','20-11'=>'Edmond','21-11'=>'Présentation de Marie','22-11'=>'Cécile',
 + '23-11'=>'Clément','24-11'=>'Flora','25-11'=>'Catherine Labouré','26-11'=>'Delphine','27-11'=>'Séverin',
 + '28-11'=>'Jacques de la Marche','29-11'=>'Saturnin','30-11'=>'André',
 +
 + '1-12'=>'Florence','2-12'=>'Viviane','3-12'=>'François-Xavier','4-12'=>'Barbara','5-12'=>'Gérald','6-12'=>'Nicolas',
 + '7-12'=>'Ambroise','8-12'=>'Immaculée Conception','9-12'=>'Pierre Fourier','10-12'=>'Romaric','11-12'=>'Daniel',
 + '12-12'=>'Jeanne-Françoise Chantal','13-12'=>'Lucie','14-12'=>'Odile','15-12'=>'Ninon','16-12'=>'Alice',
 + '17-12'=>'Judicaël','18-12'=>'Gatien','19-12'=>'Urbain','20-12'=>'Théophile','21-12'=>'Pierre Canisius',
 + '22-12'=>'Françoise-Xavière','23-12'=>'Armand','24-12'=>'Adèle','25-12'=>'Noël','26-12'=>'Étienne','27-12'=>'Jean',
 + '28-12'=>'Innocents','29-12'=>'David','30-12'=>'Roger','31-12'=>'Sylvestre'
 +
 +];
 +
 +$cle_fete = ((int)date('j')) . '-' . ((int)date('n'));
 +
 +$fete_nom = isset($FETES[$cle_fete])
 +    ? $FETES[$cle_fete]
 +    : 'Non répertorié';
 +
 +$fete_nom = htmlspecialchars($fete_nom);
 +
 +
 +/* ============================================================
 +   PAQUES
 +   ============================================================ */
 +
 +function calculer_paques($annee) {
 +
 +    $a = $annee % 19;
 +    $b = intdiv($annee, 100);
 +    $c = $annee % 100;
 +    $d = intdiv($b, 4);
 +    $e = $b % 4;
 +    $f = intdiv($b + 8, 25);
 +    $g = intdiv($b - $f + 1, 3);
 +    $h = (19 * $a + $b - $d - $g + 15) % 30;
 +    $i = intdiv($c, 4);
 +    $k = $c % 4;
 +    $l = (32 + 2 * $e + 2 * $i - $h - $k) % 7;
 +    $m = intdiv($a + 11 * $h + 22 * $l, 451);
 +
 +    $mois = intdiv($h + $l - 7 * $m + 114, 31);
 +    $jour = (($h + $l - 7 * $m + 114) % 31) + 1;
 +
 +    return mktime(0, 0, 0, $mois, $jour, $annee);
 +}
 +
 +
 +/* ============================================================
 +   JOURS FERIES
 +   ============================================================ */
 +
 +function jours_feries_annee($annee) {
 +
 +    $paques = calculer_paques($annee);
 +
 +    return [
 +
 +        $annee . '-01-01'
 +            => 'Jour de l\'An',
 +
 +        date('Y-m-d', $paques + 86400)
 +            => 'Lundi de Pâques',
 +
 +        $annee . '-05-01'
 +            => 'Fête du Travail',
 +
 +        $annee . '-05-08'
 +            => 'Victoire 1945',
 +
 +        date('Y-m-d', $paques + 39 * 86400)
 +            => 'Ascension',
 +
 +        date('Y-m-d', $paques + 50 * 86400)
 +            => 'Lundi de Pentecôte',
 +
 +        $annee . '-07-14'
 +            => 'Fête Nationale',
 +
 +        $annee . '-08-15'
 +            => 'Assomption',
 +
 +        $annee . '-11-01'
 +            => 'Toussaint',
 +
 +        $annee . '-11-11'
 +            => 'Armistice 1918',
 +
 +        $annee . '-12-25'
 +            => 'Noël'
 +    ];
 +}
 +
 +
 +$aujourdhui = new DateTime(date('Y-m-d'));
 +$annee_courante = (int)date('Y');
 +
 +$feries = array_merge(
 +    jours_feries_annee($annee_courante),
 +    jours_feries_annee($annee_courante + 1)
 +);
 +
 +ksort($feries);
 +
 +$prochain_ferie_date = null;
 +$prochain_ferie_nom = null;
 +
 +foreach ($feries as $date_str => $nom) {
 +
 +    $d = new DateTime($date_str);
 +
 +    if ($d >= $aujourdhui) {
 +
 +        $prochain_ferie_date = $d;
 +        $prochain_ferie_nom = $nom;
 +
 +        break;
 +    }
 +}
 +
 +
 +$jours_restants = $prochain_ferie_date
 +    ? (int)$aujourdhui->diff($prochain_ferie_date)->format('%a')
 +    : null;
 +
 +
 +$prochain_ferie_nom =
 +    htmlspecialchars($prochain_ferie_nom);
 +
 +
 +if ($jours_restants === 0) {
 +
 +    $texte_ferie = "Aujourd'hui";
 +
 +} elseif ($jours_restants === 1) {
 +
 +    $texte_ferie = "Demain";
 +
 +} else {
 +
 +    $texte_ferie =
 +        "Dans {$jours_restants} jours";
 +}
 +
 +
 +/* ============================================================
 +   SEMAINE
 +   ============================================================ */
 +
 +$numero_semaine = date('W');
 +$annee_semaine = date('Y');
 +
 +
 +/* ============================================================
 +   COMPTEUR DE VISITES DU JOUR
 +   Remise à zéro automatique à chaque changement de date
 +   ============================================================ */
 +
 +$compteur_visites = '0';
 +
 +if (defined('DOKU_INC')) {
 +
 +    $chemin_compteur =
 +        DOKU_INC .
 +        'data/meta/compteur_visites_accueil_jour.txt';
 +
 +    $date_du_jour = date('Y-m-d');
 +
 +    $handle = @fopen(
 +        $chemin_compteur,
 +        'c+'
 +    );
 +
 +    if ($handle) {
 +
 +        if (flock($handle, LOCK_EX)) {
 +
 +            rewind($handle);
 +            $contenu = stream_get_contents($handle);
 +
 +            $date_enregistree = '';
 +            $valeur = 0;
 +
 +            if ($contenu !== false && trim($contenu) !== '') {
 +
 +                $donnees = json_decode(
 +                    trim($contenu),
 +                    true
 +                );
 +
 +                if (is_array($donnees)) {
 +
 +                    $date_enregistree =
 +                        isset($donnees['date'])
 +                            ? (string)$donnees['date']
 +                            : '';
 +
 +                    $valeur =
 +                        isset($donnees['visites'])
 +                            ? (int)$donnees['visites']
 +                            : 0;
 +                }
 +            }
 +
 +            /*
 +             * Nouveau jour :
 +             * on repart de zéro avant de compter
 +             * la visite actuelle.
 +             */
 +            if ($date_enregistree !== $date_du_jour) {
 +                $valeur = 0;
 +            }
 +
 +            $valeur++;
 +
 +            $donnees_a_enregistrer = [
 +                'date' => $date_du_jour,
 +                'visites' => $valeur
 +            ];
 +
 +            ftruncate($handle, 0);
 +            rewind($handle);
 +
 +            fwrite(
 +                $handle,
 +                json_encode($donnees_a_enregistrer)
 +            );
 +
 +            fflush($handle);
 +            flock($handle, LOCK_UN);
 +
 +            $compteur_visites =
 +                number_format(
 +                    $valeur,
 +                    0,
 +                    ',',
 +                    ' '
 +                );
 +        }
 +
 +        fclose($handle);
 +    }
 +}
 +
 +
 +/* ============================================================
 +   CITATIONS
 +   ============================================================ */
 +
 +$CITATIONS = [
 +
 +    [
 +        'texte' => 'Le succès, c\'est se déplacer d\'échec en échec sans perdre son enthousiasme.',
 +        'auteur' => 'Winston Churchill'
 +    ],
 +
 +    [
 +        'texte' => 'Ce qui compte ce n\'est pas la position que l\'on occupe, mais la direction dans laquelle on avance.',
 +        'auteur' => 'Oliver Wendell Holmes'
 +    ],
 +
 +    [
 +        'texte' => 'On ne fait bien que ce que l\'on fait avec plaisir.',
 +        'auteur' => 'Denis Diderot'
 +    ],
 +
 +    [
 +        'texte' => 'Le meilleur moyen de prédire l\'avenir, c\'est de le créer.',
 +        'auteur' => 'Peter Drucker'
 +    ],
 +
 +    [
 +        'texte' => 'La qualité n\'est jamais un accident ; elle est toujours le résultat d\'un effort intelligent.',
 +        'auteur' => 'John Ruskin'
 +    ],
 +
 +    [
 +        'texte' => 'Seul on va plus vite, ensemble on va plus loin.',
 +        'auteur' => 'Proverbe africain'
 +    ],
 +
 +    [
 +        'texte' => 'Le savoir est la seule matière qui s\'accroît quand on la partage.',
 +        'auteur' => 'Socrate'
 +    ],
 +
 +    [
 +        'texte' => 'Il n\'y a pas de vent favorable pour celui qui ne sait où il va.',
 +        'auteur' => 'Sénèque'
 +    ],
 +
 +    [
 +        'texte' => 'La motivation nous permet de commencer, l\'habitude nous permet de continuer.',
 +        'auteur' => 'Jim Ryun'
 +    ],
 +
 +    [
 +        'texte' => 'Le travail d\'équipe divise la tâche et multiplie le succès.',
 +        'auteur' => 'Anonyme'
 +    ],
 +
 +    [
 +        'texte' => 'Chaque jour est une nouvelle occasion de changer sa vie.',
 +        'auteur' => 'Anonyme'
 +    ],
 +
 +    [
 +        'texte' => 'La persévérance est la clé de toute réussite.',
 +        'auteur' => 'Anonyme'
 +    ],
 +
 +    [
 +        'texte' => 'La créativité, c\'est l\'intelligence qui s\'amuse.',
 +        'auteur' => 'Albert Einstein'
 +    ],
 +
 +    [
 +        'texte' => 'Le futur appartient à ceux qui croient en la beauté de leurs rêves.',
 +        'auteur' => 'Eleanor Roosevelt'
 +    ],
 +
 +    [
 +        'texte' => 'Ne comptez pas les jours, faites que les jours comptent.',
 +        'auteur' => 'Muhammad Ali'
 +    ],
 +
 +    [
 +        'texte' => 'Un objectif sans plan n\'est qu\'un souhait.',
 +        'auteur' => 'Antoine de Saint-Exupéry'
 +    ],
 +
 +    [
 +        'texte' => 'La discipline est le pont entre les objectifs et les accomplissements.',
 +        'auteur' => 'Jim Rohn'
 +    ],
 +
 +    [
 +        'texte' => 'Le talent gagne des matchs, mais le travail d\'équipe gagne des championnats.',
 +        'auteur' => 'Michael Jordan'
 +    ],
 +
 +    [
 +        'texte' => 'La simplicité est la sophistication suprême.',
 +        'auteur' => 'Léonard de Vinci'
 +    ],
 +
 +    [
 +        'texte' => 'Il vaut mieux allumer une bougie que maudire l\'obscurité.',
 +        'auteur' => 'Confucius'
 +    ],
 +
 +    [
 +        'texte' => 'Petit à petit, l\'oiseau fait son nid.',
 +        'auteur' => 'Proverbe français'
 +    ],
 +
 +    [
 +        'texte' => 'Les erreurs sont les preuves que l\'on essaie.',
 +        'auteur' => 'Anonyme'
 +    ]
 +
 +];
 +
 +
 +$index_citation =
 +    ((int)date('z')) %
 +    count($CITATIONS);
 +
 +
 +$citation_du_jour =
 +    $CITATIONS[$index_citation];
 +
 +
 +$citation_texte =
 +    htmlspecialchars(
 +        $citation_du_jour['texte']
 +    );
 +
 +
 +$citation_auteur =
 +    htmlspecialchars(
 +        $citation_du_jour['auteur']
 +    );
 +
 +
 +/* ============================================================
 +   CSS
 +   ============================================================ */
  
 echo ' echo '
 <style> <style>
-.home-wrap { font-family: Arial, sans-serif; font-size: 14px; color: #333; padding-top: 24px; } 
  
-.home-hero { text-align: center; padding: 20px 0 32px; } +/* Masquer les outils DokuWiki : RSS / abonnement / impression */ 
-.home-hero img { max-width: 160px; margin-bottom: 16px; } +#dokuwiki__pagetools { 
-.home-hero h1 { font-size: 26px; font-weight: 700; color: #1a2d4a; margin: 0 0 8px; } +    display: none !important; 
-.home-hero-tag { display: inline-block; font-size: 13px; font-weight: 600; color: #1D9E75; background: #E1F5EE; padding: 6px 18px; border-radius: 20px; }+}
  
-.home-search-hint { display: flex; align-items: center; gap: 10px; background: #f8fafd; border: 0.5px solid #dde3ec; border-radius: 10px; padding: 12px 18px; margin: 24px 0; font-size: 13px; color: #666; } +/* Masquer la recherche originale dans la Navbar du haut */ 
-.home-search-hint svg { flex-shrink: 0; }+#dokuwiki__header #dw__search, 
 +#dokuwiki__header form.search, 
 +#dokuwiki__header .search, 
 +#dokuwiki__header .navbar-form, 
 +.navbar #dw__search, 
 +.navbar form.search, 
 +.navbar .navbar-form { 
 +    display: none !important; 
 +}
  
-.home-section-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #999; margin: 28px 0 12px; }+.home-wrap {
  
-.home-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; } +    --navy: #18283E;
-.home-card { background: #fff; border: 0.5px solid #dde3ec; border-radius: 12px; padding: 1.1rem 1.3rem; text-decoration: none; display: block; transition: border-color 0.15s, background 0.15s; } +
-.home-card:hover { text-decoration: none; } +
-.home-card-icon { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; margin-bottom: 12px; } +
-.home-card-icon svg { width: 20px; height: 20px; } +
-.home-card-title { font-size: 14px; font-weight: 700; color: #1a2d4a; margin-bottom: 3px; } +
-.home-card-desc { font-size: 11.5px; color: #999; line-height: 1.4; }+
  
-.home-quicklinks { display: flex; flex-wrap: wrap; gap: 10px; } +    --blue: #28689F; 
-.home-quicklink { display: inline-flex; align-items: center; gap: 6px; background: #fff; border: 0.5px solid #dde3ec; border-radius: 20px; padding: 8px 16px; font-size: 12.5px; font-weight: 600; color: #378ADD; text-decoration: none; } +    --blue-dark: #20567F; 
-.home-quicklink:hover { background: #E6F1FB; border-color: #378ADD; text-decoration: none; }+    --blue-soft: #EAF2F8;
  
-.home-feedback { background: #FFFBF2; border: 1px solid #FCD34D; border-radius: 10px; padding: 14px 18px; margin: 28px 0; font-size: 13px; color: #92400E; display: flex; align-items: center; gap: 12px; } +    --teal: #278A84; 
-.home-feedback svg { flex-shrink: 0; } +    --teal-soft: #E9F5F3; 
-.home-feedback a { color: #B45309; font-weight: 700; text-decoration: none; } + 
-.home-feedback a:hover { text-decoration: underline; }+    --violet: #7169B8; 
 +    --violet-soft: #F0EFF9; 
 + 
 +    --amber: #C88936; 
 +    --amber-soft: #FBF4E8; 
 + 
 +    --text: #1D2939; 
 +    --muted: #667085; 
 +    --light: #98A2B3; 
 + 
 +    --border: #E3E8EF; 
 + 
 +    --surface: #FFFFFF; 
 +    --background: #F6F8FB; 
 + 
 +    font-family: 
 +        -apple-system, 
 +        BlinkMacSystemFont, 
 +        "Segoe UI", 
 +        Arial, 
 +        sans-serif; 
 + 
 +    color: var(--text); 
 + 
 +    font-size: 14px; 
 + 
 +    background: 
 +        var(--background); 
 + 
 +    padding: 
 +        22px 6px 36px; 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   ANIMATIONS 
 +   ============================================================ */ 
 + 
 +@keyframes homeFadeUp { 
 + 
 +    from { 
 +        opacity: 0; 
 +        transform: 
 +            translateY(8px); 
 +    } 
 + 
 +    to { 
 +        opacity: 1; 
 +        transform: 
 +            translateY(0); 
 +    } 
 +} 
 + 
 + 
 +.home-anim { 
 + 
 +    animation: 
 +        homeFadeUp 
 +        .45s ease 
 +        both; 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   GRETA NEWS DEFILANT 
 +   ============================================================ */ 
 + 
 +.home-news { 
 + 
 +    position: relative; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    overflow: hidden; 
 + 
 +    height: 52px; 
 + 
 +    margin-bottom: 28px; 
 + 
 +    border-radius: 14px; 
 + 
 +    background: 
 +        linear-gradient( 
 +            110deg, 
 +            #225E8C 0%, 
 +            #2876A0 52%, 
 +            #278A84 100% 
 +        ); 
 + 
 +    color: 
 +        #FFFFFF !important; 
 + 
 +    text-decoration: 
 +        none !important; 
 + 
 +    box-shadow: 
 +        0 6px 20px 
 +        rgba(32,86,127,.14); 
 + 
 +    transition: 
 +        transform .2s ease, 
 +        box-shadow .2s ease; 
 +} 
 + 
 + 
 +.home-news:hover { 
 + 
 +    transform: 
 +        translateY(-2px); 
 + 
 +    box-shadow: 
 +        0 9px 25px 
 +        rgba(32,86,127,.20); 
 + 
 +    color: 
 +        #FFFFFF !important; 
 + 
 +    text-decoration: 
 +        none !important; 
 +} 
 + 
 + 
 +.home-news:before, 
 +.home-news:after { 
 + 
 +    content: ""; 
 + 
 +    position: absolute; 
 + 
 +    z-index: 4; 
 + 
 +    top: 0; 
 + 
 +    bottom: 0; 
 + 
 +    width: 45px; 
 + 
 +    pointer-events: none; 
 +} 
 + 
 + 
 +.home-news:before { 
 + 
 +    left: 0; 
 + 
 +    background: 
 +        linear-gradient( 
 +            90deg, 
 +            #225E8C, 
 +            rgba(34,94,140,0) 
 +        ); 
 +} 
 + 
 + 
 +.home-news:after { 
 + 
 +    right: 0; 
 + 
 +    background: 
 +        linear-gradient( 
 +            270deg, 
 +            #278A84, 
 +            rgba(39,138,132,0) 
 +        ); 
 +} 
 + 
 + 
 +.home-news-track { 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    width: max-content; 
 + 
 +    white-space: nowrap; 
 + 
 +    animation: 
 +        homeNewsScroll 
 +        25s linear 
 +        infinite; 
 +} 
 + 
 + 
 +.home-news:hover 
 +.home-news-track { 
 + 
 +    animation-play-state: 
 +        paused; 
 +} 
 + 
 + 
 +.home-news-group { 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    flex-shrink: 0; 
 +} 
 + 
 + 
 +.home-news-item { 
 + 
 +    display: inline-flex; 
 + 
 +    align-items: center; 
 + 
 +    gap: 10px; 
 + 
 +    padding: 
 +        0 38px; 
 + 
 +    color: #FFFFFF; 
 + 
 +    font-size: 13px; 
 + 
 +    font-weight: 550; 
 +} 
 + 
 + 
 +.home-news-emoji { 
 + 
 +    font-size: 19px; 
 +} 
 + 
 + 
 +.home-news-badge { 
 + 
 +    display: inline-flex; 
 + 
 +    align-items: center; 
 + 
 +    padding: 
 +        4px 8px; 
 + 
 +    border-radius: 6px; 
 + 
 +    background: 
 +        rgba(255,255,255,.15); 
 + 
 +    font-size: 9px; 
 + 
 +    font-weight: 750; 
 + 
 +    text-transform: uppercase; 
 + 
 +    letter-spacing: .8px; 
 +} 
 + 
 + 
 +.home-news-item strong { 
 + 
 +    color: 
 +        #FFFFFF; 
 + 
 +    font-weight: 750; 
 +} 
 + 
 + 
 +.home-news-dot { 
 + 
 +    width: 4px; 
 + 
 +    height: 4px; 
 + 
 +    flex-shrink: 0; 
 + 
 +    background: 
 +        rgba(255,255,255,.55); 
 + 
 +    border-radius: 50%; 
 +} 
 + 
 + 
 +@keyframes homeNewsScroll { 
 + 
 +    from { 
 +        transform: 
 +            translateX(0); 
 +    } 
 + 
 +    to { 
 +        transform: 
 +            translateX(-50%); 
 +    } 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   HERO 
 +   ============================================================ */ 
 + 
 +.home-hero { 
 + 
 +    max-width: 760px; 
 + 
 +    margin: 
 +        0 auto; 
 + 
 +    padding: 
 +        10px 20px 22px; 
 + 
 +    text-align: center; 
 +} 
 + 
 + 
 +.home-hero img { 
 + 
 +    max-width: 135px; 
 + 
 +    margin-bottom: 15px; 
 +} 
 + 
 + 
 +.home-hero-greeting { 
 + 
 +    margin-bottom: 7px; 
 + 
 +    color: 
 +        var(--blue); 
 + 
 +    font-size: 13px; 
 + 
 +    font-weight: 650; 
 +} 
 + 
 + 
 +.home-hero h1 { 
 + 
 +    margin: 0; 
 + 
 +    color: 
 +        var(--navy); 
 + 
 +    font-size: 28px; 
 + 
 +    line-height: 1.2; 
 + 
 +    font-weight: 750; 
 + 
 +    letter-spacing: -.5px; 
 +} 
 + 
 + 
 +.home-hero-subtitle { 
 + 
 +    max-width: 550px; 
 + 
 +    margin: 
 +        9px auto 0; 
 + 
 +    color: 
 +        var(--muted); 
 + 
 +    font-size: 13.5px; 
 + 
 +    line-height: 1.5; 
 +} 
 + 
 + 
 +.home-hero-clock { 
 + 
 +    display: inline-flex; 
 + 
 +    align-items: center; 
 + 
 +    margin-top: 13px; 
 + 
 +    padding: 
 +        5px 11px; 
 + 
 +    border: 
 +        1px solid 
 +        var(--border); 
 + 
 +    border-radius: 20px; 
 + 
 +    background: 
 +        rgba(255,255,255,.7); 
 + 
 +    color: 
 +        var(--muted); 
 + 
 +    font-size: 11px; 
 +} 
 + 
 + 
 +/* Raccourci Tableau des présences sous la date / heure */ 
 +.home-presences-hero-link { 
 +    display: inline-flex; 
 +    align-items: center; 
 +    gap: 6px; 
 +    margin-top: 8px; 
 +    padding: 6px 11px; 
 +    border: 1px solid #D6E7F4; 
 +    border-radius: 9px; 
 +    background: var(--blue-soft); 
 +    color: var(--blue) !important; 
 +    font-size: 11px; 
 +    font-weight: 700; 
 +    text-decoration: none !important; 
 +    transition: transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease; 
 +} 
 + 
 +.home-presences-hero-link:hover, 
 +.home-presences-hero-link:focus { 
 +    transform: translateY(-1px); 
 +    background: var(--blue); 
 +    border-color: var(--blue); 
 +    color: #FFFFFF !important; 
 +    text-decoration: none !important; 
 +} 
 + 
 +/* ============================================================ 
 +   CARTES INFORMATIONS 
 +   ============================================================ */ 
 + 
 +.home-infobar { 
 + 
 +    display: grid; 
 + 
 +    grid-template-columns: 
 +        repeat( 
 +            4, 
 +            minmax(0,1fr) 
 +        ); 
 + 
 +    gap: 10px; 
 + 
 +    margin: 
 +        17px 0 16px; 
 +} 
 + 
 + 
 +.home-info-item { 
 + 
 +    min-width: 0; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    gap: 11px; 
 + 
 +    padding: 
 +        13px 14px; 
 + 
 +    background: 
 +        var(--surface); 
 + 
 +    border: 
 +        1px solid 
 +        var(--border); 
 + 
 +    border-radius: 13px; 
 + 
 +    box-shadow: 
 +        0 1px 3px 
 +        rgba(16,24,40,.025); 
 + 
 +    transition: 
 +        transform .18s ease, 
 +        box-shadow .18s ease; 
 +} 
 + 
 + 
 +.home-info-item:hover { 
 + 
 +    transform: 
 +        translateY(-2px); 
 + 
 +    box-shadow: 
 +        0 6px 18px 
 +        rgba(16,24,40,.06); 
 +} 
 + 
 + 
 +.home-info-icon { 
 + 
 +    width: 36px; 
 + 
 +    height: 36px; 
 + 
 +    flex-shrink: 0; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    justify-content: center; 
 + 
 +    border-radius: 9px; 
 + 
 +    font-size: 17px; 
 +} 
 + 
 + 
 +.home-info-icon-fete { 
 + 
 +    background: 
 +        var(--teal-soft); 
 +} 
 + 
 + 
 +.home-info-icon-ferie { 
 + 
 +    background: 
 +        var(--amber-soft); 
 +} 
 + 
 + 
 +.home-info-icon-semaine { 
 + 
 +    background: 
 +        var(--blue-soft); 
 +} 
 + 
 + 
 +.home-info-icon-visites { 
 + 
 +    background: 
 +        var(--violet-soft); 
 +} 
 + 
 + 
 +.home-info-text { 
 + 
 +    min-width: 0; 
 + 
 +    line-height: 1.25; 
 +} 
 + 
 + 
 +.home-info-label { 
 + 
 +    margin-bottom: 2px; 
 + 
 +    color: 
 +        var(--light); 
 + 
 +    font-size: 9.5px; 
 + 
 +    font-weight: 700; 
 + 
 +    text-transform: uppercase; 
 + 
 +    letter-spacing: .5px; 
 +} 
 + 
 + 
 +.home-info-value { 
 + 
 +    overflow: hidden; 
 + 
 +    color: 
 +        var(--navy); 
 + 
 +    font-size: 13px; 
 + 
 +    font-weight: 650; 
 + 
 +    white-space: nowrap; 
 + 
 +    text-overflow: ellipsis; 
 +} 
 + 
 + 
 +.home-info-detail { 
 + 
 +    margin-top: 2px; 
 + 
 +    color: 
 +        var(--light); 
 + 
 +    font-size: 9.5px; 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   CITATION 
 +   ============================================================ */ 
 + 
 +.home-citation { 
 + 
 +    position: relative; 
 + 
 +    overflow: hidden; 
 + 
 +    margin: 
 +        16px 0 31px; 
 + 
 +    padding: 
 +        22px 70px 21px 72px; 
 + 
 +    background: 
 +        linear-gradient( 
 +            120deg, 
 +            #245F8E 0%, 
 +            #2878A0 52%, 
 +            #278A84 100% 
 +        ); 
 + 
 +    border-radius: 15px; 
 + 
 +    color: 
 +        #FFFFFF; 
 + 
 +    box-shadow: 
 +        0 7px 22px 
 +        rgba(32,86,127,.14); 
 +} 
 + 
 + 
 +.home-citation:after { 
 + 
 +    content: ""; 
 + 
 +    position: absolute; 
 + 
 +    width: 190px; 
 + 
 +    height: 190px; 
 + 
 +    right: -65px; 
 + 
 +    top: -95px; 
 + 
 +    border-radius: 50%; 
 + 
 +    background: 
 +        rgba(255,255,255,.07); 
 +} 
 + 
 + 
 +.home-citation-symbol { 
 + 
 +    position: absolute; 
 + 
 +    left: 21px; 
 + 
 +    top: 11px; 
 + 
 +    color: 
 +        rgba(255,255,255,.25); 
 + 
 +    font-family: 
 +        Georgia, 
 +        serif; 
 + 
 +    font-size: 62px; 
 + 
 +    font-weight: 700; 
 + 
 +    line-height: 1; 
 +} 
 + 
 + 
 +.home-citation-label { 
 + 
 +    position: relative; 
 + 
 +    z-index: 2; 
 + 
 +    margin-bottom: 7px; 
 + 
 +    color: 
 +        rgba(255,255,255,.72); 
 + 
 +    font-size: 9.5px; 
 + 
 +    font-weight: 750; 
 + 
 +    text-transform: uppercase; 
 + 
 +    letter-spacing: 1px; 
 +} 
 + 
 + 
 +.home-citation-texte { 
 + 
 +    position: relative; 
 + 
 +    z-index: 2; 
 + 
 +    max-width: 850px; 
 + 
 +    color: 
 +        #FFFFFF; 
 + 
 +    font-size: 14px; 
 + 
 +    font-weight: 550; 
 + 
 +    font-style: italic; 
 + 
 +    line-height: 1.55; 
 +} 
 + 
 + 
 +.home-citation-auteur { 
 + 
 +    position: relative; 
 + 
 +    z-index: 2; 
 + 
 +    margin-top: 8px; 
 + 
 +    color: 
 +        rgba(255,255,255,.80); 
 + 
 +    font-size: 11px; 
 + 
 +    font-weight: 600; 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   TITRES SECTIONS 
 +   ============================================================ */ 
 + 
 +.home-section-heading { 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    margin: 
 +        28px 0 12px; 
 +} 
 + 
 + 
 +.home-section-label { 
 + 
 +    flex-shrink: 0; 
 + 
 +    color: 
 +        var(--navy); 
 + 
 +    font-size: 11px; 
 + 
 +    font-weight: 750; 
 + 
 +    text-transform: uppercase; 
 + 
 +    letter-spacing: .85px; 
 +} 
 + 
 + 
 +.home-section-line { 
 + 
 +    flex: 1; 
 + 
 +    height: 1px; 
 + 
 +    margin-left: 14px; 
 + 
 +    background: 
 +        var(--border); 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   CARTES PRINCIPALES 
 +   ============================================================ */ 
 + 
 +.home-cards { 
 + 
 +    display: grid; 
 + 
 +    grid-template-columns: 
 +        repeat( 
 +            4, 
 +            minmax(0,1fr) 
 +        ); 
 + 
 +    gap: 12px; 
 +} 
 + 
 + 
 +.home-card { 
 + 
 +    position: relative; 
 + 
 +    min-height: 135px; 
 + 
 +    display: flex; 
 + 
 +    flex-direction: column; 
 + 
 +    padding: 16px; 
 + 
 +    background: 
 +        var(--surface); 
 + 
 +    border: 
 +        1px solid 
 +        var(--border); 
 + 
 +    border-radius: 14px; 
 + 
 +    color: 
 +        var(--text); 
 + 
 +    text-decoration: 
 +        none !important; 
 + 
 +    box-shadow: 
 +        0 1px 3px 
 +        rgba(16,24,40,.025); 
 + 
 +    transition: 
 +        transform .18s ease, 
 +        border-color .18s ease, 
 +        box-shadow .18s ease; 
 +} 
 + 
 + 
 +.home-card:hover { 
 + 
 +    transform: 
 +        translateY(-3px); 
 + 
 +    border-color: 
 +        #CAD5E1; 
 + 
 +    box-shadow: 
 +        0 9px 24px 
 +        rgba(16,24,40,.075); 
 + 
 +    text-decoration: 
 +        none !important; 
 +} 
 + 
 + 
 +.home-card-top { 
 + 
 +    display: flex; 
 + 
 +    align-items: flex-start; 
 + 
 +    justify-content: 
 +        space-between; 
 + 
 +    margin-bottom: 13px; 
 +} 
 + 
 + 
 +.home-card-icon { 
 + 
 +    width: 38px; 
 + 
 +    height: 38px; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    justify-content: center; 
 + 
 +    border-radius: 10px; 
 +} 
 + 
 + 
 +.home-card-icon svg { 
 + 
 +    width: 19px; 
 + 
 +    height: 19px; 
 +} 
 + 
 + 
 +.home-card-arrow { 
 + 
 +    width: 25px; 
 + 
 +    height: 25px; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    justify-content: center; 
 + 
 +    border-radius: 7px; 
 + 
 +    color: 
 +        #AAB4C0; 
 + 
 +    transition: 
 +        transform .18s ease, 
 +        color .18s ease, 
 +        background .18s ease; 
 +} 
 + 
 + 
 +.home-card:hover 
 +.home-card-arrow { 
 + 
 +    transform: 
 +        translateX(2px); 
 + 
 +    color: 
 +        var(--blue); 
 + 
 +    background: 
 +        var(--blue-soft); 
 +} 
 + 
 + 
 +.home-card-arrow svg { 
 + 
 +    width: 14px; 
 + 
 +    height: 14px; 
 +} 
 + 
 + 
 +.home-card-title { 
 + 
 +    margin-bottom: 4px; 
 + 
 +    color: 
 +        var(--navy); 
 + 
 +    font-size: 13.5px; 
 + 
 +    font-weight: 700; 
 +} 
 + 
 + 
 +.home-card-desc { 
 + 
 +    color: 
 +        var(--muted); 
 + 
 +    font-size: 11.2px; 
 + 
 +    line-height: 1.45; 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   LIENS RAPIDES 
 +   ============================================================ */ 
 + 
 +.home-quicklinks { 
 + 
 +    display: flex; 
 + 
 +    flex-wrap: wrap; 
 + 
 +    gap: 8px; 
 +} 
 + 
 + 
 +.home-quicklink { 
 + 
 +    display: inline-flex; 
 + 
 +    align-items: center; 
 + 
 +    gap: 7px; 
 + 
 +    padding: 
 +        8px 13px; 
 + 
 +    background: 
 +        var(--surface); 
 + 
 +    border: 
 +        1px solid 
 +        var(--border); 
 + 
 +    border-radius: 9px; 
 + 
 +    color: 
 +        #475467 !important; 
 + 
 +    font-size: 11.5px; 
 + 
 +    font-weight: 600; 
 + 
 +    text-decoration: 
 +        none !important; 
 + 
 +    transition: 
 +        .18s ease; 
 +} 
 + 
 + 
 +.home-quicklink:hover { 
 + 
 +    transform: 
 +        translateY(-1px); 
 + 
 +    color: 
 +        var(--blue) !important; 
 + 
 +    background: 
 +        var(--blue-soft); 
 + 
 +    border-color: 
 +        #C8DCEC; 
 +} 
 + 
 + 
 +.home-quicklink svg { 
 + 
 +    width: 13px; 
 + 
 +    height: 13px; 
 + 
 +    color: 
 +        var(--blue); 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   FEEDBACK 
 +   ============================================================ */ 
 + 
 +.home-feedback { 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    gap: 12px; 
 + 
 +    margin: 
 +        28px 0; 
 + 
 +    padding: 
 +        13px 16px; 
 + 
 +    background: 
 +        #F8FAFC; 
 + 
 +    border: 
 +        1px solid 
 +        var(--border); 
 + 
 +    border-radius: 12px; 
 + 
 +    color: 
 +        var(--muted); 
 + 
 +    font-size: 12px; 
 +} 
 + 
 + 
 +.home-feedback-icon { 
 + 
 +    width: 32px; 
 + 
 +    height: 32px; 
 + 
 +    flex-shrink: 0; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    justify-content: center; 
 + 
 +    color: 
 +        var(--teal); 
 + 
 +    background: 
 +        var(--teal-soft); 
 + 
 +    border-radius: 9px; 
 +} 
 + 
 + 
 +.home-feedback-icon svg { 
 + 
 +    width: 16px; 
 + 
 +    height: 16px; 
 +} 
 + 
 + 
 +.home-feedback a { 
 + 
 +    color: 
 +        var(--teal) !important; 
 + 
 +    font-weight: 650; 
 + 
 +    text-decoration: 
 +        none !important; 
 +} 
 + 
 + 
 +/* ============================================================ 
 +   RESEAUX 
 +   ============================================================ */ 
 + 
 +.home-social { 
 + 
 +    display: flex; 
 + 
 +    gap: 9px; 
 +} 
 + 
 + 
 +.home-social-item { 
 + 
 +    width: 39px; 
 + 
 +    height: 39px; 
 + 
 +    display: flex; 
 + 
 +    align-items: center; 
 + 
 +    justify-content: center; 
 + 
 +    background: 
 +        var(--surface); 
 + 
 +    border: 
 +        1px solid 
 +        var(--border); 
 + 
 +    border-radius: 10px; 
 + 
 +    text-decoration: 
 +        none !important; 
 + 
 +    transition: 
 +        .18s ease; 
 +} 
 + 
 + 
 +.home-social-item:hover { 
 + 
 +    transform: 
 +        translateY(-2px); 
 + 
 +    border-color: 
 +        #CDD6E1; 
 + 
 +    box-shadow: 
 +        0 5px 14px 
 +        rgba(16,24,40,.06); 
 +} 
 + 
 + 
 +.home-social-item svg { 
 + 
 +    width: 18px; 
 + 
 +    height: 18px; 
 +} 
 + 
 + 
 + 
 + 
 +/* ============================================================ 
 +   RECHERCHE SOUS GRETA NEWS 
 +   ============================================================ */ 
 + 
 +.home-search-row { 
 +    display: flex; 
 +    justify-content: flex-end; 
 +    align-items: center; 
 + 
 +    margin: -8px 0 14px; 
 +    padding: 0 4px; 
 +} 
 + 
 +.home-search-form { 
 +    display: flex !important; 
 +    flex-direction: row !important; 
 +    align-items: stretch !important; 
 + 
 +    width: 100%; 
 +    max-width: 390px; 
 +    height: 42px; 
 + 
 +    margin: 0 !important; 
 +    padding: 0 !important; 
 + 
 +    background: #FFFFFF; 
 + 
 +    border: 1px solid #E3E8EF !important; 
 +    border-radius: 11px; 
 + 
 +    overflow: hidden; 
 + 
 +    box-sizing: border-box; 
 + 
 +    box-shadow: 
 +        0 4px 14px 
 +        rgba(16,24,40,.07); 
 + 
 +    transition: 
 +        border-color .18s ease, 
 +        box-shadow .18s ease; 
 +} 
 + 
 +.home-search-form:focus-within { 
 +    border-color: #28689F !important; 
 + 
 +    box-shadow: 
 +        0 0 0 3px 
 +        rgba(40,104,159,.10), 
 +        0 4px 14px 
 +        rgba(16,24,40,.07); 
 +} 
 + 
 +.home-search-input { 
 +    flex: 1 1 auto !important; 
 + 
 +    width: auto !important; 
 +    min-width: 0 !important; 
 +    height: 40px !important; 
 + 
 +    margin: 0 !important; 
 +    padding: 0 15px !important; 
 + 
 +    border: 0 !important; 
 +    border-radius: 0 !important; 
 + 
 +    outline: 0 !important; 
 + 
 +    background: #FFFFFF !important; 
 + 
 +    color: #1D2939 !important; 
 + 
 +    font-family: 
 +        -apple-system, 
 +        BlinkMacSystemFont, 
 +        "Segoe UI", 
 +        Arial, 
 +        sans-serif; 
 + 
 +    font-size: 13.5px !important; 
 +    line-height: 40px !important; 
 + 
 +    box-sizing: border-box !important; 
 + 
 +    box-shadow: none !important; 
 +} 
 + 
 +.home-search-input::placeholder { 
 +    color: #98A2B3; 
 +} 
 + 
 +.home-search-button { 
 +    flex: 0 0 48px !important; 
 + 
 +    display: flex !important; 
 +    align-items: center !important; 
 +    justify-content: center !important; 
 + 
 +    width: 48px !important; 
 +    min-width: 48px !important; 
 +    height: 40px !important; 
 + 
 +    margin: 0 !important; 
 +    padding: 0 !important; 
 + 
 +    border: 0 !important; 
 +    border-radius: 0 !important; 
 + 
 +    background: #28689F !important; 
 +    color: #FFFFFF !important; 
 + 
 +    box-sizing: border-box !important; 
 + 
 +    cursor: pointer; 
 +} 
 + 
 +.home-search-button:hover, 
 +.home-search-button:focus { 
 +    background: #20567F !important; 
 +} 
 + 
 +.home-search-button svg { 
 +    display: block !important; 
 + 
 +    width: 18px !important; 
 +    height: 18px !important; 
 + 
 +    margin: 0 !important; 
 + 
 +    fill: none !important; 
 +    stroke: currentColor !important; 
 + 
 +    stroke-width: 2; 
 +    stroke-linecap: round; 
 +    stroke-linejoin: round; 
 +} 
 + 
 +@media (max-width: 600px) { 
 + 
 +    .home-search-row { 
 +        margin: -4px 0 12px; 
 +    } 
 + 
 +    .home-search-form { 
 +        max-width: 100%; 
 +    } 
 +} 
 + 
 +/* ============================================================ 
 +   RESPONSIVE 
 +   ============================================================ */ 
 + 
 +@media (max-width: 1000px) { 
 + 
 +    .home-infobar { 
 + 
 +        grid-template-columns: 
 +            repeat( 
 +                2, 
 +                minmax(0,1fr) 
 +            ); 
 +    } 
 + 
 + 
 +    .home-cards { 
 + 
 +        grid-template-columns: 
 +            repeat( 
 +                2, 
 +                minmax(0,1fr) 
 +            ); 
 +    } 
 +} 
 + 
 + 
 +@media (max-width: 560px) { 
 + 
 +    .home-wrap { 
 + 
 +        padding-top: 14px; 
 +    } 
 + 
 + 
 +    .home-news { 
 + 
 +        height: 48px; 
 + 
 +        margin-bottom: 22px; 
 +    } 
 + 
 + 
 +    .home-news-item { 
 + 
 +        padding: 
 +            0 25px; 
 + 
 +        font-size: 11.5px; 
 +    } 
 + 
 + 
 +    .home-hero { 
 + 
 +        padding: 
 +            10px 8px 18px; 
 +    } 
 + 
 + 
 +    .home-hero h1 { 
 + 
 +        font-size: 23px; 
 +    } 
 + 
 + 
 +    .home-infobar { 
 + 
 +        grid-template-columns: 
 +            1fr; 
 +    } 
 + 
 + 
 +    .home-cards { 
 + 
 +        grid-template-columns: 
 +            1fr; 
 +    } 
 + 
 + 
 +    .home-card { 
 + 
 +        min-height: auto; 
 +    } 
 + 
 + 
 +    .home-citation { 
 + 
 +        padding: 
 +            20px 18px 20px 58px; 
 +    } 
 + 
 + 
 +    .home-citation-symbol { 
 + 
 +        left: 15px; 
 + 
 +        font-size: 50px; 
 +    } 
 +}
  
-.home-social { display: flex; gap: 12px; margin-top: 8px; } 
-.home-social-item { width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center; text-decoration: none; transition: transform 0.15s; } 
-.home-social-item:hover { transform: translateY(-2px); } 
-.home-social-item svg { width: 20px; height: 20px; } 
 </style>'; </style>';
 +
 +
 +/* ============================================================
 +   DEBUT PAGE
 +   ============================================================ */
  
 echo '<div class="home-wrap">'; echo '<div class="home-wrap">';
  
-// ── Hero ────────────────────────────────────────────────────── + 
-echo '<div class="home-hero"> +/* ============================================================ 
-    <img src="/lib/exe/fetch.php?media=wiki:gni-logo.png" alt="Logo GNI"> +   BANDEAU ERASMUS DAYS 
-    <h1>Bienvenue sur l\'extranet du GNI</h1> +   ============================================================ */ 
-    <span class="home-hero-tag">Le point d\'entrée de toutes les informations internes du GNI</span>+ 
 +$erasmus_groupe = " 
 +<div class='home-news-group'> 
 +    <a class='home-news-item' href='https://www.erasmusdays.eu/' target='_blank' rel='noopener noreferrer' style='color:#fff;text-decoration:none;'> 
 +        <span class='home-news-emoji'>🇪🇺</span> 
 +        <span class='home-news-badge'>Erasmus Days</span> 
 +        <strong>Erasmus Days • du 12 au 17 octobre</strong> 
 +        <span>Découvrez les événements organisés partout en Europe 🌍</span> 
 +        <strong>👉 Cliquez ici</strong> 
 +    </a> 
 +    <span class='home-news-dot'></span> 
 +    <a class='home-news-item' href='https://forms.cloud.microsoft/Pages/ResponsePage.aspx?id=5a-At458nEqckiTaLbb9vkm-VdUzXk1AqgsFPBoCxuxUNjVXRVNRMkdJWVQ4UURRWVVKUENSMkNUUi4u' target='_blank' rel='noopener noreferrer' style='color:#fff;text-decoration:none;'> 
 +        <span class='home-news-emoji'>📝</span> 
 +        <span class='home-news-badge'>Questionnaire</span> 
 +        <strong>Participez au questionnaire GNI</strong> 
 +        <span>Donnez votre avis en quelques clics</span> 
 +        <strong>👉 Répondre au formulaire</strong> 
 +    </a> 
 +    <span class='home-news-dot'></span> 
 +</div>"; 
 + 
 +echo " 
 +<div class='home-news home-anim' aria-label='Actualités et liens utiles'> 
 +    <div class='home-news-track'> 
 +        {$erasmus_groupe} 
 +        {$erasmus_groupe} 
 +    </div> 
 +</div>"; 
 + 
 + 
 +/* ============================================================ 
 +   RECHERCHE DOKUWIKI SOUS GRETA NEWS 
 +   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<div class="home-search-row home-anim"> 
 +    <form class="home-search-form" action="/doku.php" method="get" role="search"> 
 +        <input type="hidden" name="do" value="search"> 
 +        <input 
 +            class="home-search-input" 
 +            type="text" 
 +            name="q" 
 +            placeholder="Rechercher sur l\'extranet..." 
 +            autocomplete="off" 
 +            aria-label="Rechercher sur l\'extranet" 
 +        > 
 +        <button class="home-search-button" type="submit" title="Rechercher" aria-label="Rechercher"> 
 +            <svg viewBox="0 0 24 24" aria-hidden="true"> 
 +                <circle cx="11" cy="11" r="7"></circle> 
 +                <path d="M20 20l-4-4"></path> 
 +            </svg> 
 +        </button> 
 +    </form>
 </div>'; </div>';
  
-echo '<p style="font-size:13px;color:#666;line-height:1.6;text-align:center;max-width:600px;margin:0 auto 8px"> 
-    Retrouvez ici toutes les catégories du site : administratif, informatique, documents qualité, résultats et bien plus, accessibles directement ci-dessous ou via la barre de navigation. 
-</p>'; 
  
-// ── Recherche ───────────────────────────────────────────────── +/* ============================================================ 
-echo '<div class="home-search-hint"> +   HERO 
-    <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="#378ADD" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg> +   ============================================================ */ 
-    <span>Vous pouvez effectuer une recherche dans l\'intégralité du site via le formulaire <strong>Rechercher</strong>, en haut à droite de la page.</span>+ 
 +echo ' 
 + 
 +<div class="home-hero home-anim"> 
 + 
 +    <img 
 +        src="/lib/exe/fetch.php?media=wiki:gni-logo.png" 
 +        alt="Logo GNI" 
 +    > 
 + 
 + 
 +    <div 
 +        class="home-hero-greeting" 
 +        id="home-greeting" 
 +    > 
 +        Bonjour 
 +    </div> 
 + 
 + 
 +    <h1> 
 +        Bienvenue sur l\'extranet du GNI 
 +    </h1> 
 + 
 + 
 +    <div class="home-hero-subtitle"> 
 + 
 +        Retrouvez vos informations, 
 +        applications, procédures et ressources 
 +        internes au même endroit. 
 + 
 +    </div> 
 + 
 + 
 +    <div 
 +        class="home-hero-clock" 
 +        id="home-clock" 
 +    ></div> 
 + 
 +    <div> 
 +        <a 
 +            class="home-presences-hero-link" 
 +            href="/doku.php?id=admin:presences_v_test" 
 +            title="Ouvrir le tableau des présences" 
 +        > 
 +            📋 Tableau des présences 
 +        </a> 
 +    </div> 
 </div>'; </div>';
  
-// ── Sections principales ───────────────────────────────────── + 
-echo '<div class="home-section-label">Explorer le site</div>';+/* ============================================================ 
 +   CARTES INFOS 
 +   ============================================================ */ 
 + 
 +echo '<div class="home-infobar home-anim">'; 
 + 
 + 
 +/* FETE */ 
 + 
 +echo " 
 + 
 +<div class='home-info-item'> 
 + 
 +    <div class='home-info-icon home-info-icon-fete'> 
 +        🎉 
 +    </div> 
 + 
 + 
 +    <div class='home-info-text'> 
 + 
 +        <div class='home-info-label'> 
 +            Bonne fête 
 +        </div> 
 + 
 +        <div class='home-info-value'> 
 +            {$fete_nom} 
 +        </div> 
 + 
 +    </div> 
 + 
 +</div>"; 
 + 
 + 
 +/* FERIE */ 
 + 
 +echo " 
 + 
 +<div class='home-info-item'> 
 + 
 +    <div class='home-info-icon home-info-icon-ferie'> 
 +        📅 
 +    </div> 
 + 
 + 
 +    <div class='home-info-text'> 
 + 
 +        <div class='home-info-label'> 
 +            Prochain jour férié 
 +        </div> 
 + 
 +        <div 
 +            class='home-info-value' 
 +            title='{$prochain_ferie_nom}' 
 +        > 
 +            {$prochain_ferie_nom} 
 +        </div> 
 + 
 +        <div class='home-info-detail'> 
 +            {$texte_ferie} 
 +        </div> 
 + 
 +    </div> 
 + 
 +</div>"; 
 + 
 + 
 +/* SEMAINE */ 
 + 
 +echo " 
 + 
 +<div class='home-info-item'> 
 + 
 +    <div class='home-info-icon home-info-icon-semaine'> 
 +        🗓️ 
 +    </div> 
 + 
 + 
 +    <div class='home-info-text'> 
 + 
 +        <div class='home-info-label'> 
 +            Semaine 
 +        </div> 
 + 
 +        <div class='home-info-value'> 
 +            N° {$numero_semaine} 
 +        </div> 
 + 
 +        <div class='home-info-detail'> 
 +            {$annee_semaine} 
 +        </div> 
 + 
 +    </div> 
 + 
 +</div>"; 
 + 
 + 
 +/* VISITES */ 
 + 
 +echo " 
 + 
 +<div class='home-info-item'> 
 + 
 +    <div class='home-info-icon home-info-icon-visites'> 
 +        👁️ 
 +    </div> 
 + 
 + 
 +    <div class='home-info-text'> 
 + 
 +        <div class='home-info-label'> 
 +            Visites aujourd'hui 
 +        </div> 
 + 
 +        <div class='home-info-value'> 
 +            {$compteur_visites} 
 +        </div> 
 + 
 +    </div> 
 + 
 +</div>"; 
 + 
 + 
 +echo '</div>'; 
 + 
 + 
 +/* ============================================================ 
 +   CITATION 
 +   ============================================================ */ 
 + 
 +echo " 
 + 
 +<div class='home-citation home-anim'> 
 + 
 +    <div class='home-citation-symbol'> 
 +        ❝ 
 +    </div> 
 + 
 + 
 +    <div class='home-citation-label'> 
 +        ✨ Citation du jour 
 +    </div> 
 + 
 + 
 +    <div class='home-citation-texte'> 
 +        {$citation_texte} 
 +    </div> 
 + 
 + 
 +    <div class='home-citation-auteur'> 
 +        — {$citation_auteur} 
 +    </div> 
 + 
 +</div>"; 
 + 
 + 
 +/* ============================================================ 
 +   HORLOGE / SALUTATION AUTOMATIQUE 
 +   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<script> 
 + 
 +(function () { 
 + 
 +    function majHorloge() { 
 + 
 +        var maintenant = 
 +            new Date(); 
 + 
 +        var heure = 
 +            maintenant.getHours(); 
 + 
 +        var salutation = 
 +            "Bonsoir 🌙"; 
 + 
 + 
 +        if ( 
 +            heure >= 5 && 
 +            heure < 12 
 +        ) { 
 + 
 +            salutation = 
 +                "Bonjour, bonne matinée ☀️"; 
 + 
 +        } 
 + 
 +        else if ( 
 +            heure >= 12 && 
 +            heure < 14 
 +        ) { 
 + 
 +            salutation = 
 +                "Bon appétit et bonne pause déjeuner 🍽️"; 
 + 
 +        } 
 + 
 +        else if ( 
 +            heure >= 14 && 
 +            heure < 18 
 +        ) { 
 + 
 +            salutation = 
 +                "Bon après-midi 👋"; 
 + 
 +        } 
 + 
 +        else if ( 
 +            heure >= 18 && 
 +            heure < 22 
 +        ) { 
 + 
 +            salutation = 
 +                "Bonsoir, belle fin de journée 🌆"; 
 +        } 
 + 
 + 
 +        var greeting = 
 +            document.getElementById( 
 +                "home-greeting" 
 +            ); 
 + 
 + 
 +        if (greeting) { 
 + 
 +            greeting.innerText = 
 +                salutation; 
 +        } 
 + 
 + 
 +        var options = { 
 + 
 +            weekday: "long", 
 + 
 +            day: "numeric", 
 + 
 +            month: "long", 
 + 
 +            year: "numeric", 
 + 
 +            hour: "2-digit", 
 + 
 +            minute: "2-digit" 
 + 
 +        }; 
 + 
 + 
 +        var texte = 
 +            maintenant 
 +            .toLocaleDateString( 
 +                "fr-FR", 
 +                options 
 +            ); 
 + 
 + 
 +        var clock = 
 +            document.getElementById( 
 +                "home-clock" 
 +            ); 
 + 
 + 
 +        if (clock) { 
 + 
 +            clock.innerText = 
 +                texte.charAt(0).toUpperCase() 
 +                + 
 +                texte.slice(1); 
 +        } 
 +    } 
 + 
 + 
 +    majHorloge(); 
 + 
 + 
 +    setInterval( 
 +        majHorloge, 
 +        30000 
 +    ); 
 + 
 +})(); 
 + 
 +</script>'; 
 + 
 + 
 +/* ============================================================ 
 +   EXPLORER 
 +   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<div class="home-section-heading"> 
 + 
 +    <div class="home-section-label"> 
 +        Explorer le site 
 +    </div> 
 + 
 +    <div class="home-section-line"></div> 
 + 
 +</div>'; 
 + 
 echo '<div class="home-cards">'; echo '<div class="home-cards">';
 +
 +
 foreach ($SECTIONS as $s) { foreach ($SECTIONS as $s) {
-    $titre = htmlspecialchars($s['titre']); 
-    $desc  = htmlspecialchars($s['desc']); 
-    $url   = htmlspecialchars($s['url']); 
  
-    echo "<a class='home-card' href='{$url}' +    $titre = 
-        onmouseover=\"this.style.borderColor='{$s['color']}';this.style.background='{$s['bg']}'\" +        htmlspecialchars($s['titre']); 
-        onmouseout=\"this.style.borderColor='#dde3ec';this.style.background='#fff'\"> + 
-        <div class='home-card-icon' style='background:{$s['bg']}'> +    $desc = 
-            <svg viewBox='0 0 24 24' fill='none' stroke='{$s['color']}' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'>{$s['icon']}</svg>+        htmlspecialchars($s['desc']); 
 + 
 +    $url = 
 +        htmlspecialchars($s['url']); 
 + 
 + 
 +    echo " 
 + 
 +    <a 
 +        class='home-card home-anim' 
 +        href='{$url}' 
 +    > 
 + 
 +        <div class='home-card-top'> 
 + 
 + 
 +            <div 
 +                class='home-card-icon' 
 +                style=' 
 +                    background: {$s['bg']}; 
 +                    color: {$s['color']}; 
 +                ' 
 +            > 
 + 
 +                <svg 
 +                    viewBox='0 0 24 24' 
 +                    fill='none' 
 +                    stroke='currentColor' 
 +                    stroke-width='1.7' 
 +                    stroke-linecap='round' 
 +                    stroke-linejoin='round' 
 +                > 
 + 
 +                    {$s['icon']} 
 + 
 +                </svg> 
 + 
 +            </div> 
 + 
 + 
 +            <div class='home-card-arrow'> 
 + 
 +                <svg 
 +                    viewBox='0 0 24 24' 
 +                    fill='none' 
 +                    stroke='currentColor' 
 +                    stroke-width='2' 
 +                    stroke-linecap='round' 
 +                    stroke-linejoin='round' 
 +                > 
 + 
 +                    <path d='M5 12h14'/> 
 + 
 +                    <path d='M13 6l6 6-6 6'/> 
 + 
 +                </svg> 
 + 
 +            </div> 
         </div>         </div>
-        <div class='home-card-title'>{$titre}</div> + 
-        <div class='home-card-desc'>{$desc}</div>+ 
 +        <div class='home-card-title'> 
 +            {$titre} 
 +        </div> 
 + 
 + 
 +        <div class='home-card-desc'> 
 +            {$desc} 
 +        </div> 
     </a>";     </a>";
 } }
 +
 +
 echo '</div>'; echo '</div>';
  
-// ── Liens rapides ───────────────────────────────────────────── + 
-echo '<div class="home-section-label">Accès rapide</div>';+/* ============================================================ 
 +   ACCES RAPIDE 
 +   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<div class="home-section-heading"> 
 + 
 +    <div class="home-section-label"> 
 +        Accès rapide 
 +    </div> 
 + 
 +    <div class="home-section-line"></div> 
 + 
 +</div>'; 
 + 
 echo '<div class="home-quicklinks">'; echo '<div class="home-quicklinks">';
 +
 +
 foreach ($LIENS_RAPIDES as $l) { foreach ($LIENS_RAPIDES as $l) {
-    $titre = htmlspecialchars($l['titre']); + 
-    $url   = htmlspecialchars($l['url']); +    $titre = 
-    echo "<a class='home-quicklink' href='{$url}'>{$titre} →</a>";+        htmlspecialchars($l['titre']); 
 + 
 +    $url = 
 +        htmlspecialchars($l['url']); 
 + 
 + 
 +    echo " 
 + 
 +    <a 
 +        class='home-quicklink' 
 +        href='{$url}' 
 +    > 
 + 
 +        {$titre} 
 + 
 + 
 +        <svg 
 +            viewBox='0 0 24 24' 
 +            fill='none' 
 +            stroke='currentColor' 
 +            stroke-width='2' 
 +            stroke-linecap='round' 
 +            stroke-linejoin='round' 
 +        > 
 + 
 +            <path d='M5 12h14'/> 
 + 
 +            <path d='M13 6l6 6-6 6'/> 
 + 
 +        </svg> 
 + 
 +    </a>";
 } }
 +
 +
 echo '</div>'; echo '</div>';
  
-// ── Feedback ────────────────────────────────────────────────── + 
-echo '<div class="home-feedback"> +/* ============================================================ 
-    <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="#B45309" stroke-width="2"><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/></svg> +   FEEDBACK 
-    <span>Une remarque, une idée d\'amélioration ? <a href="https://survey.gretani.com/index.php/892218?newtest=Y&lang=fr" target="_blank">Utilisez le questionnaire « Dites-le-nous ? »</a></span>+   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<div class="home-feedback"> 
 + 
 +    <div class="home-feedback-icon"> 
 + 
 +        <svg 
 +            viewBox="0 0 24 24" 
 +            fill="none" 
 +            stroke="currentColor" 
 +            stroke-width="1.8" 
 +            stroke-linecap="round" 
 +            stroke-linejoin="round" 
 +        > 
 + 
 +            <path d="M12 20h9"/> 
 + 
 +            <path d="M16.5 3.5a2.1 2.1 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/> 
 + 
 +        </svg> 
 + 
 +    </div> 
 + 
 + 
 +    <span> 
 + 
 +        Une remarque ou une idée d\'amélioration ? 
 + 
 +        <a 
 +            href="https://survey.gretani.com/index.php/892218?newtest=Y&lang=fr" 
 +            target="_blank" 
 +        > 
 +            Dites-le-nous 
 +        </a> 
 + 
 +    </span> 
 </div>'; </div>';
  
-// ── Réseaux sociaux ─────────────────────────────────────────── + 
-echo '<div class="home-section-label">Sites externes du GNI</div>';+/* ============================================================ 
 +   SITES EXTERNES 
 +   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<div class="home-section-heading"> 
 + 
 +    <div class="home-section-label"> 
 +        Sites externes du GNI 
 +    </div> 
 + 
 +    <div class="home-section-line"></div> 
 + 
 +</div>'; 
 + 
 echo '<div class="home-social">'; echo '<div class="home-social">';
 +
 +
 foreach ($RESEAUX as $r) { foreach ($RESEAUX as $r) {
-    $titre = htmlspecialchars($r['titre']); + 
-    $url   = htmlspecialchars($r['url']); +    $titre = 
-    echo "<a class='home-social-item' href='{$url}' target='_blank' title='{$titre}' style='background:{$r['color']}1A'> +        htmlspecialchars($r['titre']); 
-        <svg viewBox='0 0 24 24' fill='none' stroke='{$r['color']}' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'>{$r['icon']}</svg>+ 
 +    $url = 
 +        htmlspecialchars($r['url']); 
 + 
 + 
 +    echo " 
 + 
 +    <a 
 +        class='home-social-item' 
 +        href='{$url}' 
 +        target='_blank' 
 +        title='{$titre}' 
 +    > 
 + 
 +        <svg 
 +            viewBox='0 0 24 24' 
 +            fill='none' 
 +            stroke='{$r['color']}' 
 +            stroke-width='1.8' 
 +            stroke-linecap='round' 
 +            stroke-linejoin='round' 
 +        > 
 + 
 +            {$r['icon']} 
 + 
 +        </svg> 
     </a>";     </a>";
 } }
 +
 +
 echo '</div>'; echo '</div>';
 +
 +
 +/* ============================================================
 +   FIN
 +   ============================================================ */
  
 echo '</div>'; echo '</div>';
  
 </PHP> </PHP>

Warning: Trying to access array offset on value of type bool in /var/www/html/lib/tpl/bootstrap3/Template.php on line 590
  • start.1788767002.txt.gz
  • Dernière modification : 07/09/2026 08:43
  • de ajean