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édentesRévision précédente
Prochaine révision
Révision précédente
start [15/09/2026 18:27] – 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, conges, 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, acces a 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, procedures, tutoriels, applicatifs...',       'color' => '#C2477D', 'bg' => '#FCE9F2', 'icon' => '<path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/>'], +        'titre' => 'Administratif', 
-    ['titre' => 'Resultats',            'url' => '/doku.php?id=resultats',          'desc' => 'Resultats 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 dediees',                     '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' => 'Representants du Personnel : comptes rendus, oeuvres 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 Deplacements : guides, FAQ, textes...', 'color' => '#C2477D', 'bg' => '#FCE9F2', '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 electronique 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 - Oeuvres 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'] 
-    ['titre' => 'Newsletter',            'url' => 'https://files.gretani.com/news/GretaNews%20Septembre%202026.mp4', 'target' => '_blank'],+
 ]; ];
 +
 +
 +/* ============================================================
 +   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 = [ $FETES = [
- '1-1'=>'Jour de l\'An','2-1'=>'Basile','3-1'=>'Genevieve','4-1'=>'Odilon','5-1'=>'Edouard','6-1'=>'Melaine','7-1'=>'Raymond',+ 
 + '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',  '8-1'=>'Lucien','9-1'=>'Alix','10-1'=>'Guillaume','11-1'=>'Paulin','12-1'=>'Tatiana','13-1'=>'Yvette','14-1'=>'Nina',
- '15-1'=>'Remi','16-1'=>'Marcel','17-1'=>'Roseline','18-1'=>'Prisca','19-1'=>'Marius','20-1'=>'Sebastien','21-1'=>'Agnes', + '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'=>'Francois de Sales','25-1'=>'Conversion de Paul','26-1'=>'Paule','27-1'=>'Angele',+ '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',  '28-1'=>'Thomas d\'Aquin','29-1'=>'Gildas','30-1'=>'Martine','31-1'=>'Marcelle',
- '1-2'=>'Ella','2-2'=>'Presentation','3-2'=>'Blaise','4-2'=>'Veronique','5-2'=>'Agathe','6-2'=>'Gaston','7-2'=>'Eugenie', + 
- '8-2'=>'Jacqueline','9-2'=>'Apolline','10-2'=>'Arnaud','11-2'=>'Notre-Dame de Lourdes','12-2'=>'Felix','13-2'=>'Beatrice', + '1-2'=>'Ella','2-2'=>'Présentation','3-2'=>'Blaise','4-2'=>'Véronique','5-2'=>'Agathe','6-2'=>'Gaston','7-2'=>'Eugénie', 
- '14-2'=>'Valentin','15-2'=>'Claude','16-2'=>'Julienne','17-2'=>'Alexis','18-2'=>'Bernadette','19-2'=>'Gabin','20-2'=>'Aimee', + '8-2'=>'Jacqueline','9-2'=>'Apolline','10-2'=>'Arnaud','11-2'=>'Notre-Dame de Lourdes','12-2'=>'Félix','13-2'=>'Béatrice', 
- '21-2'=>'Pierre-Damien','22-2'=>'Isabelle','23-2'=>'Lazare','24-2'=>'Modeste','25-2'=>'Romeo','26-2'=>'Nestor',+ '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',  '27-2'=>'Honorine','28-2'=>'Romain','29-2'=>'Auguste',
- '1-3'=>'Aubin','2-3'=>'Charles le Bon','3-3'=>'Guenole','4-3'=>'Casimir','5-3'=>'Olive','6-3'=>'Colette','7-3'=>'Felicite', + 
- '8-3'=>'Jean de Dieu','9-3'=>'Francoise','10-3'=>'Vivien','11-3'=>'Rosine','12-3'=>'Justine','13-3'=>'Rodrigue', + '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é', 
- '14-3'=>'Mathilde','15-3'=>'Louise de Marillac','16-3'=>'Benedicte','17-3'=>'Patrick','18-3'=>'Cyrille','19-3'=>'Joseph', + '8-3'=>'Jean de Dieu','9-3'=>'Françoise','10-3'=>'Vivien','11-3'=>'Rosine','12-3'=>'Justine','13-3'=>'Rodrigue', 
- '20-3'=>'Herbert','21-3'=>'Clemence','22-3'=>'Lea','23-3'=>'Victorien','24-3'=>'Catherine de Suede','25-3'=>'Humbert', + '14-3'=>'Mathilde','15-3'=>'Louise de Marillac','16-3'=>'Bénédicte','17-3'=>'Patrick','18-3'=>'Cyrille','19-3'=>'Joseph', 
- '26-3'=>'Larissa','27-3'=>'Habib','28-3'=>'Gontran','29-3'=>'Gwladys','30-3'=>'Amedee','31-3'=>'Benjamin', + '20-3'=>'Herbert','21-3'=>'Clémence','22-3'=>'Léa','23-3'=>'Victorien','24-3'=>'Catherine de Suède','25-3'=>'Humbert', 
- '1-4'=>'Hugues','2-4'=>'Sandrine','3-4'=>'Richard','4-4'=>'Isidore','5-4'=>'Irene','6-4'=>'Marcellin','7-4'=>'Jean-Baptiste de la Salle',+ '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',  '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'=>'Benoit-Joseph','17-4'=>'Anicet','18-4'=>'Parfait','19-4'=>'Emma','20-4'=>'Odette','21-4'=>'Anselme', + '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'=>'Fidele','25-4'=>'Marc','26-4'=>'Alida','27-4'=>'Zita','28-4'=>'Valerie',+ '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',  '29-4'=>'Catherine de Sienne','30-4'=>'Robert',
- '1-5'=>'Fete du Travail','2-5'=>'Boris','3-5'=>'Philippe et Jacques','4-5'=>'Sylvain','5-5'=>'Judith','6-5'=>'Prudence', + 
- '7-5'=>'Gisele','8-5'=>'Victoire 1945','9-5'=>'Pacome','10-5'=>'Solange','11-5'=>'Estelle','12-5'=>'Achille', + '1-5'=>'Fête du Travail','2-5'=>'Boris','3-5'=>'Philippe et Jacques','4-5'=>'Sylvain','5-5'=>'Judith','6-5'=>'Prudence', 
- '13-5'=>'Rolande','14-5'=>'Matthias','15-5'=>'Denise','16-5'=>'Honore','17-5'=>'Pascal','18-5'=>'Eric','19-5'=>'Yves', + '7-5'=>'Gisèle','8-5'=>'Victoire 1945','9-5'=>'Pacôme','10-5'=>'Solange','11-5'=>'Estelle','12-5'=>'Achille', 
- '20-5'=>'Bernardin','21-5'=>'Constantin','22-5'=>'Emile','23-5'=>'Didier','24-5'=>'Donatien','25-5'=>'Sophie', + '13-5'=>'Rolande','14-5'=>'Matthias','15-5'=>'Denise','16-5'=>'Honoré','17-5'=>'Pascal','18-5'=>'Éric','19-5'=>'Yves', 
- '26-5'=>'Berenger','27-5'=>'Augustin','28-5'=>'Germain','29-5'=>'Aymard','30-5'=>'Ferdinand','31-5'=>'Visitation', + '20-5'=>'Bernardin','21-5'=>'Constantin','22-5'=>'Émile','23-5'=>'Didier','24-5'=>'Donatien','25-5'=>'Sophie', 
- '1-6'=>'Justin','2-6'=>'Blandine','3-6'=>'Kevin','4-6'=>'Clotilde','5-6'=>'Igor','6-6'=>'Norbert','7-6'=>'Gilbert', + '26-5'=>'Bérenger','27-5'=>'Augustin','28-5'=>'Germain','29-5'=>'Aymard','30-5'=>'Ferdinand','31-5'=>'Visitation', 
- '8-6'=>'Medard','9-6'=>'Diane','10-6'=>'Landry','11-6'=>'Barnabe','12-6'=>'Guy','13-6'=>'Antoine de Padoue', + 
- '14-6'=>'Elisee','15-6'=>'Germaine','16-6'=>'Jean-Francois Regis','17-6'=>'Herve','18-6'=>'Leonce','19-6'=>'Romuald', + '1-6'=>'Justin','2-6'=>'Blandine','3-6'=>'Kévin','4-6'=>'Clotilde','5-6'=>'Igor','6-6'=>'Norbert','7-6'=>'Gilbert', 
- '20-6'=>'Silvere','21-6'=>'Rodolphe','22-6'=>'Alban','23-6'=>'Audrey','24-6'=>'Jean-Baptiste','25-6'=>'Prosper', + '8-6'=>'Médard','9-6'=>'Diane','10-6'=>'Landry','11-6'=>'Barnabé','12-6'=>'Guy','13-6'=>'Antoine de Padoue', 
- '26-6'=>'Anthelme','27-6'=>'Fernand','28-6'=>'Irenee','29-6'=>'Pierre et Paul','30-6'=>'Martial',+ '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',  '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'=>'Benoit','12-7'=>'Olivier', + '7-7'=>'Raoul','8-7'=>'Thibaut','9-7'=>'Amandine','10-7'=>'Ulrich','11-7'=>'Benoît','12-7'=>'Olivier', 
- '13-7'=>'Henri','14-7'=>'Fete Nationale','15-7'=>'Donald','16-7'=>'Notre-Dame du Mont-Carmel','17-7'=>'Charlotte', + '13-7'=>'Henri','14-7'=>'Fête Nationale','15-7'=>'Donald','16-7'=>'Notre-Dame du Mont-Carmel','17-7'=>'Charlotte', 
- '18-7'=>'Frederic','19-7'=>'Arsene','20-7'=>'Marina','21-7'=>'Victor','22-7'=>'Marie-Madeleine','23-7'=>'Brigitte',+ '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',  '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',  '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',  '1-8'=>'Alphonse','2-8'=>'Julien-Eymard','3-8'=>'Lydie','4-8'=>'Jean-Marie Vianney','5-8'=>'Abel','6-8'=>'Transfiguration',
- '7-8'=>'Gaetan','8-8'=>'Dominique','9-8'=>'Amour','10-8'=>'Laurent','11-8'=>'Claire','12-8'=>'Clarisse', + '7-8'=>'Gaëtan','8-8'=>'Dominique','9-8'=>'Amour','10-8'=>'Laurent','11-8'=>'Claire','12-8'=>'Clarisse', 
- '13-8'=>'Hippolyte','14-8'=>'Evrard','15-8'=>'Assomption','16-8'=>'Armel','17-8'=>'Hyacinthe','18-8'=>'Helene', + '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'=>'Barthelemy',+ '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',  '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'=>'Gregoire','4-9'=>'Rosalie','5-9'=>'Raissa','6-9'=>'Bertrand','7-9'=>'Reine', + 
- '8-9'=>'Nativite de Marie','9-9'=>'Alain','10-9'=>'Ines','11-9'=>'Adelphe','12-9'=>'Apollinaire','13-9'=>'Aime', + '1-9'=>'Gilles','2-9'=>'Ingrid','3-9'=>'Grégoire','4-9'=>'Rosalie','5-9'=>'Raïssa','6-9'=>'Bertrand','7-9'=>'Reine', 
- '14-9'=>'La Sainte-Croix','15-9'=>'Roland','16-9'=>'Edith','17-9'=>'Renaud','18-9'=>'Nadege','19-9'=>'Emilie', + '8-9'=>'Nativité de Marie','9-9'=>'Alain','10-9'=>'Inès','11-9'=>'Adelphe','12-9'=>'Apollinaire','13-9'=>'Aimé', 
- '20-9'=>'Davy','21-9'=>'Matthieu','22-9'=>'Maurice','23-9'=>'Constant','24-9'=>'Thecle','25-9'=>'Hermann', + '14-9'=>'La Sainte-Croix','15-9'=>'Roland','16-9'=>'Édith','17-9'=>'Renaud','18-9'=>'Nadège','19-9'=>'Émilie', 
- '26-9'=>'Come et Damien','27-9'=>'Vincent de Paul','28-9'=>'Venceslas','29-9'=>'Michel, Gabriel, Raphael','30-9'=>'Jerome', + '20-9'=>'Davy','21-9'=>'Matthieu','22-9'=>'Maurice','23-9'=>'Constant','24-9'=>'Thècle','25-9'=>'Hermann', 
- '1-10'=>'Therese de l\'Enfant-Jesus','2-10'=>'Leger','3-10'=>'Gerard','4-10'=>'Francois d\'Assise','5-10'=>'Fleur', + '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', 
- '6-10'=>'Bruno','7-10'=>'Serge','8-10'=>'Pelagie','9-10'=>'Denis','10-10'=>'Ghislain','11-10'=>'Firmin', + 
- '12-10'=>'Wilfried','13-10'=>'Geraud','14-10'=>'Juste','15-10'=>'Therese d\'Avila','16-10'=>'Edwige', + '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', 
- '17-10'=>'Baudouin','18-10'=>'Luc','19-10'=>'Rene','20-10'=>'Adeline','21-10'=>'Celine','22-10'=>'Elodie', + '6-10'=>'Bruno','7-10'=>'Serge','8-10'=>'Pélagie','9-10'=>'Denis','10-10'=>'Ghislain','11-10'=>'Firmin', 
- '23-10'=>'Jean de Capistran','24-10'=>'Florentin','25-10'=>'Crepin','26-10'=>'Dimitri','27-10'=>'Emeline',+ '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',  '28-10'=>'Simon et Jude','29-10'=>'Narcisse','30-10'=>'Bienvenue','31-10'=>'Quentin',
- '1-11'=>'Toussaint','2-11'=>'Defunts','3-11'=>'Hubert','4-11'=>'Charles Borromee','5-11'=>'Sylvie','6-11'=>'Bertille', + 
- '7-11'=>'Carine','8-11'=>'Geoffroy','9-11'=>'Theodore','10-11'=>'Leon','11-11'=>'Armistice 1918','12-11'=>'Christian', + '1-11'=>'Toussaint','2-11'=>'Défunts','3-11'=>'Hubert','4-11'=>'Charles Borromée','5-11'=>'Sylvie','6-11'=>'Bertille', 
- '13-11'=>'Brice','14-11'=>'Sidoine','15-11'=>'Albert','16-11'=>'Marguerite','17-11'=>'Elisabeth de Hongrie', + '7-11'=>'Carine','8-11'=>'Geoffroy','9-11'=>'Théodore','10-11'=>'Léon','11-11'=>'Armistice 1918','12-11'=>'Christian', 
- '18-11'=>'Aude','19-11'=>'Tanguy','20-11'=>'Edmond','21-11'=>'Presentation de Marie','22-11'=>'Cecile', + '13-11'=>'Brice','14-11'=>'Sidoine','15-11'=>'Albert','16-11'=>'Marguerite','17-11'=>'Élisabeth de Hongrie', 
- '23-11'=>'Clement','24-11'=>'Flora','25-11'=>'Catherine Laboure','26-11'=>'Delphine','27-11'=>'Severin', + '18-11'=>'Aude','19-11'=>'Tanguy','20-11'=>'Edmond','21-11'=>'Présentation de Marie','22-11'=>'Cécile', 
- '28-11'=>'Jacques de la Marche','29-11'=>'Saturnin','30-11'=>'Andre', + '23-11'=>'Clément','24-11'=>'Flora','25-11'=>'Catherine Labouré','26-11'=>'Delphine','27-11'=>'Séverin', 
- '1-12'=>'Florence','2-12'=>'Viviane','3-12'=>'Francois-Xavier','4-12'=>'Barbara','5-12'=>'Gerald','6-12'=>'Nicolas', + '28-11'=>'Jacques de la Marche','29-11'=>'Saturnin','30-11'=>'André', 
- '7-12'=>'Ambroise','8-12'=>'Immaculee Conception','9-12'=>'Pierre Fourier','10-12'=>'Romaric','11-12'=>'Daniel', + 
- '12-12'=>'Jeanne-Francoise Chantal','13-12'=>'Lucie','14-12'=>'Odile','15-12'=>'Ninon','16-12'=>'Alice', + '1-12'=>'Florence','2-12'=>'Viviane','3-12'=>'François-Xavier','4-12'=>'Barbara','5-12'=>'Gérald','6-12'=>'Nicolas', 
- '17-12'=>'Judicael','18-12'=>'Gatien','19-12'=>'Urbain','20-12'=>'Theophile','21-12'=>'Pierre Canisius', + '7-12'=>'Ambroise','8-12'=>'Immaculée Conception','9-12'=>'Pierre Fourier','10-12'=>'Romaric','11-12'=>'Daniel', 
- '22-12'=>'Francoise-Xaviere','23-12'=>'Armand','24-12'=>'Adele','25-12'=>'Noel','26-12'=>'Etienne','27-12'=>'Jean', + '12-12'=>'Jeanne-Françoise Chantal','13-12'=>'Lucie','14-12'=>'Odile','15-12'=>'Ninon','16-12'=>'Alice', 
- '28-12'=>'Innocents','29-12'=>'David','30-12'=>'Roger','31-12'=>'Sylvestre',+ '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')); $cle_fete = ((int)date('j')) . '-' . ((int)date('n'));
-$fete_nom = isset($FETES[$cle_fete]) ? $FETES[$cle_fete] : 'Non repertorie';+ 
 +$fete_nom = isset($FETES[$cle_fete]) 
 +    ? $FETES[$cle_fete] 
 +    : 'Non répertorié'; 
 $fete_nom = htmlspecialchars($fete_nom); $fete_nom = htmlspecialchars($fete_nom);
 +
 +
 +/* ============================================================
 +   PAQUES
 +   ============================================================ */
  
 function calculer_paques($annee) { function calculer_paques($annee) {
 +
     $a = $annee % 19;     $a = $annee % 19;
     $b = intdiv($annee, 100);     $b = intdiv($annee, 100);
Ligne 115: Ligne 286:
     $l = (32 + 2 * $e + 2 * $i - $h - $k) % 7;     $l = (32 + 2 * $e + 2 * $i - $h - $k) % 7;
     $m = intdiv($a + 11 * $h + 22 * $l, 451);     $m = intdiv($a + 11 * $h + 22 * $l, 451);
 +
     $mois = intdiv($h + $l - 7 * $m + 114, 31);     $mois = intdiv($h + $l - 7 * $m + 114, 31);
     $jour = (($h + $l - 7 * $m + 114) % 31) + 1;     $jour = (($h + $l - 7 * $m + 114) % 31) + 1;
 +
     return mktime(0, 0, 0, $mois, $jour, $annee);     return mktime(0, 0, 0, $mois, $jour, $annee);
 } }
 +
 +
 +/* ============================================================
 +   JOURS FERIES
 +   ============================================================ */
  
 function jours_feries_annee($annee) { function jours_feries_annee($annee) {
 +
     $paques = calculer_paques($annee);     $paques = calculer_paques($annee);
 +
     return [     return [
-        $annee . '-01-01' => 'Jour de l\'An', + 
-        date('Y-m-d', $paques + 86400)      => 'Lundi de Paques', +        $annee . '-01-01' 
-        $annee . '-05-01' => 'Fete du Travail', +            => 'Jour de l\'An', 
-        $annee . '-05-08' => 'Victoire 1945', + 
-        date('Y-m-d', $paques + 39 * 86400) => 'Ascension', +        date('Y-m-d', $paques + 86400) 
-        date('Y-m-d', $paques + 50 * 86400) => 'Lundi de Pentecote', +            => 'Lundi de Pâques', 
-        $annee . '-07-14' => 'Fete Nationale', + 
-        $annee . '-08-15' => 'Assomption', +        $annee . '-05-01' 
-        $annee . '-11-01' => 'Toussaint', +            => 'Fête du Travail', 
-        $annee . '-11-11' => 'Armistice 1918', + 
-        $annee . '-12-25' => 'Noel',+        $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')); $aujourdhui = new DateTime(date('Y-m-d'));
 $annee_courante = (int)date('Y'); $annee_courante = (int)date('Y');
-$feries = array_merge(jours_feries_annee($annee_courante), jours_feries_annee($annee_courante + 1));+ 
 +$feries = array_merge( 
 +    jours_feries_annee($annee_courante), 
 +    jours_feries_annee($annee_courante + 1) 
 +); 
 ksort($feries); ksort($feries);
  
 $prochain_ferie_date = null; $prochain_ferie_date = null;
 $prochain_ferie_nom = null; $prochain_ferie_nom = null;
 +
 foreach ($feries as $date_str => $nom) { foreach ($feries as $date_str => $nom) {
 +
     $d = new DateTime($date_str);     $d = new DateTime($date_str);
 +
     if ($d >= $aujourdhui) {     if ($d >= $aujourdhui) {
 +
         $prochain_ferie_date = $d;         $prochain_ferie_date = $d;
         $prochain_ferie_nom = $nom;         $prochain_ferie_nom = $nom;
 +
         break;         break;
     }     }
 } }
-$jours_restants = $prochain_ferie_date ? (int)$aujourdhui->diff($prochain_ferie_date)->format('%a') : null; + 
-$prochain_ferie_nom = htmlspecialchars($prochain_ferie_nom); + 
-$prochain_ferie_date_fr = $prochain_ferie_date ? $prochain_ferie_date->format('d/m/Y') : '';+$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'); $numero_semaine = date('W');
-$annee_semaine  = date('Y');+$annee_semaine = date('Y'); 
 + 
 + 
 +/* ============================================================ 
 +   COMPTEUR DE VISITES DU JOUR 
 +   Remise à zéro automatique à chaque changement de date 
 +   ============================================================ */ 
 + 
 +$compteur_visites = '0';
  
-$compteur_visites = 'indisponible'; 
 if (defined('DOKU_INC')) { if (defined('DOKU_INC')) {
-    $chemin_compteur = DOKU_INC . 'data/meta/compteur_visites_accueil.txt'; + 
-    $valeur = 0; +    $chemin_compteur = 
-    $handle = @fopen($chemin_compteur, 'c+');+        DOKU_INC . 
 +        'data/meta/compteur_visites_accueil_jour.txt'; 
 + 
 +    $date_du_jour = date('Y-m-d'); 
 + 
 +    $handle = @fopen( 
 +        $chemin_compteur, 
 +        'c+' 
 +    ); 
     if ($handle) {     if ($handle) {
 +
         if (flock($handle, LOCK_EX)) {         if (flock($handle, LOCK_EX)) {
-            $contenu = fread($handle, 1024); + 
-            $valeur = (int)trim($contenu);+            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++;             $valeur++;
 +
 +            $donnees_a_enregistrer = [
 +                'date' => $date_du_jour,
 +                'visites' => $valeur
 +            ];
 +
             ftruncate($handle, 0);             ftruncate($handle, 0);
             rewind($handle);             rewind($handle);
-            fwrite($handle, (string)$valeur);+ 
 +            fwrite( 
 +                $handle, 
 +                json_encode($donnees_a_enregistrer) 
 +            ); 
             fflush($handle);             fflush($handle);
             flock($handle, LOCK_UN);             flock($handle, LOCK_UN);
 +
 +            $compteur_visites =
 +                number_format(
 +                    $valeur,
 +                    0,
 +                    ',',
 +                    ' '
 +                );
         }         }
 +
         fclose($handle);         fclose($handle);
-        $compteur_visites = number_format($valeur, 0, ',', ' '); 
     }     }
 } }
 +
 +
 +/* ============================================================
 +   CITATIONS
 +   ============================================================ */
  
 $CITATIONS = [ $CITATIONS = [
-    ['texte' => 'Le succes, c\'est se deplacer d\'echec en echec 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 succès, c\'est se déplacer d\'échec en échec sans perdre son enthousiasme.', 
-    ['texte' => 'Le meilleur moyen de predire l\'avenir, c\'est de le creer.', 'auteur' => 'Peter Drucker'], +        'auteur' => 'Winston Churchill' 
-    ['texte' => 'La qualite n\'est jamais un accident ; elle est toujours le resultat d\'un effort intelligent.', 'auteur' => 'John Ruskin'], +    ], 
-    ['texte' => 'Seul on va plus vite, ensemble on va plus loin.', 'auteur' => 'Proverbe africain'], + 
-    ['texte' => 'L\'important n\'est pas de gagner mais de bien lutter.', 'auteur' => 'Pierre de Coubertin'], +    [ 
-    ['texte' => 'Le savoir est la seule matiere qui s\'accroit quand on la partage.', 'auteur' => 'Socrate'], +        'texte' => 'Ce qui compte ce n\'est pas la position que l\'on occupe, mais la direction dans laquelle on avance.', 
-    ['texte' => 'Il n\'y a pas de vent favorable pour celui qui ne sait ou il va.', 'auteur' => 'Seneque'], +        'auteur' => 'Oliver Wendell Holmes' 
-    ['texte' => 'La motivation nous permet de commencer, l\'habitude nous permet de continuer.', 'auteur' => 'Jim Ryun'], +    ], 
-    ['texte' => 'Apprendre, c\'est comme ramer contre le courant : sitot qu\'on cesse, on recule.', 'auteur' => 'Proverbe chinois'], + 
-    ['texte' => 'Le travail d\'equipe divise la tache et multiplie le succes.', 'auteur' => 'Anonyme'], +    [ 
-    ['texte' => 'On ne voit bien qu\'avec le coeur. L\'essentiel est invisible pour les yeux.', 'auteur' => 'Antoine de Saint-Exupery'], +        'texte' => 'On ne fait bien que ce que l\'on fait avec plaisir.', 
-    ['texte' => 'Chaque jour est une nouvelle occasion de changer sa vie.', 'auteur' => 'Anonyme'], +        'auteur' => 'Denis Diderot' 
-    ['texte' => 'La perseverance est la cle de toute reussite.', 'auteur' => 'Anonyme'], +    ], 
-    ['texte' => 'Le doute est le commencement de la sagesse.', 'auteur' => 'Aristote'], + 
-    ['texte' => 'Ce que nous savons est une goutte d\'eau, ce que nous ignorons est un ocean.', 'auteur' => 'Isaac Newton'], +    [ 
-    ['texte' => 'La vie est ce qui arrive quand on est occupe a faire d\'autres projets.', 'auteur' => 'John Lennon'], +        'texte' => 'Le meilleur moyen de prédire l\'avenir, c\'est de le créer.', 
-    ['texte' => 'Il n\'est pas necessaire d\'esperer pour entreprendre, ni de reussir pour perseverer.', 'auteur' => 'Guillaume d\'Orange'], +        'auteur' => 'Peter Drucker' 
-    ['texte' => 'Les grandes choses ne sont jamais faites par une seule personne.', 'auteur' => 'Steve Jobs'], +    ], 
-    ['texte' => 'La creativite, c\'est l\'intelligence qui s\'amuse.', 'auteur' => 'Albert Einstein'], + 
-    ['texte' => 'On n\'apprend pas a nager sans se jeter a l\'eau.', 'auteur' => 'Proverbe francais'], +    [ 
-    ['texte' => 'Le futur appartient a ceux qui croient en la beaute de leurs reves.', 'auteur' => 'Eleanor Roosevelt'], +        'texte' => 'La qualité n\'est jamais un accident ; elle est toujours le résultat d\'un effort intelligent.', 
-    ['texte' => 'Ne comptez pas les jours, faites que les jours comptent.', 'auteur' => 'Muhammad Ali'], +        'auteur' => 'John Ruskin' 
-    ['texte' => 'Rien n\'est jamais perdu tant qu\'on garde le courage.', 'auteur' => 'Marc Levy'], +    ], 
-    ['texte' => 'L\'ordre regne, et le desordre aussi, parfois utilement.', 'auteur' => 'Anonyme'], + 
-    ['texte' => 'Un objectif sans plan n\'est qu\'un souhait.', 'auteur' => 'Antoine de Saint-Exupery'], +    [ 
-    ['texte' => 'La discipline est le pont entre les objectifs et les accomplissements.', 'auteur' => 'Jim Rohn'], +        'texte' => 'Seul on va plus vite, ensemble on va plus loin.', 
-    ['texte' => 'Le talent gagne des matchs, mais le travail d\'equipe gagne des championnats.', 'auteur' => 'Michael Jordan'], +        'auteur' => 'Proverbe africain' 
-    ['texte' => 'Ceux qui pensent ne pas avoir le temps de faire de l\'exercice devront tot ou tard trouver le temps pour la maladie.', 'auteur' => 'Edward Stanley'], +    ], 
-    ['texte' => 'Le changement est la loi de la vie.', 'auteur' => 'John F. Kennedy'], + 
-    ['texte' => 'La simplicite est la sophistication supreme.', 'auteur' => 'Leonard de Vinci'], +    [ 
-    ['texte' => 'Il vaut mieux allumer une bougie que maudire l\'obscurite.', 'auteur' => 'Confucius'], +        'texte' => 'Le savoir est la seule matière qui s\'accroît quand on la partage.', 
-    ['texte' => 'Ce qui ne me tue pas me rend plus fort.', 'auteur' => 'Friedrich Nietzsche'], +        'auteur' => 'Socrate' 
-    ['texte' => 'Le bonheur n\'est pas une destination, c\'est une facon de voyager.', 'auteur' => 'Margaret Lee Runbeck'], +    ], 
-    ['texte' => 'On reconnait la valeur de l\'eau quand le puits est a sec.', 'auteur' => 'Proverbe africain'], + 
-    ['texte' => 'Un pessimiste voit la difficulte dans chaque opportunite, un optimiste voit l\'opportunite dans chaque difficulte.', 'auteur' => 'Winston Churchill'], +    [ 
-    ['texte' => 'Le meilleur moment pour planter un arbre etait il y a vingt ans. Le deuxieme meilleur moment, c\'est maintenant.', 'auteur' => 'Proverbe chinois'], +        'texte' => 'Il n\'y a pas de vent favorable pour celui qui ne sait où il va.', 
-    ['texte' => 'La qualite d\'une vie se mesure a l\'engagement envers l\'excellence.', 'auteur' => 'Vince Lombardi'], +        'auteur' => 'Sénèque' 
-    ['texte' => 'Rien ne sert de courir, il faut partir a point.', 'auteur' => 'Jean de La Fontaine'], +    ], 
-    ['texte' => 'On ne change pas une equipe qui gagne, on l\'ameliore.', 'auteur' => 'Anonyme'], + 
-    ['texte' => 'La confiance se gagne en gouttes et se perd en litres.', 'auteur' => 'Proverbe'], +    [ 
-    ['texte' => 'Le respect s\'acquiert dans l\'effort, jamais dans la plainte.', 'auteur' => 'Anonyme'], +        'texte' => 'La motivation nous permet de commencer, l\'habitude nous permet de continuer.', 
-    ['texte' => 'Petit a petit, l\'oiseau fait son nid.', 'auteur' => 'Proverbe francais'], +        'auteur' => 'Jim Ryun' 
-    ['texte' => 'Ce n\'est pas parce que les choses sont difficiles que nous n\'osons pas, c\'est parce que nous n\'osons pas qu\'elles sont difficiles.', 'auteur' => 'Seneque'], +    ], 
-    ['texte' => 'Une equipe soudee est plus forte que la somme de ses individualites.', 'auteur' => 'Anonyme'], + 
-    ['texte' => 'La patience est amere, mais son fruit est doux.', 'auteur' => 'Jean-Jacques Rousseau'], +    [ 
-    ['texte' => 'On ne construit rien de solide sur du sable, mais sur du roc.', 'auteur' => 'Proverbe'], +        'texte' => 'Le travail d\'équipe divise la tâche et multiplie le succès.', 
-    ['texte' => 'Le progres n\'est pas possible sans deviation par rapport a la norme.', 'auteur' => 'Frank Zappa'], +        'auteur' => 'Anonyme' 
-    ['texte' => 'Les erreurs sont les preuves que l\'on essaie.', 'auteur' => 'Anonyme'], +    ], 
-    ['texte' => 'Ce que l\'on concoit bien s\'enonce clairement.', 'auteur' => 'Nicolas Boileau'],+ 
 +    [ 
 +        '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']); +$index_citation = 
-$citation_auteur = htmlspecialchars($citation_du_jour['auteur']);+    ((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; background: #f4f6f9; } 
  
-@keyframes home-fade-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } +/* Masquer les outils DokuWiki : RSS / abonnement / impression */ 
-.home-anim { animation: home-fade-up 0.5s ease both; }+#dokuwiki__pagetools { 
 +    display: none !important; 
 +}
  
-.home-marquee { position: relative; overflow: hidden; background: linear-gradient(90deg, #E1306C, #B03A5B); border-radius: 14px; padding: 10px 0; margin-bottom: 20px; text-decoration: none; display: block; } +/* Masquer la recherche originale dans la Navbar du haut */ 
-.home-marquee-track { display: inline-flex; white-space: nowrap; animation: home-marquee-scroll 18s linear infinite; } +#dokuwiki__header #dw__search, 
-.home-marquee-item { display: inline-flex; align-items: center; gap: 10px; padding: 0 40px; font-size: 13.5px; font-weight: 700; color: #fff; text-transform: uppercase; letter-spacing: 0.5px; } +#dokuwiki__header form.search, 
-.home-marquee-item svg { flex-shrink: 0; width: 16px; height: 16px; } +#dokuwiki__header .search, 
-.home-marquee:hover .home-marquee-track { animation-play-state: paused; } +#dokuwiki__header .navbar-form, 
-@keyframes home-marquee-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }+.navbar #dw__search, 
 +.navbar form.search, 
 +.navbar .navbar-form { 
 +    display: none !important; 
 +}
  
-.home-hero { text-align: center; padding: 26px 0 16px; } +.home-wrap {
-.home-hero img { max-width: 140px; margin-bottom: 12px; } +
-.home-hero-greeting { font-size: 14px; font-weight: 700; color: #378ADD; margin-bottom: 6px; } +
-.home-hero h1 { font-size: 26px; font-weight: 800; color: #1a2d4a; margin: 0 0 8px; } +
-.home-hero-tag { display: inline-block; font-size: 13px; font-weight: 600; color: #B03A5B; background: #FBE8EE; padding: 6px 18px; border-radius: 20px; } +
-.home-hero-clock { margin-top: 12px; font-size: 12px; color: #8a93a3; }+
  
-.home-section-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #8a93a3; margin: 26px 0 12px; }+    --navy: #18283E;
  
-.home-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; } +    --blue: #28689F; 
-.home-card { position: relative; overflow: hidden; background: #fff; border: 1px solid #dde3ec; border-radius: 14px; padding: 1.15rem 1.3rem; text-decoration: none; display: block; transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; } +    --blue-dark: #20567F; 
-.home-card:hover { text-decoration: none; box-shadow: 0 10px 24px rgba(26,45,74,0.10); transform: translateY(-3px); } +    --blue-soft: #EAF2F8;
-.home-card-icon { width: 40px; height: 40px; border-radius: 11px; 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: #8a93a3; line-height: 1.4; }+
  
-.home-quicklinks { display: flex; flex-wrap: wrap; gap: 10px; } +    --teal: #278A84; 
-.home-quicklink { display: inline-flex; align-items: center; gap: 6px; background: #fff; border: 1px solid #dde3ec; border-radius: 20px; padding: 8px 16px; font-size: 12.5px; font-weight: 600; color: #B03A5B; text-decoration: none; } +    --teal-soft: #E9F5F3;
-.home-quicklink:hover { background: #FBE8EE; border-color: #B03A5B; text-decoration: none; }+
  
-.home-feedback { background: #FFFBF2; border: 1px solid #FCD34D; border-radius: 12px; padding: 14px 18px; margin: 28px 0; font-size: 13px; color: #92400E; display: flex; align-items: center; gap: 12px; } +    --violet: #7169B8; 
-.home-feedback svg { flex-shrink: 0; } +    --violet-soft: #F0EFF9;
-.home-feedback a { color: #B45309; font-weight: 700; text-decoration: none; } +
-.home-feedback a:hover { text-decoration: underline; }+
  
-.home-social { display: flex; gap: 12px; margin-top: 8px; } +    --amber: #C88936; 
-.home-social-item { width: 44px; height: 44px; border-radius: 13px; display: flex; align-items: center; justify-content: center; text-decoration: none; } +    --amber-soft: #FBF4E8;
-.home-social-item:hover { transform: translateY(-3px); } +
-.home-social-item svg { width: 20px; height: 20px; }+
  
-.home-infobar { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; } +    --text: #1D2939; 
-.home-info-item { flex: 1 1 180px; display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid #dde3ec; border-radius: 12px; padding: 10px 14px; } +    --muted: #667085; 
-.home-info-icon { width: 30px; height: 30px; flex-shrink: 0; border-radius: 9px; display: flex; align-items: center; justify-content: center; } +    --light: #98A2B3; 
-.home-info-icon svg { width: 16px; height: 16px; } + 
-.home-info-icon-fete    { background: #FBE8EE; } +    --border: #E3E8EF; 
-.home-info-icon-ferie   { background: #FEF3C7; } + 
-.home-info-icon-semaine { background: #F0EFFF; } +    --surface: #FFFFFF; 
-.home-info-icon-visites { background: #FCE9F2; } +    --background: #F6F8FB; 
-.home-info-icon-fete svg    { stroke: #B03A5B; } + 
-.home-info-icon-ferie svg   { stroke: #BA7517; } +    font-family: 
-.home-info-icon-semaine svg { stroke: #7F77DD; } +        -apple-system, 
-.home-info-icon-visites svg { stroke: #C2477D; } +        BlinkMacSystemFont, 
-.home-info-text { line-height: 1.25; overflow: hidden; } +        "Segoe UI", 
-.home-info-label { font-size: 10px; font-weight: 700; text-transform: uppercase; color: #8a93a3; letter-spacing: 0.4px; } +        Arial, 
-.home-info-value { font-size: 13.5px; font-weight: 700; color: #1a2d4a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }+        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-citation { background: linear-gradient(135deg, #C2477D, #7A1F4D); border-radius: 14px; padding: 16px 22px; color: #fff; margin: 14px 0; } 
-.home-citation-texte { font-size: 14px; font-weight: 600; line-height: 1.4; font-style: italic; } 
-.home-citation-auteur { margin-top: 6px; font-size: 11.5px; opacity: 0.85; font-weight: 600; } 
 </style>'; </style>';
 +
 +
 +/* ============================================================
 +   DEBUT PAGE
 +   ============================================================ */
  
 echo '<div class="home-wrap">'; echo '<div class="home-wrap">';
  
-echo '<a class="home-marquee home-anim" href="https://files.gretani.com/news/GretaNews%20Septembre%202026.mp4" target="_blank"> 
-    <div class="home-marquee-track">'; 
-for ($i = 0; $i < 2; $i++) { 
-    echo '<span class="home-marquee-item"> 
-            <svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="15" height="16" rx="2"/><path d="M22 8v8l-5-4 5-4z"/></svg> 
-            La newsletter 2026 est disponible - cliquez pour la visionner 
-          </span> 
-          <span class="home-marquee-item"> 
-            <svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="15" height="16" rx="2"/><path d="M22 8v8l-5-4 5-4z"/></svg> 
-            La newsletter 2026 est disponible - cliquez pour la visionner 
-          </span>'; 
-} 
-echo '  </div> 
-</a>'; 
  
-echo '<div class="home-hero home-anim"> +/* ============================================================ 
-    <img src="/lib/exe/fetch.php?media=wiki:gni-logo.png" alt="Logo GNI"> +   BANDEAU ERASMUS DAYS 
-    <div class="home-hero-greeting" id="home-greeting">Bonjour</div> +   ============================================================ */ 
-    <h1>Bienvenue sur l\'extranet du GNI</h1> + 
-    <span class="home-hero-tag">Le point d\'entree de toutes les informations internes du GNI</span> +$erasmus_groupe = " 
-    <div class="home-hero-clock" id="home-clock"></div>+<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>';
 +
 +
 +/* ============================================================
 +   HERO
 +   ============================================================ */
 +
 +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>';
 +
 +
 +/* ============================================================
 +   CARTES INFOS
 +   ============================================================ */
  
 echo '<div class="home-infobar home-anim">'; echo '<div class="home-infobar home-anim">';
  
-echo "<div class='home-info-item'>+ 
 +/* FETE */ 
 + 
 +echo " 
 + 
 +<div class='home-info-item'> 
     <div class='home-info-icon home-info-icon-fete'>     <div class='home-info-icon home-info-icon-fete'>
-        <svg viewBox='0 0 24 24' fill='none' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='18' rx='2'/><path d='M16 2v4M8 2v4M3 10h18'/><circle cx='12' cy='15' r='2'/></svg>+        🎉
     </div>     </div>
 +
 +
     <div class='home-info-text'>     <div class='home-info-text'>
-        <div class='home-info-label'>Bonne fete</div> + 
-        <div class='home-info-value'>{$fete_nom}</div>+        <div class='home-info-label'> 
 +            Bonne fête 
 +        </div> 
 + 
 +        <div class='home-info-value'> 
 +            {$fete_nom} 
 +        </div> 
     </div>     </div>
 +
 </div>"; </div>";
  
-if ($jours_restants !== null) { + 
-    $texte_jours = ($jours_restants === 0) ? "Aujourd'hui" : ($jours_restants === 1 ? "Demain" : "{$jours_restants} jours"); +/* FERIE */ 
-    echo "<div class='home-info-item'> + 
-        <div class='home-info-icon home-info-icon-ferie'> +echo " 
-            <svg viewBox='0 0 24 24' fill='none' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M12 7v5l3 3'/></svg>+ 
 +<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>
-        <div class='home-info-text'> + 
-            <div class='home-info-label'>Prochain ferie</div> +        <div 
-            <div class='home-info-value'>{$texte_jours} - {$prochain_ferie_nom}</div>+            class='home-info-value' 
 +            title='{$prochain_ferie_nom}' 
 +        > 
 +            {$prochain_ferie_nom}
         </div>         </div>
-    </div>"; 
-} 
  
-echo "<div class='home-info-item'>+        <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 class='home-info-icon home-info-icon-semaine'>
-        <svg viewBox='0 0 24 24' fill='none' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='18' rx='2'/><path d='M16 2v4M8 2v4M3 10h18'/></svg>+        🗓️
     </div>     </div>
 +
 +
     <div class='home-info-text'>     <div class='home-info-text'>
-        <div class='home-info-label'>Semaine</div> + 
-        <div class='home-info-value'>N. {$numero_semaine} - {$annee_semaine}</div>+        <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>
 +
 </div>"; </div>";
  
-echo "<div class='home-info-item'>+ 
 +/* VISITES */ 
 + 
 +echo " 
 + 
 +<div class='home-info-item'> 
     <div class='home-info-icon home-info-icon-visites'>     <div class='home-info-icon home-info-icon-visites'>
-        <svg viewBox='0 0 24 24' fill='none' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z'/><circle cx='12' cy='12' r='3'/></svg>+        👁️
     </div>     </div>
 +
 +
     <div class='home-info-text'>     <div class='home-info-text'>
-        <div class='home-info-label'>Visites du site</div> + 
-        <div class='home-info-value'>{$compteur_visites}</div>+        <div class='home-info-label'> 
 +            Visites aujourd'hui 
 +        </div> 
 + 
 +        <div class='home-info-value'> 
 +            {$compteur_visites} 
 +        </div> 
     </div>     </div>
 +
 </div>"; </div>";
 +
  
 echo '</div>'; echo '</div>';
  
-echo "<div class='home-citation home-anim'> + 
-    <div class='home-citation-texte'>{$citation_texte}</div> +/* ============================================================ 
-    <div class='home-citation-auteur'>- {$citation_auteur}</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>"; </div>";
  
-echo '<script>+ 
 +/* ============================================================ 
 +   HORLOGE / SALUTATION AUTOMATIQUE 
 +   ============================================================ */ 
 + 
 +echo ' 
 + 
 +<script> 
 (function () { (function () {
-    function maj_horloge() { + 
-        var maintenant = new Date(); +    function majHorloge() { 
-        var h = maintenant.getHours(); + 
-        var salutation = "Bonsoir, bonne fin de journee"; +        var maintenant = 
-        if (h >= 5 && h < 12) salutation = "Bonjour, bonne matinee"; +            new Date(); 
-        else if (h >= 12 && h < 14) salutation = "Bon appetit et bonne pause dejeuner"; + 
-        else if (h >= 14 && h < 18) salutation = "Bon apres-midi"; +        var heure = 
-        else if (h >= 18 && h < 22) salutation = "Bonsoir, belle fin de journee"; +            maintenant.getHours(); 
-        var g = document.getElementById("home-greeting"); + 
-        if (g) g.innerText = salutation; +        var salutation = 
-        var options = { weekday: "long", day: "numeric", month: "long", hour: "2-digit", minute: "2-digit" }; +            "Bonsoir 🌙"; 
-        var texte = maintenant.toLocaleDateString("fr-FR", options); + 
-        var c = document.getElementById("home-clock"); + 
-        if (c) c.innerText = texte.charAt(0).toUpperCase() + texte.slice(1);+        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); 
 +        }
     }     }
-    maj_horloge(); + 
-    setInterval(maj_horloge, 30000);+ 
 +    majHorloge(); 
 + 
 + 
 +    setInterval( 
 +        majHorloge, 
 +        30000 
 +    ); 
 })(); })();
 +
 </script>'; </script>';
  
-echo '<div class="home-section-label">Explorer le site</div>';+ 
 +/* ============================================================ 
 +   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 home-anim' 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>';
  
-echo '<div class="home-section-label">Acces 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 = 
-    $target = isset($l['target']) ? " target='{$l['target']}'" : ''; +        htmlspecialchars($l['titre']); 
-    echo "<a class='home-quicklink' href='{$url}'{$target}>{$titre} -&gt;</a>";+ 
 +    $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>';
  
-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> +/* ============================================================ 
-    <span>Une remarque, une idee d\'amelioration ? <a href="https://survey.gretani.com/index.php/892218?newtest=Y&lang=fr" target="_blank">Utilisez le questionnaire Dites-le-nous</a></span>+   FEEDBACK 
 +   ============================================================ */ 
 + 
 +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>';
  
-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.1789493265.txt.gz
  • Dernière modification : 15/09/2026 18:27
  • de ajean