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
#265 Torsten schrieb am 01.08.2007 14:05

Hallo,

habe das gleiche Problem wie Rolf in Kommentar #192, Datenbankfehler bei Ort und Organisation, nach Update von 0.14.1 auf 0.15.4 . Steffens Antwort war, wurde im Forum schon diskutiert...

Kurze Frage als Neuling hier, in welchem Forum???

Die Suche in den mir bekannten Foren brachte leider nichts Sad

#285 velvet schrieb am 14.08.2007 14:21

Hi,

ich nehme an Steffen meinte das Forum www.typo3.net

 

Gruß velvet

#263 Beammeupscotti schrieb am 30.07.2007 11:58

In meiner Wochenansicht werden die Einträge nicht automatisch umgebrochen! Die Zeilen werden einfach über mein Layout hin verlängert...

Während man jedoch für Month und Day "crop" einträge a la " crop 11|.. " findet, gibt es diese nicht für die Wochenansicht - Idee??? Ich bin ratlos....

 

Auch die "zentrale Stelle" für die Calendarbreite habe ich immernoch nicht gefunden... außer ein paar width angaben in den templates... Hat da evt. auch jemand eine Idee

#264 steffen schrieb am 31.07.2007 11:39

Schau einfach in den ObjectBrowser bei view:week, dort hast Du alle Optionen, z.B.

plugin.tx_cal_controller.view.week.titleWrap.2.crop=30|...

#261 Christian schrieb am 27.07.2007 15:19

@ralf meyer:

wenn du einem termin eine startzeit gibst musst du ihm auch eine endzeit geben!

#260 Christian schrieb am 27.07.2007 15:17

Irgendwas mach ich falsch, doch ich weiss einfach nicht was. Anstatt dem Minikalender wird nur der Marker angezeigt. Mein TS sieht so aus:

 

## Calendar Base Mini View

marks.MINICAL < lib.minical

lib.minical >

lib.minical < plugin.tx_cal_controller

lib.minical {

pages = 52

view {

defaultView = month

allowedViews = month

month.monthTemplate = fileadmin/dac/templates/cal/month_mini.tmpl

calendar.defaultUid = 52

isStatic = 1

event.eventViewPid = 59

day.dayViewPid = 67

weekStartDay = Monday

}

}

 

das ganze befindet sich in page.10.

wenn ich marks.MINICAL < lib.minical durch marks.MINICAL = TEXT ersetzte wird der Marker nicht mehr angezeigt.

#262 Florian schrieb am 29.07.2007 14:23

Hi, versuch es mal so:

## NICHT unter page10

## Calendar Base Mini View

lib.minical >

lib.minical < plugin.tx_cal_controller

lib.minical {

pages = 52

view {

defaultView = month

allowedViews = month

month.monthTemplate = fileadmin/dac/templates/cal/month_mini.tmpl

calendar.defaultUid = 52

isStatic = 1

event.eventViewPid = 59

day.dayViewPid = 67

weekStartDay = Monday

}

}

 

#UNTER page10

page.10.marks.MINICAL < lib.minical

 

schöne Grüße

Florian

#288 Christian schrieb am 20.08.2007 16:12

Big Grins

vielen dank, hat funktioniert!

gruss

christian

#258 Florian schrieb am 27.07.2007 09:51

Hi Leute!

 

Ich habe den Kalender laut Tutorial eingerichtet und dieser funktioniert auch!

 

Jedoch will ich auch die beiden Spezialelemente (siehe Oben) einbinden!

 

Leider wird bei mir nur folgendes ausgegeben: "Controller function not found:"

 

Was mache ich falsch?

 

Danke

#268 Frank schrieb am 03.08.2007 06:39

Hallo, in der neusten Version müssen andere Einstellungen vorgenommen werden. Statt "pages" -> pidList und statt "defaultView" -> allowedView. Dann sollte es klappen.

 

grüße

frank

#278 Florian schrieb am 10.08.2007 01:14

Danke stimmt!

Allerdings gehört "allowedViews" statt "allowedView" geschrieben!

Abern nochmals danke!

Schöne Grüße aus dem sonnigen Nebelberg

Florian

#257 ralf meyer schrieb am 25.07.2007 11:35

Hi,

 

ich verzweifel schon bald.

 

Ich habe drei Probleme:

1. In der Kalender-Detail Ansicht wird mir der Text gekürzt und ich finde nicht wo ich die Begrenzung aufhebe.

2. Gebe ich meinem Termin eine Startzeit mit wird dieser in der Monatsansicht nicht mehr gezeigt.

3. Warum ist durchgängig ein Tag in jedem Monat mit einem roten Rahmen versehen?

 

Wie immer hängt man sich an Kleinigkeiten auf. Ich bin schon seit Tagen daran und komm nicht weiter.

 

Wäre schön wenn mir jemand weiterhelfen könnte.

 

Gruss

Ralf

#396 Michu schrieb am 05.01.2008 09:11

Hast du eine Endzeit angegeben?

#254 Marco schrieb am 22.07.2007 16:52

Hallo zusammen,

 

Danke für das tolle Kalender Plugin!

 

Leider habe ich Probleme mit dem Frontend-Editing. Ich habe alle Tips - auch die in den Kommentaren befolgt, aber beim Klick auf eines der grünen + (Event erstellen) im Frontend erhalte ich den Fehler:

 

Fatal error: Call to a member function getParentUid() on a non-object in /var/www/web60/html/typo3/typo3conf/ext/cal/view/class.tx_cal_base_view.php on line 626

 

Danke für Hilfe,

 

Gruss Marco

#255 Marco schrieb am 23.07.2007 21:03

Ich habe das Problem mit einem UPDATE auf Calendar Base 0.15.4 gelöst...

#256 Marco schrieb am 23.07.2007 21:07

...genaugenommen hatte ich das Problem mit diesem hinweis gelöst: www.typo3.net/index.php=

 

wonach ich zwar weiter kam, den neuen termin aber nicht speichern konnte. nach dem Update auf 0.15.4 fungtioniert das FE-Editing!

#253 alex schrieb am 20.07.2007 04:58

hi,

 

ich probier jetzt schon seit 3 Stunden das template vom Tutorial zum laufen zu bekommen. Ich erhalte immer die Fehlermeldung

 

"Controller function not found:"

 

Bitte helft mir bin am verweifeln.

#259 Florian schrieb am 27.07.2007 13:49

Hi, hast du schon eine Lösungs gefunden!

 

Bitte um Antwort! Danke

#248 Fuzzy schrieb am 17.07.2007 16:14

Super Tut!! Nur eine frage ich habe den TS -Code jetzt in das setup geschrieben die Tmpl. angelegt aber wie bekomme ich die Minikalender + Liste jetzt in die Seite?

#249 steffen schrieb am 18.07.2007 10:24

in dem Du das Objekt in einen Marker kopierst:

 

page.10.marks.MINICAL < temp.minical

#251 Fuzzy schrieb am 18.07.2007 11:36

Danke,

 

Verste ich leider nicht, bin neu im Typo.

#247 lakerz schrieb am 14.07.2007 13:24

Hi,

 

erst mal vielen Dank für das HowTo - hat mir als Neuling von Typo3 sehr geholfen.

 

Der Kalender läuft soweit auch schon - aber nun möchte ich eine Minikalender oder Minilisten Ansicht auf der Startseite haben - wie du ja soweit ich das verstanden habe unter "Spezialelemente" beschreibst. Hier komme ich aber nicht weiter - ich habe die 2 Template Dateien angelegt, wohin nun mit dem TypoScript? Habe ich mal in das Root Template hineingepackt, aber wie kann ich dann die beiden Elemente "beliebig plazieren"?

 

Mit

 

 

bekomme ich jedenfalls nur das Template angezeigt, ohne das die Platzhalter ersetzt wurden.

 

Vielen Dank für jede Hilfe, wie gesagt, ich arbeite erst seit vorgestern mit Typo3... Redface

 

Greets,

lakerz

einen Kommentar schreiben
Typo3