61 lines
3.1 KiB
Plaintext
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 |