{{* ========================================================================= FLUX ICALENDAR — module agenda Placez ce fichier dans le module "agenda", nommé par exemple "flux.ics". Les gens pourront s'abonner (lecture seule) avec l'URL publique de ce fichier, ex: https://VOTRE-SITE/m/agenda/flux.ics Limite connue : sans calcul de date avancé disponible dans ce langage, l'heure de début de la récurrence (DTSTART) est calée sur la date de début choisie (ou aujourd'hui si aucune n'est renseignée) même si son jour de la semaine ne correspond pas exactement — ce n'est pas un problème pour la plupart des calendriers, qui recalculent les occurrences à partir de la règle BYDAY, mais à tester. ========================================================================= *}} {{:assign var="aujourdhui_ics" value=$now|date:"Y-m-d"}} {{* ---------- Codes des jours de la semaine pour BYDAY ---------- *}} {{:assign var="jours_ical.1" value="MO"}} {{:assign var="jours_ical.2" value="TU"}} {{:assign var="jours_ical.3" value="WE"}} {{:assign var="jours_ical.4" value="TH"}} {{:assign var="jours_ical.5" value="FR"}} {{:assign var="jours_ical.6" value="SA"}} {{:assign var="jours_ical.7" value="SU"}} BEGIN:VCALENDAR VERSION:2.0 PRODID:-//{{$config.org_name}}//Agenda//FR CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALNAME:{{$config.org_name}} — Agenda {{#load where="$$.type = 'event'" order="$$.date ASC"}} BEGIN:VEVENT UID:evt-{{$id}}@{{$config.org_name|strval|replace:" ":"-"}} DTSTAMP:{{$aujourdhui_ics|date:"Ymd"}}T000000Z DTSTART:{{$date|date:"Ymd"}}T{{$debut|strval|replace:":":""}}00 {{if $fin}}DTEND:{{$date|date:"Ymd"}}T{{$fin|strval|replace:":":""}}00 {{/if}}SUMMARY:{{$titre|strval|replace:"\\":"\\\\"|replace:",":"\,"|replace:";":"\;"}} {{if $lieu}}LOCATION:{{$lieu|strval|replace:"\\":"\\\\"|replace:",":"\,"|replace:";":"\;"}} {{/if}}{{if $description}}DESCRIPTION:{{$description|strval|replace:"\\":"\\\\"|replace:",":"\,"|replace:";":"\;"|replace:" ":" "}} {{/if}}END:VEVENT {{/load}} {{#load where="$$.type = 'permanence'" order="$$.jour ASC"}} {{:assign var="jc" from="jours_ical.%s"|args:$jour}} {{:assign var="dtstart_date" value=$date_debut}} {{if !$dtstart_date}}{{:assign var="dtstart_date" value=$aujourdhui_ics}}{{/if}} BEGIN:VEVENT UID:perm-{{$id}}@{{$config.org_name|strval|replace:" ":"-"}} DTSTAMP:{{$aujourdhui_ics|date:"Ymd"}}T000000Z DTSTART:{{$dtstart_date|date:"Ymd"}}T{{$debut|strval|replace:":":""}}00 {{if $fin}}DTEND:{{$dtstart_date|date:"Ymd"}}T{{$fin|strval|replace:":":""}}00 {{/if}}{{if $type_recurrence == "mensuel"}}RRULE:FREQ=MONTHLY;BYDAY={{$semaine_du_mois}}{{$jc}}{{if $date_fin}};UNTIL={{$date_fin|date:"Ymd"}}T235959Z{{/if}} {{else}}RRULE:FREQ=WEEKLY;BYDAY={{$jc}}{{if $date_fin}};UNTIL={{$date_fin|date:"Ymd"}}T235959Z{{/if}} {{/if}}{{#foreach from=$exceptions item="ex_ics"}}EXDATE:{{$ex_ics|date:"Ymd"}}T{{$debut|strval|replace:":":""}}00 {{/foreach}}SUMMARY:{{$label|strval|replace:"\\":"\\\\"|replace:",":"\,"|replace:";":"\;"}} {{if $lieu}}LOCATION:{{$lieu|strval|replace:"\\":"\\\\"|replace:",":"\,"|replace:";":"\;"}} {{/if}}END:VEVENT {{/load}} END:VCALENDAR