TYPO3 Extension Calendar Base

Die TYPO3 Extension Calendar Base (cal) zur Erstellung und Verwaltung von Terminen und Veranstaltungen besticht durch ihre vielfältige Möglichkeit der Konfiguration und Modifikation. Diese Eigenschaften können aber auch bei der Einrichtung auf persönliche Gegebenheiten schnell zu einem Problem werden. Nachfolgend sind einige Erfahrungen beschrieben. 

Mögliche Probleme

Besteht die Anforderung daraus die cal Extension abzuspecken, z.B. durch Ausblenden diverser Felder im Frontend Editing für die Erstellung eines neuen Events, ist darauf zu achten das entsprechende Template (create_event.tmpl) erst zu beschneiden wenn die zu entfernenden Felder nicht mehr die Eigenschaft required = 1 besitzen. Ansonsten kann man das Event im Frontend nicht speichern ! Eine Fehlermeldung wird auch nicht ausgegeben.


Für jede gewünschte Ansicht ist das Plugin erneut in die Seite zu setzen. Es lassen sich nicht mehrere "erlaubte Ansichten" in einem Plugin konfigurieren. Zwar ist es grundsätzlich möglich im Plugin mehrere Ansichten hinzuzufügen, aber es wird immer nur die zuerst definierte ausgegeben. Die Möglichkeit der Mehrfachauswahl suggeriert etwas anderes. Um z.B. eine Monatsansicht mit einer Listenansicht zu kombinieren wählt man als erlaubte Ansicht die Monats-Ansicht und im Reiter Monats-Ansicht die Option "Liste anzeigen". Falsch ist, in den erlaubten Ansichten sowohl die Monats-Ansicht und danach die Listen-Ansicht zu definieren, was auf den ersten Blick nicht ersichtlich ist. 


Sind Listenansicht und Ereignisansicht (Detailansicht) auf getrennten Seiten definiert, ist darauf zu achten das im Plugin mit der Listenansicht auch die Ereignis-Ansicht Seite im Reiter Ereignis-Ansicht definiert ist ! Um den "zurück" Link in der Ereignisansicht zu erzeugen muss am Plugin mit der Ereignis-Ansicht die Listen-Ansicht Seite im Reiter Listen-Ansicht definiert sein.


Individuelle Erweiterung

Am Beispiel Frontend Editing für die Erstellung eines neuen Ereignisses (Events).

Ich habe eine Erweiterung in Bezug auf das Feld "location_link" vorgenommen, was dem Backend Feld "Externer Link zum Ereignisort" (URL with location information) im Datensatz Kalender Event entspricht (Reiter "Ort"). Dieses Feld erscheint nicht in der Standardkonfiguration bei der Erfassung eines neuen Events im Frontend.

Im cal TS Template sind dazu folgende Einträge notwendig.

  
plugin.tx_cal_controller {
  view {
    create_event {
      location_link_stdWrap {
                dataWrap = 

htmlSpecialChars = 1 } } confirm_event { location_link_stdWrap { dataWrap =
|
} } } }

location_link entspricht dem Datenbankfeld in der Tabelle tx_cal_event

Der create_event Eintrag bringt das input Feld in das Frontend.

Der confirm_event Eintrag ist wichtig damit die eingegebenen Daten am Frontend auch in das Datenbankfeld gespeichert werden.

Die Konfiguration des Feldes geschieht über folgenden Eintrag.

  
plugin.tx_cal_controller {

  rights {
    create.event {
      additionalFields = location_link
      fields.location_link {
        required = 0
        public = 1
      }
    }
  }
}

Die Werte required und public sind natürlich anzupassen.

 In den jeweiligen HTML Templates der Ansichten ist dann noch der Marker ###LOCATION_LINK### zu platzieren.

Im vorliegenden Fall sind das die Templates
create_event.tmpl
confirm_event.tmpl
event_model.tmpl im Bereich

  

[...]

für die Ereignisansicht

und für die Listenansicht

  

[...]



[...]


Optional

In der hier gezeigten Konfiguration wird der eingetragene Link an den Ort gebunden. Der Ort wird damit zum Link mit Verweis auf den eingetragenen Link was u.U. nicht immer gewünscht ist. Um das zu ändern und den Link eigenständig zu definieren ist weiteres TS nötig. 

Zunächst wird das location Objekt überschrieben damit keine Links mehr daran gebunden werden.

  plugin.tx_cal_controller {
  view {
    event.event.location = TEXT
    event.event.location {
      current = 1
      required = 1
      dataWrap = 
%%%LOCATION%%%: |
} } }

Der nächste Eintrag dient dazu den eingetragenen Link auf den location_link zu setzen.

  plugin.tx_cal_controller {
  view {
    event.event.location_link = < plugin.tx_cal_controller.view.defaultLinkSetup
    event.event.location_link {
      typolink.parameter.field = location_link
      required = 1
      dataWrap = 
%%%LOCATION_LINK%%%: |
} } }

Das gleiche muss dann auch für den Teaser in der Listenansicht gemacht werden.

  plugin.tx_cal_controller {
  view {
    list.event.location = TEXT
    list.event.location {
      current = 1
      required = 1
      dataWrap = 
%%%LOCATION%%%: |
} list.event.location_link = < plugin.tx_cal_controller.view.defaultLinkSetup list.event.location_link { typolink.parameter.field = location_link required = 1 dataWrap =
%%%LOCATION_LINK%%%: |
} } }