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
#286 velvet schrieb am 17.08.2007 15:33

Hallo,

 

was muß ich in der Listenansicht als Start- und Endzeit eingeben, damit mir der aktuelle Monat z.B. vom 1. bis 31. August angezeigt wird?

 

Weiß, daß ich hier mir strtotime() arbeiten muß, komme aber leider nicht auf die passende Lösung.

 

(cal 0.14.1)

 

Wer kann helfen?

Danke

Nicole

#283 Stefan schrieb am 13.08.2007 10:06

Hi,

wenn ich ein neuen Termin eingebe, wird die Kategorie einfach nicht gespeichert. In der Datenbank wird immer 0 angezeigt. Woran könnte das liegen?

Vielen Dank Stefan

#281 Peter schrieb am 12.08.2007 19:27

Confused Hallo zusammen,

 

ich habe ein Problem mit der Ausgabe des Minicalenders an einen Marker. Bin zwar den Anweisungen gefolgt, die ich hier in den Einträgen gefunden habe, jedoch wird der Minicalender nicht ausgegeben.

 

Folgender Typoscript im page.10.marks:

 

MINICAL < lib.minical

 

Folgender Typoscript nach page.10.marks:

 

 

# Calendar Base Mini View

lib.minical >

lib.minical < plugin.tx_cal_controller

lib.minical {

pidList = 112

view {

defaultView = month

allowedView = month

month.monthTemplate = fileadmin/templates/cal/month_small.tmpl

calendar.defaultUid = 112

isStatic = 1

event.eventViewPid = 114

day.dayViewPid = 115

weekStartDay = Monday

}

}

 

___________________________________

 

Wenn ich das in der aktuellen Version des Plugins richtig sehe, heißt das Template für den MINICALENDER = month_small.tmpl, oder?

 

Der Marker - MINICAL - scheint nicht angesprochen zu werden, nur der Eintrag ###MINICAL### wird im FE weiterhin angezeigt. Hat jemand einen Vorschlag?

 

Gruß. Peter.

#282 Peter schrieb am 12.08.2007 20:34

Confused Ich habe mein Typo Script jetzt so definiert:

 

config.language=de

config.stat_apache = 1

config.stat_apache_logfile =logfile.txt

 

# Calendar Base Mini View

lib.minical >

lib.minical < plugin.tx_cal_controller

lib.minical {

pidList = 112

view {

defaultView = month

allowedView = month

month.monthTemplate = fileadmin/templates/cal/month_small.tmpl

calendar.defaultUid = 112

isStatic = 1

event.eventViewPid = 113

day.dayViewPid = 113

weekStartDay = Monday

}

}

 

page = PAGE

page {

 

.............

 

__________________________________

 

und der Marker wird angesprochen. Allerdings bekomme ich eine Fehlermeldung:

 

Controller function not found:

 

Wie kann ich dieses Problem lösen?

 

Bitte um dringende HILFE.

 

Vielen Dank.

#284 Peter schrieb am 13.08.2007 10:41

Neutral

Also folgendes habe ich noch bis in die Nacht geschafft:

 

Typo3 Script vor page:

 

lib.minical >

lib.minical < plugin.tx_cal_controller

lib.minical {

pidList = 112

view {

defaultView = month

allowedViews = month

month.monthTemplate = typo3conf/ext/cal/template/month_small.tmpl

calendar.defaultUid = 112

isStatic = 1

event.eventViewPid = 114

day.dayViewPid = 115

weekStartDay = Monday

}

}

 

Typo3 Script ind der page.10.marks:

 

MINICAL < lib.minical

 

______________________________________

 

Im FE bekomme ich eine Tabelle zu sehen, in der ich aber nur die Namen der Datenbank-Einträge sehen kann:

 

###MONTH_TITLE###

###WEEKDAY###

###WEEKNUM###

###LINK###

 

Im Quelltext der Seite wird an der Stelle volgender HTML ausgegeben:

 

 

 

 

###MONTH_TITLE###

###WEEKDAY###

###WEEKNUM###

 

###LINK###

 

 

 

 

_______________________________________

 

Was mache ich falsch?

 

Bitte um Hilfe, ganz dringend. Danke.

#277 BeamMeUpScottie schrieb am 08.08.2007 12:01

Noch einmal zur Umbruchgeschichte... Die Eventtitel werden nur nicht umgebrochen, wenn sie als Link (alle Ansichten eingeschaltet) angezeigt werden. Ansonsten funktionierts!

 

Ratlos....

 

BeamMeUpScottie

#279 BeamMeUpScotti schrieb am 12.08.2007 10:29

War ganz einfach zwinker

 

CSS von

 

.inner a white-space:nowrap;

 

auf

 

.inner a white-space:normal;

 

geändert und schon werden auch Links umgebrochen!!!

 

Jetzt ist alles schön

 

Beam

#287 sissi schrieb am 19.08.2007 23:52

Sers,

 

hab ich in der Spalte rechts ganz schön den Minikalender eingebaut:

 

www.pasch.or.at/cms/index.php?id=leitbild

 

Nun fehlt zur Perfektion des Ganzen nur dass man im Minikalender auch durch die Monate blättern kann, denn aktuell kann man nicht rausfinden was z.B. im Oktober an Events los ist.

 

But how?

 

Thx+Grüsse

Sissi

#425 mac_sas schrieb am 20.02.2008 15:10

Hi Sissi,

Und wie hast Du#s hinbekommen?

Stehe gerade vor dem selben Problem...

#275 DontWorry schrieb am 06.08.2007 22:19

Hallo,

 

ich bin fast am Ziel - fast alles läuft wunderbar !

Nur die Monatswrapper (also Monatsüberschriften) in der Listenansicht sind bei mir nicht sichtbar (V. 0.15.3). Im Template steht:

<dt>


</dt>

<dd> --- Month --- </dd>

Was mach ich damit ?

 

Roland

#276 DontWorry schrieb am 06.08.2007 23:00

... so - jetzt, wo ich endlich mal geschrieben habe, find ich kurz danach die Lösung im ObjectBrowser !

Roland

#274 Markus schrieb am 06.08.2007 17:19

Hallo,

irgendwie steh ich aufm Schlauch und komm nicht weiter.

 

Und zwar geht es um den Minicalender.

 

 

Gibt es eine Möglichkeit die Tagesansicht, die ich aus dem Minikalender anklicke, als Liste auszugeben?

 

Vielleicht habe ich auch nur einen Denkfehler ...

 

Danke schon mal vorab.

 

Beste Grüße

 

Markus

 

(cal 0.15.4)

#638 Felix schrieb am 29.09.2013 16:06

Gibt's, hierzu auf der Seite mit der Tagesansicht einfach das Listenmodul einbinden und dann folgendes TS dazu:

 

plugin.tx_cal_controller.view.list {

starttime = today

endtime = +1 day

useGetdate = 1

useCustomStarttime = 0

useCustomEndtime = 1

customStarttimeRelativeToGetdate = 0

customEndtimeRelativeToGetdate = +1 day

}

#272 Joe schrieb am 05.08.2007 22:09

Hallo,

 

vielen Dank für den tollen Kalender. Leider kämpfe ich mit zwei für mich unlösbaren Problemen:

1) Die Nachricht 'no event found' erscheint, obwohl ich den Link auf den Ordner Veranstaltungen gelegt habe, in dem das Ereignis sich befindet und Termin stimmt.

 

2) Es ist mir nicht möglich, Angaben zu Ort und Veranstalter zu machen, da die Datenbank hier zerschossen ist. Fehlermeldung: "DBAL fatal error: No handler found in handler_getFromTableList() for: "" (SQL engine parse ERROR: No table name found as expected in parseFromTables()!: near " ")

 

Auch eine Neuinstallation hilft nicht weiter.

 

Ich bin für jeden Tipp dankbar.

 

Joe

#273 Joe schrieb am 06.08.2007 00:28

Dein Kommentar: Jetzt hab ich selbst entdeckt, warum die Ereignisse nicht angezeigt wurden, aber das Problem mit Ort und Veranstaltung bleibt. Bei mir ist übrigens auch ein Upgrade der Grund für das Problem. Ich konnte die Antwort im Forum leider auch nicht finden.

 

Joe

#270 BeamMeUpScottie schrieb am 05.08.2007 20:37

So hab das jetzt mit den Crop Einträgen hingekriegt... sieht leider sehr bescheiden aus.

 

Aber könnte mir mal jemand erklären, warum die Einträge nicht von alleine in schmaleren Kalendarspalten (über width vorgegeben) umgebrochen werden, sondern sich die Spalte einfach vergrößert?

 

Muss man da irgendwo was "einschalten" - wenn ja: wo ?

 

Der für Hilfe sehr dankbare,

BeamMeUpScottie zwinker

#269 Chris schrieb am 04.08.2007 22:46

Cry

Der Kalender funktioniert super!

ABER: Wenn ich einen Ort erstellen möchte, bekomme ich folgende Fehlermeldung

 

Fatal error: Cannot instantiate non-existent class: t3lib_install in /xxx/xxx/t3n/typo3_src-4.0/t3lib/class.t3lib_div.php on line 3913

 

kann mir jemand weiterhelfen ?

BITTE

#267 Ralf schrieb am 01.08.2007 21:35

Hallo,

 

achtung typo3 newbie...

Ich habe den kalender soweit zum laufen bekommen.

 

1. nur das ich die eingetragenen termine nicht anklicken kann.

2. wie kann ich denn den mini kalender auf meiner seite einbinden an einer bestimmten stelle einbinden ich habe auch schon die 2datein siehe oben erstellt. giebt es da einen bestimmen befehl?

 

 

gruß ralf

#271 BeamMeUpScottie schrieb am 05.08.2007 20:40

Du musst auf der Betreffenden Kalendarseite alle Ansichten einschalten... Event, Tagesansicht, Monatsansicht, usw. Also nicht etwa nur die Monatsansicht - sonst klappt die Verlinkung zu deinem Event nicht.

So oder sinngemäß

 

BeamMeUpScottie zwinker

#388 user schrieb am 18.12.2007 10:55

Also, es reicht "Ereignis-Ansicht" noch mit anzeigen zu lassen

einen Kommentar schreiben
Typo3