Einrichtung vom Kalender "Calendar Base" (cal)
Die wohl beste Kalender-Extension ist
Calendar Base (cal) von
Mario Matzulla. Sie bietet alles, was man für die Darstellung eines Kalenders und den Terminen benötigt, und darüber hinaus noch viele Extras.
Seit Kurzem wird Calendar Base auch von der ECT (Extension-Coordination-Team) unterstützt, so das Calendar Base auf dem besten Weg ist, die offizielle Typo3 Kalender-Extension zu werden.
Dieses Tutorial beruht auf der Version 0.12.0
Ein Wiki zum Kalender gibt es
hier - dort ist auch ein Bugtracker, Source-Viewing und vieles andere Nützliche rund um den Kalender. Die aktuellste Version ist im
SVN erhältlich.
Hier gehts zum Online-Beispiel
[Da hier immer die aktuellste Entwicklerversion aufgespielt wird, kann es durchaus zu Unregelmässigkeiten kommen, Es dient uns auch zur Überprüfung der Funktionen]
Installation und Einrichtung
Als erstes installieren wir die Extension im Extensionmanager, wir akzeptieren die vorgeschlagenden Einstellungen und klicken auf Update.
Nun wollen wir unsere Daten vorbereiten. Wir erzeugen einen Sysordner für die Kalenderdaten. Wir wechseln zur Listenansicht und klicken auf "Neuen Datensatz anlegen". Wir erhalten folgende Auswahl:

- Kalender (Ausnahme) Event - das ist ein (Ausnahme) Termin
- Calendar - das ist ein einzelner Kalender
- Kalender Kategorie - das sind die Kategorien
- Kalender Ausnahme Eventgruppe -
- Kalender Ort - alle vordefinierten Veranstaltungsorte
- Kalender Organisation - alle vordefinierten Veranstalter
Das es die Datensätze Calendar gibt, hat den Grund, das wir z.B. einen öffentlichen Kalender haben, und dann einen Kalender, der einer FE-Usergruppe zugeordnet ist. Loggt sich ein User dieser Gruppe ein, so werden diese Kalenderdaten sichtbar. Theoretisch ist es also möglich, beliebig viele Kalender parallel zu betreiben.
Wir wollen einen öffentlichen Kalender erstellen und legen also einen Datensatz vom Typ Calendar an. Wir vergeben einen Titel und speichern ihn. Wir sehen auch, das wir unter Owner eine Benutzergruppe festlegen können. Wählen wir keine aus, so ist der Kalender öffentlich.
Nun sind wir soweit, das wir einen Termin anlegen können. Wir legen einen Datensatz vom Typ Kalender Event an und tragen unsere Details ein. Wir müssen darauf achten, das wir einen Kalender auswählen. Ort und Veranstalter übernehmen wir aus der Liste oder tragen es ein.
Wichtig:
Wenn ein Anfangsdatum eingegeben wurde, muss ein Enddatum eingegeben werden.
Wenn eine Anfangszeit eingegeben wurde, muss eine Endzeit angegeben werden.
Geben wir keine Uhrzeiten an, so gilt der Termin als allday.
Wir wollen jetzt wir den Kalender in unsere Seite integrieren. Als erstes kopieren wir alle Templates aus typo3conf/ext/cal/template nach fileadmin/templates/cal, um sie später bearbeiten zu können. Für den Anfang arbeiten wir mit den mitgelieferten Templates.
Als erstes wechseln wir ins root-Template und fügen unter Include static (from extensions) die 2 Einträge hinzu (siehe Bild rechts).
Wir gehen auf die Seite, wo der Kalender angezeigt werden soll und fügen Ein Inhaltselement vom Typ Kalender ein. Dort geben wir dem Kalender einen Namen - dieser wird oben angezeigt. Als Ausgangspunkt wählen wir unseren Sysordner mit den Kalendereinträgen. Wir speichern und betrachten das Ergebnis im Frontend und sollten folgende Ausgabe bekommen:
Hier noch einige Tipps für Termine Fallstudien):
Wollen wir einen mehrtägigen Termin eingeben
Wir geben Anfangs- und Enddatum ein (optional Anfangs- und Endzeit).
Wir haben einen mehrtägigen Termin, der jeden Monat stattfindet
Wir geben Anfangs- und Enddatum ein, wechseln auf den Reiter Recurrence, wählen als Frequenz Monthly.
Soll der Termin 4mal stattfinden, tragen wir bei Anzahl 4 ein. Alternativ können wir auch das Enddatum eintragen.
,
Bei Frequenz haben wir mehrere Möglichkeiten der Definition. So können wir die Wochentage angeben (mo,tu,we,th,fr,sa,su). Es ist auch möglich, den jeweils 3. Freitag des Monats zu wählen, dazu gibt man 3fr ein.
Mit Intervall können wir den Abstand gemäss der ausgewählten Frequenz eingeben. Beispielsweise geben wir als Frequenz Weekly an und wählen als Intervall 2. Nun findet der Termin alle 2 Wochen statt.
Ausnahmeevents - das sind Events, die man als Ausnahme definieren kann. Wir erzeugen z.B. ein Ausnahmeevent Feiertage und können bei mehrtägigen Terminen diese Feiertage als Ausnahmeevent hinzufügen. Der Termin wird nun an einem Feiertag unterbrochen.
Spezialelemente
Wir möchten einen statischen Minikalender und eine statische Liste mit den Terminen des aktuellen Monats auf der linken Seite angezeigt bekommen. Hierzu benötigen wir 2 Templates und ein bischen Typoscript. Die beiden Elemente können dann beliebig platziert werden. Hier der benötigte Code:
lib.minical > lib.minical < plugin.tx_cal_controller lib.minical { pages = PID_DES_SYSFOLDERS view { defaultView = month month.monthTemplate = fileadmin/templates/cal/monthmini.tmpl calendar.defaultUid = PID_DES_SYSFOLDERS isStatic = 1 day.dayViewPid = PID_DER_KALENDERSEITE/TAGESANSICHT weekStartDay = Sunday } } lib.minicallist > lib.minicallist < plugin.tx_cal_controller lib.minicallist { pages = PID_DES_SYSFOLDERS view { defaultView = list list.listTemplate = fileadmin/templates/cal/monthteaser.tmpl calendar.defaultUid = PID_DES_SYSFOLDERS isStatic = 1 event.eventViewPid = PID_DER_KALENDERSEITE/EVENTANSICHT weekStartDay = Sunday } }
<!-- monthmini.tmpl --> <div id="minical" align="center">###MONTH_SMALL|+0### </div> <!-- monthteaser.tmpl --> <dl id="calteaser"> <!-- ###SHOWBOTTOMEVENTS### start --> <!-- ###SHOWBOTTOMEVENTS_ODD### start --> <dt class="odd">###DAYLINK###<span class="V9G">###START_TIME###</span></dt> <dd class="odd">###EVENT_TEXT###</dd> <!-- ###SHOWBOTTOMEVENTS_ODD### end --> <!-- ###SHOWBOTTOMEVENTS_EVEN### start --> <dt class="even">###DAYLINK###<span class="V9G">###START_TIME###</span></dt> <dd class="even">###EVENT_TEXT###</dd> <!-- ###SHOWBOTTOMEVENTS_EVEN### end --> <!-- ###SHOWBOTTOMEVENTS### end --> </dl>
FE-Edit
Der Kalender erlaubt es, das FE-User im Frontend neue Termine eingeben können, sowie bestehende Termine editieren können. Dies ist entweder über die ID's der User oder über ID's von Usergruppen einstellbar.
Hierzu legen wir eine Usergruppe an, die diese Möglichkeit bekommen sollen.
Unsere Usergruppe heisst calendar und hat die ID 3. Wir erstellen einen User und geben ihm die Gruppe calendar.
Nun wollen wir der Usergruppe mit der ID 3 das editieren erlauben, dazu benötigen wir ein bischen Typoscript:
plugin.tx_cal_controller { rights { edit = 1 admin.group = 3 } }
mit edit=1 erlaubt man generell das Editieren, über admin.group wird die Gruppe zugewiesen. Hier kann man auch eine Kommaliste der gewünschten Gruppen angeben. Möchte man das auf Userebene, so greift die Anweisung
admin.user = ...
Im
Online-Beispiel habe ich einen Admin-User angelegt, wer sich also das FE-Editing anschauen will, kann das mit dem user calendar / calendar tun.
Wie der Name schon sagt, hat admin die vollen Rechte. Möchte na z.B. einer Gruppe nur das Anlegen neuer Termine erlauben, so erreicht man das mit folgender Einstellung:
plugin.tx_cal_controller { rights { edit = 1 create.event.enableAllFields.group = 3 } }
Wenn man alle Einstellungen feiner gestalten möchte, so empfiehlt sich, die komplette
setup.txt ins TS zu übernehmen und entsprechend anzupassen.
Helfer
Um leichter Datumsangaben zu tätigen, empfiehlt sich die Extension Date2Calendar (erotea_date2cal), für die FE-Eingaben wird die Extension Date selector library (rlmp_dateselectlib) benötigt.
Realurl
Calendar base lässt sich auch mit realurl konfigurieren. Hierzu muss man nur folgenden Code in die postVarSets-Konfiguration in der localconf.php:
'cal'=> array( array( 'GETvar' => 'tx_cal_controller[view]' ), array( 'GETvar' => 'tx_cal_controller[getdate]' ), array( 'GETvar' => 'tx_cal_controller[gettime]' ), array( 'GETvar' => 'tx_cal_controller[lastview]' ), array( 'GETvar' => 'tx_cal_controller[type]' ), array( 'GETvar' => 'tx_cal_controller[category]', 'lookUpTable' => array( 'table' => 'tx_cal_category', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => array( 'strtolower' => 1, 'spaceCharacter' => '_', ), ), ), array( 'GETvar' => 'tx_cal_controller[uid]', 'lookUpTable' => array( 'table' => 'tx_cal_event', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => array( 'strtolower' => 1, 'spaceCharacter' => '_', ), ), ), array( 'GETvar' => 'tx_cal_controller[gettime]' ), array( 'GETvar' => 'tx_cal_controller[preview]' ), ),
SimulateStaticDocuments
Für eine Konfiguration mit simulateStaticDocuments kann folgender Code verwendet werden (incl. tt_news-Konfiguration)
simulateStaticDocuments_noTypeIfNoTitle =1 simulateStaticDocuments_pEnc = md5 simulateStaticDocuments_pEnc_onlyP = cHash,L,no_cache,tx_indexedsearch[ext],tx_ttnews[backPid], tx_ttnews[tt_news], tx_ttnews[pS], tx_ttnews[pL], tx_ttnews[arc], tx_ttnews[cat], tx_ttnews[pointer], tx_ttnews[swords], tx_cal_controller[view], tx_cal_controller[getdate], tx_cal_controller[lastview], tx_cal_controller[type], tx_cal_controller[category], tx_cal_controller[uid], tx_cal_controller[gettime], tx_cal_controller[preview] simulateStaticDocuments_addTitle = 35
MINIFAQ
Warum werden meine Events nicht angezeigt ?
Ein häufiger Fehler, wenn man vergisst Enddatum einzugeben. Gibt man eine Anfangszeit ein, muss auch eine Endzeit eingegeben werden
Was läuft schief ? Ich habe tt_address für Orte und/oder Veranstalter eingetragen
tt_address muss vor cal installiert werden, da sonst u.U. tt_address nicht vollständig ist (z.B. das Feld uid fehlt)
Beim FE-Create werden die Events als hidden abgespeichert. Wie kann ich das umstellen ?
plugin.tx_cal_controller.rights.create.event.fields.allowedToCreateHidden.default = 0

Impressum
Mollio

1234567891011121314151617181920212223242526272829303132 >>
Seite 1 von 32
Hallo,
danke ersteinmal für das tolle Tutorial.
Der Kalender läuft bei mir soweit ganz gut.
Ein Problem mit dem FE-Editing habe ich allerdings:
Ich würde gerne die Benachrichtigungs-/Teilen mit-Funktion aus dem FE heraus nutzen.
Ich kann problemlos Ereignisse anlegen, nur unter dem Optionen-Reiter erscheint zwar "Benachrichtigung bei Veränderung und Erinnerung:" sowie "...teilen mit:". Dahinter steht allerdings nichts.
Da sollten doch vermutlich eine Checkbox bzw. Formularfelder stehen, wo man mehrere Email-Adressen angeben kann, denen man die Veränderungen mitteilen möchte, oder?
Wie ist diese Funktion gedacht und wie kann ich die einzelnen Felder einblenden bzw. nutzen?
Danke für Eure Hilfe schon im Voraus.
Gruß
Josef
###FREQ### kann man auch im Template abfragen.
also
läuft. sofern es wen interessiert
Ich möchte gerne, dass wiederkehrende Termine mit einer anderen Farbe im Kalender dargestellt werden.
Ich dachte daran, im Template direkt ein PHP Script zu schreiben, das guckt, ob eine Frequenz für einen Termin vorliegt und ihm dann eine andere CSS Klasse gibt oder so.
Leider funktioniert in den Templates kein PHP. Gibt es vielleicht eine TypoScript Lösung o.Ä.?
Vielen Dank vorab.
MFG
Steffen
Hallo!
In bin inzwischen schon weit gekommen, muss aber noch weiter und kann nicht mehr...
Kann mir hier jemand helfen, damit in der Jahresansicht nicht immer die Tages- sondern die Eventansicht verlinkt ist? Oder mir sagen,wie ich die Tagesansicht wie die Eventansicht aussehen lassen kann (die Marker werden ja anscheinend nicht übergeben...)?
Außerdem bekomme ich bei der Monatsansicht überhaupt keine Ausgabe... Woran kann das liegen?
UND in der Eventansicht wird nur der Name des Veranstaltungsortes und des Veranstalter angegeben... kann man da nicht alle Daten anzeigen?
Habe schon viele Foren befragt, aber bisher konnte mir noch keiner helfen...
Wäre sehr froh, hier etwas Hilfe zu finden!
Grüße
Mareike
Hallo,
bin auchh gerade dabei die Ext. Cal zu installieren.
Hier im Leitfaden steht folgendes:
"Als erstes wechseln wir ins root-Template und fügen unter Include static (from extensions) die 2 Einträge hinzu (siehe Bild rechts)."
Aber es gibt kein Bild
Hat da wer nen Tip für mich?
Danke
Hallo,
bin auchh gerade dabei die Ext. Cal zu installieren.
Hier im Leitfaden steht folgendes:
"Als erstes wechseln wir ins root-Template und fügen unter Include static (from extensions) die 2 Einträge hinzu (siehe Bild rechts)."
Aber es gibt kein Bild
Hat da wer nen Tip für mich?
Danke
Hallo zusammen,
hat jemand 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
Ich bekomme neue Termine im FE nicht eingetragen, das Datumsformat wird nicht übernommen - Dafür wird trotzdem eine Mail per Gabriel generiert :-(
Lege ich einen Termin per Backend an, so gibtg es von Gabriel keinerlei Information.....
Also eigentlich möchte ich, dass Kategorieabhängig an bestimmte Gruppe bereits beim Eintrag von Terminen und bei Änderungen diese per Mail kommuniziert werden.
Vielleicht hat jemand eine Idee???
Hab jetzt doch noch eine Frage zur Suche:
Wie bekomme ich es hin, daß in dem Suchergebnis die Eventnamen wieder verlinkt werden?
Die Listenansicht im Plugin anzuklicken macht keinen Sinn, da zwei Views in einem Plugin nicht funtionieren.
Also was nun?
Danke schon einmal im voraus!
Manchmal sieht man den Wald vor lauter Bäumen nicht....
Links aus dem Suchergebnis zum Event-Detail bekommt man natürlich nur dann, wenn man Cal auch mitteilt, wo sich diese Detailseite befindet. Sprich hier: In der Lasche "Ereignis-Ansicht" beim Punkt "Ereignis-Ansicht Seite" die Seite, auf der das Plugin für die Detailview definiert wurde, anwählen.
Gibt es eine Möglichkeit, an Plugin bzw. TS für die hier gezeigte Suche zu bekommen?
Hat sich erledigt - hatte versehentlich zwei Suchmasken in einem Plugin.