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
#117 Tanja schrieb am 14.03.2007 14:42

Hallo ich hab soweit alles wie im Toturial installiert. Wenn ich nun allerdings versuche die Seite aufzurufen erscheint "Controller function not found:" weiß da jmd weiter ??? Ich bin langsam am verzweifeln.danke euch

#118 Flo schrieb am 14.03.2007 16:19

Du musst im Plugin erst die Ansichten aktivieren (Allowed views). Das wird im Tutorial (noch?) nicht erwähnt.

#120 Tanja schrieb am 15.03.2007 08:52

und wo mach ich das genau ?? ich hab bereits in meinem template alles so konfiguriert, wie ich es wollte.

dank aber schon mal für deine hile, das ist echt lieb von dir zwinker

#121 Tanja schrieb am 15.03.2007 09:29

habs raus... vielen vielen dank... da hab ichs ja echt fast mal allene geschafft Razz

#169 thE_iNviNciblE schrieb am 24.04.2007 14:57

Ja stimmt, das steht nicht im tutorial, aber einfach im Content-Element die entsprechende Ansicht wählen. zwinker

 

Die Fehlermeldung ist etwas verwirrend am Anfang.

Aber es geht ja :-)

#116 Thomas schrieb am 14.03.2007 12:24

Hallo Markus

Wegen den Maps schau mal in die netfielders calendar. Ohne deine Frage wäre ich allerdings nicht auf die Idee gekommen das zu testen.

 

Es läuft ;-)

 

PS: in diesem Formular bitte die Pflichtfelder kennzeichnen

#160 Steffen Ritter schrieb am 18.04.2007 10:03

Hallo Thomas, Hallo Markus,

könnt ihr mir en kurzen Abriss geben, was ich tun muss, damit ich GoogleMaps in die Location bekomme? Anpassungen, Konfigurationen usw.

Weiß grad nicht wo ich danach suchen soll...

 

Vielen Dank

#531 Someone schrieb am 09.01.2009 18:10

In der Anleitung zu Cal Base ... In meiner Version auf Seite 32:

 

WEC Maps

The WEC Maps extension works with the Google Maps API to display a Google map whenever a mapped location is selected. [...]

 

:-)

#113 Markus Wüllenweber schrieb am 13.03.2007 12:19

Hallo,

 

ich habe soweit cal komplett konfiguriert.

 

Ich würde gerne für die Location GOOGLEMAPS nutzen.

Leider bekomme ich es nicht ans laufen.

Folgende Conifg habe ich im Template angegeben.

 

tx_cal_controller.view.location.map.apiKey = Mein APIKEY

tx_cal_controller.view.location.map.mapWidth = 300

tx_cal_controller.view.location.map.mapHeight = 300

 

aber läuft es nicht. Hat einer von Euch ne Lösung Danke!

 

Viele Grüße

 

Markus

#119 Markus Wüllenweber schrieb am 14.03.2007 22:44

Vielen Dank Thomas!

 

also es lag an tx_cal_controller.view.location.showMap = 1 Redface oh ich schäme mich so aber gut es stand nicht in der Doku bzw. Manual Danke nochmal!

 

Viele Grüße

 

Markus

#110 Tanja schrieb am 12.03.2007 10:12

Hi Freunde des cals,

 

sagt mal läuft auf der 4.1 final der cal bei Euch? In welcher cal-Version? Ich habe einige Probleme (z.B. HTMLArea lädt nicht, Browserabsturz bei Events editieren etc). Ich würde gerne wissen ob es noch ein grundlegendes Problem mit TYPO3 4.1 und dem cal gibt oder ob es an meinen Konfigurationen liegt.

 

Ich danke Euch für jeden Hinweis..

#112 Markus Wüllenweber schrieb am 12.03.2007 23:16

Hallo Tanja,

 

dies ist ein bekannter Bug im neuen RTE. Schau mal hier bugs.typo3.org/view.php dort kannst Du Dir die gepatchte php Datei runterladen und gegen die Original ersetzen. Dann klappts wieder.

 

Viele Grüße

 

Markus

#109 Fred-Jürgen schrieb am 11.03.2007 19:50

Hallo,

habe als Newbie leider zwei Probleme mit dem Kalender

1. die eingetragenen Daten werden nach Englischer Zeit und Darstellung angezeigt.

2. ich kann die breite des kalenders nicht verändern - da steht wohl was in den Kommentaren das begreife ich aber leider nicht Cry

Wer kann mir helfen?

#111 Markus Wüllenweber schrieb am 12.03.2007 23:14

Hallo Fred,

 

zu Deinem Anzeigeproblem schau Dir mal das typoscript hier an www.sk-typo3.de/cal-Listenansicht-Typoscript.259.0.html

 

dort siehst Du die unterschiedliche Anzeigeweise für Datum und Uhrzeit

 

Zum Problem mit der Sprache schau mal hier www.typo3.net/forum/list/list_post//59217/

 

Viele Grüße

 

Markus

#114 Fred-Jürgen schrieb am 13.03.2007 21:49

Hallo Markus,

habe alle Spracheinstellungen durchprobiert - keine hat funktioniert..

Mein Server steht bei 1und1 - gibt es da vielleicht einen Tipp?

Das mit der Breite des Kalenders habe ich immer noch nicht verstanden. Ich habe Typoskript wie beschrieben eingebaut - wo kann ich die Breite verändern?

Grüssle

Fred-Jürgen

#115 Markus Wüllenweber schrieb am 14.03.2007 07:25

Du musst die Deklaration der Sprache in die ersten Zeilen Deines Roottemplates setzen am besten bevor Du die "page" lädst.

 

Mit dem Anzeigeproblem. mmmhhh hast Du Dir die Templates unter cal/templates/ angepaßt?

#228 hullebuh schrieb am 18.06.2007 15:14

Für das Problem mit den Spracheinstellungen gibt es oben auf dieser Seite unter dem Punkt "Tools" ein nettes kleines Script.

 

Gruß

Tobi

#104 Kai schrieb am 10.03.2007 20:48

Hallo Steffen!

 

Kannst Du ein paar Zeilen verlieren, wie man die ICS-Downloads und -Feeds handhabt? Des will bei mir gar nich ... Typo3 4.1, Calendar Base Nightly Build von heute.

#105 steffen schrieb am 11.03.2007 13:15

eigentlich ganz einfach:

1. Das Template muss eingebunden sein (für rss das News-feed)

2. Im Plugin die Checkbox für ics aktivieren

 

Das wars eigentlich schon. Meine rss-Links habe ich manuell erstellt.

#107 Kai schrieb am 11.03.2007 14:08

Hallo!

Nee, soweit war ich, das gab Fehlermeldung - jetzt hab ich's aber raus. Im allerletzten (und gemeinerweise nicht erläuternd kommentierten) Feld im Constant Editor muss die Page ID der Seite mit den Terminen eingetragen werden.

#108 Kai schrieb am 11.03.2007 17:25

Nee, das war erst die halbe Miete... Aus der Event-Ansicht kann ich jetzt ics-Dateien herunterladen, aber aus allen anderen Ansichten bekomme ich folgende Fehlermeldung:

Fatal error: Cannot use object of type tx_cal_category_model as array

Was tun?

#103 roman schrieb am 10.03.2007 14:59

hallo zusammen

wie schaffe ich es, dass die legenden unterschiedliche farben haben?

habe das irgendwie noch nicht hingekriegt.

danke für euren input.

#106 steffen schrieb am 11.03.2007 13:17

einfach bei der kategorie headerstyle und bodystale ausfüllen. Die vorgefertigten Stile findest Du oben auf dieser Seite (z.B. default_catheader)

#101 Diego schrieb am 07.03.2007 16:58

hallo. Erstmals ein Dankeschön für die nette Anleitung, hat soweit auch alles geklappt.

 

Frage mich nur gerade, welche Ansicht oder Einstellungen ihr gewählt habt, um die kleine Monatsübersicht hin zu kriegen, die hier links auf eurer Seite ist.

 

wäre sehr dankbar für eine Antwort

#102 steffen schrieb am 07.03.2007 20:38

na dafür habe ich extra einen Link darunter mit dem Sourcecode zwinker

www.sk-typo3.de/Teaser-von-der-linken-Seite.253.0.html

#98 Christian schrieb am 07.03.2007 11:12

Hallo,

 

aktuell setze ich die aktuelle Version aus dem SVN vom 7.3 ein. Wenn ich nun im FE ein Event hinzufüge, wird dieses zweimal gespeichert und natürlich im Kalender auch zweimal angezeigt. Hat jemand eine Idee voran das liegen könnte?

 

Zusätzlich scheint das Feld "Verstecken" (hidden) keinerlei Auswirkungen zu zeigen. Obwohl "angehakt" ist es sichtbar bzw hidden=0.

 

Bin über jeden Hinweis dankbar.

 

Viele Grüße

Christian

#100 steffen schrieb am 07.03.2007 16:18

Danke für den Hinweis.

Wir überprüfen das und korrigieren es, bitte auf die Timeline achten:

svn.webempoweredchurch.org/calendar/timeline

#97 andré schrieb am 07.03.2007 11:04

..gibt es eine möglichkeit, die in der listenansicht generierten links für die events (###title###) mit einer klasse zu versehen?

 

hab das standardmäßig ausgelieferte ts angesehen und da keine möglichkeit erkannt. :-(

 

hat jemand ne idee?

#99 steffen schrieb am 07.03.2007 16:16

bis jetzt noch nicht.

Wir haben aber vor, alle Links zu generalisieren, so das die auch in Zukunft über TS konfigurierbar sind.

Das wird aber erst nach dem nächst anstehenden Release passieren.

einen Kommentar schreiben
Typo3