Mit diesem Bundle kann für einen Contao Kalender eine ics-Datei erstellt werden, um diesen in anderen Programmen (z.Bsp. ICSx5, GoogleCalender, etc) zu abonnieren.
Bitte nutze den Contao Manager oder führe composer require janborg/contao-ical-bundle
in deiner CLI aus, um die Erweiterung zu installieren.
Das Bundle verwendet eine Standardkonfiguration.Bei Bedarf können diese Einstellungen in der Datei config/config.yml
überschrieben werden.
Parameters:
- defaultEndDateDays: Maximale Anzahl an Tagen in der Zukunft, die im Ical-Kalender berücksichtigt werden, wenn kein Ende angegeben wird
- defaultEventDuration: Zeit in Minuten, die als Dauer für ein Event angegeben wird, wenn der Termin eine Start-, aber keine Endzeit hat
# config/config.yml
# Contao Ical (default settings)
janborg_contao_ical:
defaultEndDateDays: 365
defaultEventDuration: 60
Das Bundle implementiert zwei neue Routes, über die eine Ical-Datei eines Events oder eines ganzen Kalenders heruntergeladen werden kann. Über entsprechende Apps (bspw.ICSx5 für Android) kann über diese Route auch ein Kalender abonniert werden.
- /ical/event/{alias} Über diese Route kann für jedes Event eine entsprechende *.ics Datei heruntergeladen werden, es sei denn, der überliegende Kalender ist geschützt. In diesem Fall muss man als berechtigter FE-User angemeldet sein.
- /ical/calendar/{ical_alias} Damit ein Kalender über diese Route exportiert und importiert werden kann, muss dies im jeweiligen Kalender aktiviert und der ical_alias hinterlegt werden. Wenn ein Kalender geschützt ist, muss man als berechtigter FE-User angemeldet sein.
Bei bedarf kann zusätzlich zur Route eine Datei /share/ical_alias.ics abgelegt werden. Hier kann keine Prüfung erfolgen, ob der Kalender geschützt ist!
Es besteht die Möglichkeit die Eventdaten, die als ical bereitgestellt werden, zu modifizieren oder mit eigenen Feldern zu erweiteren. Dazu kann ein Hook editVEvent
registriert werden.
Beispiel:
<?php
namespace App\EventListener;
use Contao\CalendarEventsModel;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
use Kigkonsult\Icalcreator\Vevent;
#[AsHook('editVEvent')]
class EditVEventListener
{
public function __invoke(Vevent $vEvent, CalendarEventsModel $objEvent): Vevent
{
// Add additional data or modify $vEvent …
return $vEvent;
}
}