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
#485 Micha schrieb am 27.06.2008 11:42

Hallo,

bei mir tritt folgendes Problem auf (nach update von 0.15 auf 1.0):

in der Monatsansicht konnte man bei v0.15 auf das icon klicken und wurde zur Ereignisnsicht geleitet. Nach dem update geht das nicht.

 

Ich habe im Template phpicalendar_event.tmpl das event folgendermaßen definiert:

###IMAGE###

 

In der Monatsansicht sieht man jetzt das Icon und darüber den Text "Bild"

Wenn ich auf "Bild" klicke komme ich zur Ereignisansicht, wenn ich aufs Icon klicke, wird mir nur das icon in separatem Browserfenster angezeigt. Ich will aber den Text "Bild nicht haben" und über den Klick aufs icon zur Ereignisansicht. Was muß ich tun?

#622 skinner13 schrieb am 17.02.2011 10:57

Versuch es mal mit:

 

month.event.image{

maxW = 120

stdWrap.dataWrap =

|

stdWrap.required = 1

1.imageLinkWrap.enable.field >

1.imageLinkWrap.enable.override = 0

}

#484 Joachim schrieb am 26.06.2008 09:36

Hi, da ich den Einruck habe, bei Euch wird einem geholfen, hier meine Frage: ich bin am verzweifeln, weil mein Kalender (v. 1.0.0) nicht so will wie ich - er spricht nicht deutsch mit mir. Aber ich habe auf der gleichen Seite tt_news und das tut's ... siehe: www.thw-lauf.de

 

An der config.language kann es also nicht liegen (eingetragen ist: de_DE@euro) und ich habe auch

 

plugin.tx_cal_controller.view.dateFormat = %d.%B %Y

plugin.tx_cal_controller.view.timeFormat = %H:%M Uhr

 

drin - das wird aber scheinbar nicht mehr verwendet, oder? Vor dem Update des Kalenders und der typo-Installation (jetzt 4.2.1) gings - allerdings habe ich da den minical verwendet und jetzt ist's mehr eine verstümmelte Liste ;-)

 

Vielen Dank schon mal für Eure Ratschläge

#483 T.Maus schrieb am 10.06.2008 19:39

Gibt es eine Möglichkeit einen Monat als Liste anzuzeigen und dann durch nächsten bzw. letzten Monat zu navigieren ?

#491 Ttim schrieb am 09.07.2008 11:48

möglich schon, vielleicht braucht es einfach ein wenig Aufwand.

#482 Thomas schrieb am 10.06.2008 02:36

Calendar Base und Realurl

 

die Ausgabe der URLs werden einfach nicht real!

 

Ich habe den o.b. Code in meine localconf in diesen Abschnitt eingefügt:

 

'postVarSets' => array(

'_DEFAULT' => array(

...

 

Die Urls werden aber nicht real - und es wird auch kein Fehler ausgegeben...

Hat das jemand mit dem o.g. Code hinbekommen??

 

Würde mir schon weiterhelfen! Oder musstet Ihr etwas ändern? Wenn ja was?

 

Danke

Gruß Thomas

#480 Rainer Lenz schrieb am 04.06.2008 08:07

Verträgt sich diese Extension vielleicht nicht mit anderen Extensions? Ich habe nunmehr nochmal alles deinstalliert, exakt nach Anweisung nochmal installiert. Ergenbnis gleich, die Kalenderseite wird nicht gefunden.

 

Schade ist, das man nirgendwo ne Antwort bekommt, das war bei Joomla anders :-(

 

Ich schreibs trotzdem hier rein, damit jemand der die gleichen Probleme hat zumindenst weiß, das es nicht nur ihm so geht.

 

Falls jemand ein gutes Forum kennt, indem auch Antworten kommen, bitte mailen. Danke

#478 Thomas M schrieb am 03.06.2008 20:22

Hallo,

 

Eine wunderbare Extension wenn auch komplex, dieser caendar. Eine Sache bekomme ich nicht hin. In der Monatsansicht wuerde ich gerne die <td> in denen ein Event stattfindet (ganztagsevent) mit einem anderem Hintergrundfarbe versehen. Dafuer steht anscheinend folgende CSS Klasse zur Verfuegung.

plugin.tx_cal_controller.view.month.eventDayStyle = eventDay # @description CSS class for a day containing an event.

 

Diese Klasse erscheint allerdings leider nicht in meinem Kalendar. Die anderen Klassen werden vom Typoscript uebernommen, z.B.:

 

<td class="monthLargeBasic monthSelectedWeek monthSelected monthCurrentWeek monthToday cal_day2 day">

 

Weiss dazu jemand etwas?

 

Danke,

 

Gruss,

Thomas

#476 Rainer schrieb am 31.05.2008 21:38

Wenn ich das template fe editing cal einbinde kommt beim Versuch ein event zu editieren HTTP 500 Error Website kann nicht angezeigt werden

nehm ich wieder raus ist wenigstens der Kalender wieder da.

 

Constant des TKalendertemplates sieht so aus:

plugin.tx_cal_controller.rights.edit = 1

plugin.tx_cal_controller.rights.admin.user = 1,2

plugin.tx_cal_controller.rights.admin.group = 12

plugin.tx_cal_controller.view.dateFormat = %d %B

plugin.tx_cal_controller.view.timeFormat = %H:%M

plugin.tx_cal_controller.rights.defaultSavePid = 74

plugin.feadmin.fe_users.pid = 45

 

Was amche ich denn bloß falsch?

#477 Rainer Lenz schrieb am 03.06.2008 07:57

Mittlerweile sind die Probleme noch viel größer geworden. Nachdem ich im BE einen neuen Kalendereintrag hinzugefügt hatte, wurde der Kalender im FE bei den admins nicht mehr gefunden. Dann mal die Reihenfolge bei den beiden css Templates geändert, nun wurde der Kalender gar nicht mehr gefunden. Wieder zurückgestellt und es blieb dabei, Alles noch mal neu, nee, der Kalender ist nicht mehr zu finden. Was nun?

#481 jons schrieb am 08.06.2008 14:46

hi, auch ich habe mit calendar_base gemischte erfahrungen gemacht. generell scheints eine schöne ext zu sein. aber kompliziert. habe viele tage darin investiert und hatte es fast am laufen, so wie ichs wollte, doch dann traten plötzlich probleme auf, so das plötzlich bestimmte funktionen nicht mehr gingen, die vorher schon gingen und ich nicht wußte warum. deswegen hatte ich es dann auch mit cal gelassen, weil so was ziemlich frustrierend sein kann.

 

gut am cal finde ich vor allem die suche. dies ist auch der grund warum ich es jetzt nochmal mit cal versuche, trotz der unregelmäßigkeiten. es gibt die ext cal_tt_news. möchte gerne die suche von cal mit tt_news kombinieren. wenn da jemand erfahrung mit hat, würde ich mich über ein posting freuen.

#474 Martin schrieb am 27.05.2008 12:56

Hallo,

 

ich würde gerne den Kalender (die Mini-Version plus eine Eventliste) benutzen, nur um Termine anzuzeigen, ohne Links. Die Datums mit Termin sollen in der Mini-Monats Ansicht farbig unterlegt sein, sonst nichts, auch der Monatsname soll nicht verlinkt sein.

#479 Thomas M schrieb am 03.06.2008 20:31

Hallo,

Ich denke ich habe ein aehnliches problem mit dem monthLarge template (2 kommentare weiter unten). Ich nehme an das s es bei dem minicalendar die gleiche CSS Klasse gibt, diese wird allerdings nicht uebernommen.

 

Gugg dir mal das in TS browser an:

 

plugin.tx_cal_controller.view.month.eventDayStyle = eventDay # @description CSS class for a day containing an event.

#472 jonas schrieb am 20.05.2008 23:31

super big fun:

 

 

plugin.tx_cal_controller.rights.create.event{

 

fields{

calendar_id.default = 1

}

}

 

wurde bis vor kurzem noch einwandfrei umgesetzt, default-kalender beim anlegen neuer events. nun, mit einem mal geht das nicht mehr, zeitweise konnte man im create-event formular gar keinen kalender auswählen obwohl ja welche angelegt sind. klingt für mich nach bugs.

#471 jonas schrieb am 16.05.2008 09:59

kann mir bitte jemand weiterhelfen? die vorher gepostetn sachen sind jetzt egal oder teilweise auch schon gelöst, aber jetzt hab ich mal echt ein problem mit dem cal: habe eben festgestellt, das das formular um anlegen neuer events nicht mehr angezeigt wird. stattdessen der text:

 

"Sie haben keine Berechtigung zum Anlegen einesevent"

 

ich hab keine ahnung wie es plötzlich dazu kommet, entsprechend frustrierend ist das auch. habe sogar schon die extension de- und wieder neu installiert, aber es bleibt dabei, das formular ist weg, plötzlich keine events mehr anlegen? hilfe, was ist da plötzlich los?

einen Kommentar schreiben
Typo3