Sie befinden sich hier: [Lösungen] / Typo3 / 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 = <p><label for="location_link">%%%LOCATION_LINK%%%###LOCATION_LINK_REQUIRED###:</label><input type="text" value="|" size="20" name="tx_cal_controller[location_link]" id="location_link" /></p>
                htmlSpecialChars = 1
      }       
    }
    confirm_event {
      location_link_stdWrap {
                dataWrap = <div><label for="location_link">%%%LOCATION_LINK%%%:</label>|<input type="hidden" value="###LOCATION_LINK_VALUE###" name="tx_cal_controller[location_link]" /></div>
     }
    }
  }
}

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

<!--###TEMPLATE_PHPICALENDAR_EVENT### begin -->
[...]
<!--###TEMPLATE_PHPICALENDAR_EVENT### end -->

für die Ereignisansicht

und für die Listenansicht


<!-- ###TEMPLATE_PHPICALENDAR_EVENT_LIST_ODD### start -->
[...]
<!-- ###TEMPLATE_PHPICALENDAR_EVENT_LIST_ODD### end -->

<!-- ###TEMPLATE_PHPICALENDAR_EVENT_LIST_EVEN### start -->
[...]
<!-- ###TEMPLATE_PHPICALENDAR_EVENT_LIST_EVEN### end -->

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 = <div>%%%LOCATION%%%:  |</div>
    }
  }
}

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 = <div>%%%LOCATION_LINK%%%:  |</div>
    }
  }
}

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 = <div>%%%LOCATION%%%:  |</div>
    }
    list.event.location_link = < plugin.tx_cal_controller.view.defaultLinkSetup
    list.event.location_link {
      typolink.parameter.field = location_link
      required = 1
      dataWrap = <div>%%%LOCATION_LINK%%%:  |</div>
    }
  }
}

Die Angaben sind ohne Gewähr auf Funktionalität. Kein Support !
Feedback, Anregungen, Fehler, Kritik und Verbesserungsvorschläge können per Kommentarfunktion oder Kontakformular eingereicht werden.

9 Kommentare

Seite 1 von 2 12 >>

 
 
#9 Klaus Schröder schrieb am 02.04.2011 16:14 answer email
Nach der Lösung für den externen Link habe ich mir die Finger blutig getippt. Danke!!
 
 
 
 
 
#4 Florian schrieb am 24.08.2010 09:56 answer email
Hallo,
 
stehe gerade vor dem Problem cal um mehrere Felder erweitert zu haben, jedoch werden nur die Werte des letzten Feldes beim Speichern übernommen.
Hat hierzu jemand eine Idee?
Required = 0 -> liegt hier das Problem?
 
Gruß,
Florian
 
 
 
 
 
#5 Claus Fassing schrieb am 24.08.2010 10:11 answer email homepage
Hallo Florian,
 
kann es sein das Du im TS die nachfolgende Position mehrfach definiert hast ?
plugin.tx_cal_controller.rights.create.event.additionalFields
also für jedes erweiterte Feld einmal ?
Dann überschreibst Du die Felder nämlich und nur das letzte wird übernommen.
Die Felder werden kommasepariert definiert.
plugin.tx_cal_controller.rights.create.event.additionalFields = location_link, owner_username, owner_email
 
Grüße Claus
 
 
 
 
 
#6 Florian schrieb am 24.08.2010 10:26 answer email
Danke!
Oh man, immer diese dummen leichtsinnigen Fehler ;)
 
 
 
 
 
#7 Florian schrieb am 27.08.2010 17:04 answer email
Hallo Claus,
 
hätte nochmals eine Frage an dich. Kannst du mir vll zufällig sagen woran es liegen kann, das ich Events in der Vergangenheit nicht speichern kann.
 
Typoscript-Code laut Docu:
plugin.tx_cal_controller.rights.edit.event.inPast.public = 1
Group & User setzen nützt auch nichts
 
Fehlt mir noch eine Einstellung oder muss ich da an den Quellcode?
 
Gruß, Florian
 
 
 
 
 
#8 Claus Fassing schrieb am 28.08.2010 11:47 answer email homepage
Hallo Florian,
 
leider nein, mit dieser Option hatte ich noch keine Berührung.
 
Grüße Claus
 
 
 
 
 
#2 Werner schrieb am 24.06.2010 05:59 answer email homepage
Hallo Claus,
hast du eine Idee, woran das liegen könnte, dass im FE plötzlich nur noch eine leere Seite angezeigt wird?
Hat bisher alles prima funktioniert, es wurden keinerlei Änderungen vorgenommen.
 
Bin für jeden Hinweis dankbar.
 
Grüße
Werner
 
 
 
 
 
#3 Claus Fassing schrieb am 24.06.2010 08:13 answer email homepage
Hallo Werner,
wenn am TYPO3 nichts geändert wurde, hat sich evtl. was am System geändert. Eine leere Seite deutet auf einen PHP Fehler hin. Den Fehler solltest Du im Error Log des Webservers finden.
 
Grüße Claus