Files
agenda/flux.ics
T

61 lines
3.1 KiB
Plaintext

{{* =========================================================================
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