J'ai réalisé sur la base du Squelette Epona un évolution pour gérer les événements sur plusieurs jours.
(voir la mise en oeuvre sur http://www.yoleok.org).
La première version utilisait les valeurs #DATE et #DATE_REDAC, mais j'ai abandonné cette solution
car lourde à gérer pour les régates inscrites à l'agenda par de simples rédacteurs et
J'ai opté par une utilisation particulière, mais aisée du champ #SURTITRE dans les articles
de type Agenda. Une restriction : la limite est de 9 jours, suffisant pour mon usage.
Le premier jour de l'évenement reste #DATE_REDAC.
Les principales modifications sont :
dans chaque squellette un calcul de la date de fin de ce type :
$nbdays = substr ('#SURTITRE',0,1);
if ( $nbdays < 1 || $nbdays > 9 ) $nbdays = 1;
$date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", '#DATE_REDAC');
$year = substr($date,0,4); $month = substr($date,4,2); $day = substr($date,6,2);
$datef = mktime ( 0 , 0 , 0 , $month , $day + $nbdays - 1 , $year );
Test sur $nbdays car si l'événement ne dure qu'un jour, il n'est pas utile de renseigner le surtitre.
Dans le squelette {{rubrique-xx.html}} qui gère l'agenda annuel : modification des instructions
dans la boucle d'affichage des événements :
if ($nbdays == 1)
$evcom[]= ' Le [(#DATE_REDAC|nom_jour)]'.' [(#DATE_REDAC|jour)]'.' : [(#TITRE|texte_script)]'.'[ ((#SOUSTITRE|texte_script))]'.'
';
else
{
$numjour = date ("w",$datef);
$jour = date ("j",$datef);
$evcom[]= ' Du [(#DATE_REDAC|nom_jour)]'.' [(#DATE_REDAC|jour)] au '. $nomjour[$numjour] .' '. $jour.''.' : [(#TITRE|texte_script)]'.'[ ((#SOUSTITRE|texte_script))]'.'
';
}
Plus un tableau initialisé avant la boucle
$nomjour= array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
Dans le squelette {{sommaire.html}} :
Boucle initiale :
for ( $i=$date ; $i <= $datef ; $i++)
{
$events[$i][] = '#URL_ARTICLE';
$titres[$i][] = '#TITRE';
}
La boucle for n'est pas très propre quand $date et $datef sont sur des mois différents
(passage de 20040731 à 20040801 pour l'open de France soit 70 valeurs pour 2 jours !)
ou pire, des années différentes, la boucle devient inutilement longue ! Heureusement nous
n'avons pas de régate sur le nouvel an, donc pas de tests compliqués pour l'instant !
Boucle suivante avec intégration des titres multiples dans le tableau (comme epona 1.3) :
if (count($events[date('Ymd', $Time)]) == 1) {
$case .= ''.date('j', $Time).'';
}
else
{
reset($titres);
list($key, $val) = each($titres[date('Ymd', $Time)]);
$case .= ''.date('j', $Time).'';
}
Enfin le squelette {{agenda.html}} reçoit le même type de modification :
Définition du $datefin comme le $datef du sommaire puis
for ($i=$dateEvt ; $i <= $dateFin ; $i++)
{
$region[$i][] = array('rub' => #ID_RUBRIQUE, 'link' => '#URL_ARTICLE', 'title' => '[(#TITRE|texte_script)]', 'logo' => '');
}
Dernière modif dans article.html : un petit test pour ne pas afficher le surtitre, mais la période dans les articles de type agenda :
25)
echo '[