Liste: So können Sie eine externe ics-Datei über eine einfache Liste ausgeben

Nutzen Sie Listen um Termine aus externen ics-Dateien aufzulisten.

Sie können externe ics-Dateien ganz komfortabel als einfache Liste in Ihre Seite einbinden.

Quelle für ical-Inhalte definieren

Fügen Sie dazu ein Listenelement in Ihre Seite ein.
Anschließend weisen Sie in den Einstellungen der Liste den Link zur .ics-Datei dem Feld "Aufzulistende Dateien" zu.
Für die Darstellung installieren bzw. wählen Sie die Variante "330 iCal".
Für eine aktuelle Darstellung empfehlen wir die Liste vom Seiten-Cache auszuschließen.

Bitte beachten Sie, dass keine Filteroptionen auf die externen Inhalte angewendet werden können. Filter können über eine Callback-Funktion ausgeführt werden. Außerdem steht die Blätterfunktion für diese Inhalte nicht zur Verfügung.

Konfiguration Liste bzgl. einbinden ics-Datei

ics-Inhalte über Callback filtern

Die iCal-Liste kann Daten enthalten, wie vergangene Termine, die nicht in der Liste angezeigt werden sollen. Um solche Daten zu filtern, kann ein Callback verwendet werden.

Um das Callback einzurichten, navigieren Sie in die Seitenbearbeitung und wechseln Sie in den Quelltext. Fügen Sie innerhalb des Struktur-Items das Fragment wd:fragment id="callback" hinzu, ähnlich dem gegebenen Beispiel.

Das Beispiel ruft die Funktion wMyProject::filterIcalList auf, deren Syntax in die Datei wMyProject.php eingefügt werden muss. Ein Beispiel finden Sie rechts.

Besipiel: wd:fragment id="callback"

<wd:item type="list.standard" uid="50d847d92ebe242bf912a1f9eea33ccb">
  ...
  <wd:fragment id="file" type="src.default">[IhrLinkZurIcsDatei]</wd:fragment>
  ...
  <wd:group id="filters"/>
  ...

  <wd:fragment id="callback" type="char.default">wMyProject::filterIcalList</wd:fragment>

</wd:item>

Beispiel: wMyProject:.filterIcalList

//*********************************************************************************/
/**
* @method String filterIcalList(Array $files, Array $listOptions)
*
* @description Callback Funktion, um die Ical-Liste zu filtern
*
* @param files Über die Liste eingelesene Dateien
*
* @param listOptions (Eigene) Listenoptionen zur Steuerung der Listenausgabe
*
* @return Array
*
*/
//*********************************************************************************/

public static function filterIcalList($files, $listOptions){

/*Scholl Communcaions AG - Support CH
files enthält alle Pfade der Ical-Dateien, die Werte stehen aber in $listOptions[entries]
*/
if(is_array($listOptions['entries'])){
foreach(
$listOptions['entries'] ?? array() as $key => $value){
$from = $value['dateStart'] ?? '';
$to = $value['dateEnd'] ?? '';
$value['dates'][0]['from'] = $from;
$value['dates'][0]['to'] = $to;
//Setzen der Globalen Variable für den Objektwizard
$GLOBALS['wPageprocessing']['objectData'][$files['file'][$key]['path'] ?? ''] = $value;
if(!
is_numeric($to)) $toTimestamp = $to != '' ? strtotime($to) : (!is_numeric($from) ? strtotime($from) : '');
//Filtern nach aktuellen Terminen
if($toTimestamp < time()){unset($files['file'][$key]);}

}
$files['file'] = array_merge(array(), $files['file'] ?? array());
}
return
$files;

}

ics-Inhalte über Objektwizard ausgeben

Die Daten aus der iCal-Datei werden als strukturierte Objektdaten vom Typ "icalEvent" eingelesen. Wenn Sie die Darstellung der Termine anpassen möchten, ist es ratsam, über die Objektverwaltung ein entsprechendes Objekt anzulegen. Da die Daten von externen Quellen stammen, werden die Pflegemaske und die Seitendarstellung nicht unterstützt. Die Listendarstellungen können Sie nun bequem über den Objektwizard konfigurieren. Als Ausgangspunkt empfehlen wir, die Listenvarianten aus dem Weblic© "Veranstaltungskalender" oder "Kurse" zu nutzen.

Wählen Sie anschließend in der Listen-Darstellung die Option "Über Objektwizard" aus.