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.

Veranstaltungsort
Veranstaltung Organisator

Da wir häufig wiederkehrende Veranstaltungsorte und Veranstalter haben, legen wir diese auch gleich an und nehmen so viele Details wie möglich mit auf.

Nun legen wir eine Kategorie an. Da wir einige Konzerte darstellen wollen, nennen wir die Kategorie Konzerte. Als Headerstil tragen wir konzert-h und als Bodystil konzert-b ein. Das sind die CSS-Auszeichnungen, die wir für das CSS-Design gebrauchen können. Wir speichern die Kategorie ab.

Es gibt default-Stile, die im mitgelieferten CSS bereits formatiert sind:

default_catheader
green_catheader
orange_ccatheader
pink_catheader
red_catheader
yellow_catheader
grey_catheader

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.

Anzeige

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:

TypoScript
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
	}	
}
die Templates monthmini.tmpl und monthteaser.tmpl
<!-- 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:

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:

TypoScript
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:

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)

TypoScript
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

 

639 Kommentare
#167 Petra schrieb am 23.04.2007 17:39

Hi, habe nun auch schon recht viel mit deinem Kalender rumprobiert. Grade bin ich an der Stelle mit dem FE-Usern. Die Version mit admin.group funktioniert einwandfrei, aber die andere Variante gibt mir absolut keine Rechte oder müssen hier noch andere Werte kombiniert werden?!

 

Auf jeden Fall eine tolle Extension, danke!

 

Bye

Petra

#168 Petra schrieb am 24.04.2007 07:31

So, ich nochmal- hatte nochmals Zeit zum Probieren. Ich nutze Typo3 4.0.2 und den Cal 0.15.0.

 

Mit den folgenden Einstellungen schaffte ich es dann doch, dass ich nur einer Gruppe das Erstellen von Einträgen erlaube (also das kleine nette Plus im Kalender sichtbar wird, nachdem man sich einloggte)

 

plugin.tx_cal_controller {

rights {

edit = 1

create.event {

saveEventToPid = 9 #id des Ordners

allowedToCreateEvents.group = 1

enableAllFields.group = 1#IDGruppe

}

}

}

 

Vielleicht hilfts ja wem!

 

bye

Petra

#170 Daniel Dimitrov schrieb am 24.04.2007 15:02

Petra probiere mal bei dem Plug-in Konfiguration bei Erlaubten Ansichten die Objekte Ereignis editieren, erstellen und löschen auszuwählen.

 

Mir hat das geholfen.

#250 Sebastian schrieb am 18.07.2007 11:16

Hallo Steffen!

 

Ich habe gerade versucht, Cal (Version 0.15.3) unter Typo3 4.1.2 mit PHP 5.1.2 zu installieren. Anschließend erhalte ich die Fehlermeldung "This module "tools_em" is not available under the current workspace" und sämtliche BE-Module verschwinden.

Entferne ich die Extension wieder aus der localconf.php, sind auch die BE-Module wieder da.

Hast Du eine Idee, was da schiefgehen könnte?

 

Gruß und so,

Sebastian

#252 steffen schrieb am 18.07.2007 14:09

Versuchs mal mit einer aktuellen svn-Version. ich habe leider nur diese am Start und kenne nicht die Stände der Releases.

#166 webby schrieb am 23.04.2007 11:52

hello!

 

kann mir jemand beim einrichten des teasers behliflich sein? bitte... ich kapiers einfach nicht, die beiden templates habe ich bereits im fileadmin... aber der rest? *totaleranfängerbin* :/

 

thx!

#164 Sabienb schrieb am 18.04.2007 18:54

Ich erlaube mir noch einmal zu fragen:

 

Wo und wie kann ich die Beschreibungen zu den einzelnen Terminen anzeigen lassen???

Ich bedanke mich im voraus.

 

Viele Grüße

Sabienb

#162 Christian schrieb am 18.04.2007 11:28

Leider bekomme ich das FE Edit nicht hin :(

Ich habe eigentlich alles gemacht, wie oben und im Beispiel. Also Ansichten im PLugin Eingefügt und rights im Setup gesetzt.

 

create.event.saveEventToPid = 175

Sagt doch events sollen in die Seite mit id 175 (zB. ein Sysfolder) gespeichert werden?

 

Leider habe ich bekomme ich bei einem Klick auf die + Buttons nur eine Leere Seite :(

 

Url sieht so aus:

www.hrg1879.de/index.php

 

Habe gerade keine weiteren IDeen mehr :(

#159 Bernd schrieb am 18.04.2007 06:20

Hallo Steffen,

hab schon mal auf anderem Weg erfolglos versucht Kontakt mit dir aufzunehmen.

Hier mein Problem:

In der Listansicht wird die Zeile "Seite 1 von 20......" oberhalb des Kalenderzeitraums nicht angezeigt. Wie bekomme ich das hin? Muss ich dazu bestimmte Einstellungen vornehmen?

Würde mich über einen Tipp sehr freuen!!!

 

Bernd

#161 steffen schrieb am 18.04.2007 11:21

Hi,

 

ich bekomme unzählige Anfragen, ausserdem beantworte ich Fragen in der Liste, in 2 Foren und hier, da ist nicht immer alles zeitnah möglich.

 

Der Pagebrowser muss aktiviert werden über

plugin.tx_calcontroller.view.list.pageBrowser = 1

#163 Bernd schrieb am 18.04.2007 17:18

Hallo Steffan,

ich weiß, dass du ne Menge zu tun hast. Sollte auch keine Kritik sein!!

Leider funzt die Seitenanzeige immer noch nicht.

Habe folgende Zeile ins Setup des Hauttemplates geschrieben.

 

plugin.tx_calcontroller.view.list.pageBrowser = 1

 

Das list.tmpl ist das, das du auf deiner Seite hier verwendest:

 

www.sk-typo3.de/fileadmin/templates/cal/list.tmpl

 

Woran könnte es noch liegen das es nicht funzt?

 

Viele Grüße

Bernd

#158 Martin schrieb am 17.04.2007 19:12

Bei mir werden externe Links, die ich mit HTMLArea 1.4.4 in die Eventbeschreibung setze nicht korrekt angezeigt. Im FE sieht man den HTML-Code des Links. Das Erstellen von Links in andern Content-Elementen ist problemlos machbar. Hat jemand eine Idee?

 

Ich benutze Typo3 4.0.4, cal 0.14.1

#156 sebastian schrieb am 17.04.2007 13:04

ich habe einen Kalender eingebaut, der sich sie die events aus einer ics-datei holt, die auf einem webdav-server liegt.

leider werden die termine nicht in das plugin eingelesen. (nur einige, wenn ich den frontend-cache lösche) hat jemand dazu eine idee?

#155 Matthias schrieb am 12.04.2007 23:25

Es hat soweit alles geklappt.

Allerdings mit dem Minikalender und der Liste habe ich als Typo3 Anfänger etwas Probleme.

Wo muss der Typo Script Code hin. Und wie bzw. wo muss man die Templates anlegen.????

 

Wäre nett wenn mir hierzu jemand ein paar Infos geben könnte.

 

Danke

#157 steffen schrieb am 17.04.2007 16:15

Der TS-Code kommt ins Template. Entweder ins Root-Template oder in ein Ext-Template. Die Hauptsache ist es, das der Code beim rendern der Seite eingebunden ist

(wichtig: in den Setup-Teil)

#165 Matthias schrieb am 19.04.2007 20:59

Hallo Steffen,

 

habe den Typo Code sowie Du gesagt hast ins SETUP des RootTmpl geschrieben und die beiden Tmpl des mini und theaser Calenders in den Fileadmin Ordner kopiert. Leider finde ich keine Elemente wie minical oder sowas die ich auf den Seiten platzieren könnte, genausowenig Einstellmöglichkeiten

 

Bitte um Hilfe

Matthias

#153 Christian schrieb am 10.04.2007 21:50

Hallo

 

ich versuche gerade die Tagesansicht anzupassen, damit ich eine Liste mit den einzelnen Tagesterminen.

 

Ich habe mich schon etwas tiefer in die Extension hineingegraben und die view class gefunden in der die ansicht gebaut wird. passender weise sind die zeitraster 0:00 - 23:00 jetzt weg. nun habe ich ein weiteres problem.

 

der termin ist als link auf eine andere seite eingerichtet. um die seite richtig aufzurufen muss ich noch einen parameter mitgeben. wie kann ich den link jetzt erweitern. der parameter ist ein uid aus einer anderen tabelle. ziel ist es die einzelansicht eines seminars anzuzeigen.

 

Gruß

Christian

#154 steffen schrieb am 11.04.2007 10:09

da wird Dir nichts anderes übrig bleiben als den event-service zu überschreiben.

Beispiele findest Du im Ordner misc der Extension.

#147 Sabienb schrieb am 02.04.2007 14:13

Hallo!

Erst einmal vielen Dank für die tolle Doku. Dadurch habe ich den Kalender gleich zum Laufen bekommen.

Leider habe ich noch zwei Fragen/Probleme:

1.) Die Monatsansicht zeigt oben den falschen Monat an. D.h. wenn ich 5 Termine im April eintrage sind die richtig platziert und auch unten erscheit das richtige Datum und der richtige Vor- und Nachmonat (März/Mai).

Nur ganz oben drüber steht März statt April!!!! Cry Cry

 

2.) Ich möchte für unterschiedliche Veranstaltungen unterschiedliche Marker haben. Ich dachte mir diese über Kategorien hinzukriegen. Doch leider werden stylesheetes die ich im Formular Kategorien angegeben und in meiner eigenen CSS-Datei definiert habe, nicht gefunden.

Wie kann ich denn mitteilen, wo sich die Stylesheets befinden????

 

Vielen Dank für Eure Hilfe im voraus.

Viele Grüße

Sabienb

#148 Sabienb schrieb am 03.04.2007 12:52

Hallo noch einmal!!

 

Problem 1 hat sich in Luft aufgelöst.

Ist derzeit wie es sein soll.

 

Wenn mir aber jemand sagen würde, wie ich meine Kategorien gestalten kann, dan wäre das wirklich super!!!

 

Viele Grüße :

#151 steffen schrieb am 04.04.2007 12:33

ist doch oben beschrieben, wie Du eigene CSS-Klassen bei Kategorien verwenden kannst (oder vordefinierte)

#152 Sabienb schrieb am 09.04.2007 13:16

Hallo Steffen!

 

Sorry, dass ich aus der Doku nicht herausgelesen hatte, dass ich z.B. "pink_catheader" in den Forumularfeldern eingeben kann. Das klappt!!

Meine eigenen Stylesheets werden leider immer noch nicht gefunden. Aber ich kann damit leben.

 

Vielleicht aber noch 2 andere Fagen:

1.) Wo kann ich meine, in einem Termin eingetragenen Beschreibungen anzeigen lassen??

2.) Kann ich dagegen tun, dass

in der Terminlistung nicht wie bisher 11:00 - 06:00 Uhr erscheint, sondern wie von mir eingegeben 11:00 - 18:00 Uhr?

Ich danke Dir im voraus.

Viele Grüße

Sabienb

Ich danke Dir im voraus.

#266 Frank schrieb am 01.08.2007 18:39

Hallo Sabine,

Dein unter 1. beschriebenes Problem löst sich bei mir leider nicht von alleine, es bleibt bestehen. Ausserdem wechselt die Sprache vom BE (deutsch) auf dem FE in englisch. Kannst Du mir sagen wie du das Problem (1.) gelöst hast?

einen Kommentar schreiben
Typo3