Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe eben mit Hilfe von iCalcreator (steht unter LGPL) eine mögliche Lösung für die Aufgabenstellung gefunden:
- entpacke die angehängte Datei in system/modules
das erzeugt einen Ordner iCalcreator, darin befindet sich außer iCalcreator eine von mir erstellte Datei sendIcal.php - lege unter tl_files einen Ordner namens 'ics' an, er dient als Ablage der ICS-Dateien
- erzeuge ein event-Template, z.B. aus event_full(.xhtml) und verwende es im EventReader.
- bearbeite das Template und füge den folgenden Code ein (z.B. direkt vor dem letzten </div>)
PHP-Code:
<div class="ical">
<?php
require_once( "system/modules/iCalcreator/iCalcreator.class.php" );
$config = array( "unique_id" => $this->replaceInsertTags('{{env::path}}') );
$v = new vcalendar( $config );
$v->setProperty( "method", "PUBLISH" );
$v->setProperty( "x-wr-calname", $this->calendar );
$v->setProperty( "X-WR-CALDESC", $this->calendar );
$tz = "Europe/Berlin";
$v->setProperty( "X-WR-TIMEZONE", $tz );
iCalUtilityFunctions::createTimezone( $v, $tz );
$vevent = & $v->newComponent( "vevent" );
$vevent->setProperty( "dtstart", $this->parseDate("d.m.Y H:i", $this->start));
$vevent->setProperty( "dtend", $this->parseDate("d.m.Y H:i", $this->end));
$vevent->setProperty( "summary", $this->title );
$vevent->setProperty( "description", $this->details );
$config = array( "directory" => "tl_files/ics", "filename" => $this->alias.".ics" );
$v->setConfig( $config );
$v->saveCalendar();
echo "<a href='" . $this->replaceInsertTags('{{env::path}}') . "system/modules/iCalcreator/sendIcal.php";
echo "?dir=../../../tl_files/ical";
echo "&ics=" . $this->alias . ".ics' title='Termin direkt in deinen Kalender laden'>";
echo "<img src='" . $this->replaceInsertTags('{{env::path}}') . "system/modules/iCalcreator/html/ical.png' alt='Termin direkt in deinen Kalender laden'/></a>";
?>
</div>
Das bewirkt, dass beim Aufruf des EventReaders für den aktuellen Termin eine ICS-Datei in tl_files/ics/ erzeugt wird. Der Name dieser Datei entspricht dem event-Alias und ist darum eindeutig. In die Ausgabe des Readers wird ein Link für den Download eingefügt. Klickt der Besucher diesen Link, dann wird die eben gespeicherte Datei mit dem korrekten Header ausgeliefert.
In meinem Beispiel werden noch nicht alle Informationen ins ICS geschrieben (z.B. Wiederholungen etc.), da ich erstmal das Prinzip ausprobieren wollte.
Wenn ich es richtig verstanden habe, muss ein Ende-Zeitpunkt in der ICS stehen. Bei Contao muss nicht unbedingt eine Endezeit angegeben sein. Wie bekommt man eine entsprechende Abbildung im Kalender hin?
Hat jemand Lust das Ganze mal auszuprobieren?
Vielleicht sollte man daraus eine 'richtige' Extension machen?
Gruß, folkfreund