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
#374 Micha schrieb am 20.11.2007 10:25

Hallo zusammen!

Ist es möglich in der dayview zusätzlich zum Ereignistitel noch einen Teasertext anzeigen zu lassen? Alternativ auch ein beliebiges anderes Feld für zusätzliche Angaben.

Das kriege ich nicht hin. Benutze die Version "0.15.4".

 

Vielen Dank im voraus

#371 Ralf schrieb am 17.11.2007 16:58

Ich benutze mittlerweile cal-0_16_0-r1687

 

Für die Kalenderseite habe ich ein Template +ext erstellt.

Der Kalender funktioniert damit.

 

Allerdings werden nur Änderungen übernommen, welche in den CONSTANTS stehen.

 

Alles was entweder über den Objekt Browser oder manuell in das SETUP eingetragen wird, hat keine Auswirkungen?!

 

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

bewirkt im SETÜP z.B. nichts.

 

Auch die Frontenduser mit;

plugin.tx_cal_controller {

rights {

edit = 1

create.event.enableAllFields.group = 22

}

}

 

bewirkt nichts.

Woran kann das liegen?

 

Adios all,

Ralf

#372 Ralf schrieb am 18.11.2007 16:46

Das Einträge im SETUP gar nicht funktionieren, stimmt wohl doch nicht.

 

plugin.tx_cal_controller.view.week.dateFormatWeekList = %a, %d %b <-- ändert die Reihenfolge.

 

plugin.tx_cal_controller.view.week.titleWrap.1 = crop=10|...

plugin.tx_cal_controller.view.week.titleWrap.2 = crop=10|... <-- bewirkt aber nichts.

 

Zumindest sehe ich jetzt, daß auch "manche" Einträge im SETUP funktionieren Rolleyes

 

Aber warum geht kein Crop in der Weekansicht?

 

Adios,

Ralf

#373 Ralf schrieb am 18.11.2007 17:29

Yeah. Fehler gefunden:

 

Nicht dies ist der Titelumbruch in der Wochenansicht:

plugin.tx_cal_controller.view.week.titleWrap.1 = crop=10|...

 

sondern dies:

plugin.tx_cal_controller.view.week.event.title.crop = 10|..

 

Es geht so langsam vorran. zwinker

 

Adios all,

Ralf

#368 Ralf schrieb am 15.11.2007 05:56

Hallo all,

 

mein Problem wurde hier schon 1-2 mal beschrieben, aber eine Lösung konnte ich leider -für mich- daraus nicht ableiten.

 

Habe jetzt 3 verschiedene CAL-Versionen probiert: 15.4, 16.0 (r1682) und jetzt 15.5

 

Bei allen komme ich so weit, daß ich als eingeloggter Frontend-User die Editierungssymbole im Frontend sehe.

Auch die Kalender Administration wird angezeigt.

Wenn ich jedoch im Frontend auf ein Event-Erstellungssymbol klicke, gelange ich immer nur wieder in die Monatsansicht.

 

So lange das Frontend-Editing nicht klappt, lohnt sich für mich auch kein Anpassen des Layouts. :(

 

Events im Backend funktionieren und werden auch dar gestellt.

 

Adios,

Ralf Sad

#369 steffen schrieb am 15.11.2007 18:36

das kann nur daran liegen, das Du auf der Seite die Edit-view nicht drin hast.

Wenn alle Stricke reissen, schreib mich mal an und schick mir Zugangsdaten.

#370 Ralf schrieb am 15.11.2007 18:47

Hallo Steffen,

 

just in diesem Moment lese ich gerade auf dieser Seite das Problem:

svn.webempoweredchurch.org/calendar/ticket/215

 

Ich hatte nur Monat, Tag, Woche und Jahr in der Ansichtsauswahl.

Jetzt habe ich -alle- angewählt und es funktioniert.

 

Wird sicher auch gehen, wenn ich neben z.B. Monat nur Edit-view (wie Du schreibst) anwähle.

 

Hatte echt mehrere Tage nach Lösung gesucht, welche meiner Meinung nach nicht unbedingt selbsterklärend ist und auch in Dein Tutorial sollte. <-- Daran sind schon mehrere User gescheitert!

Ich habe mich deswegen bereits nach Alternativkalendern umgesehen, werde aber jetzt wohl bei CAL bleiben.

 

Adios,

Ralf

#363 Primus schrieb am 06.11.2007 11:21

Hallo allerseits

 

Habe mit der ICS-Datei eines einzelnen Events das Problem, dass die Location leer bleibt, wenn der Event mit einer Cal-Location konfiguriert ist. (Vielleicht besteht das Problem auch mit der Liste, aber die habe ich nicht im Einsatz, auf jeden Fall sind die Locations bei den Demo-Kalendern auf dieser Website auch leer.) So wird der Termin nicht korrekt importiert. Ich und andere arbeiten mit Lightning.

 

Nur wenn der Event mit einer Location konfiguriert ist und die Cal-Location entfernt wurde, funktioniert es korrekt.

 

Kann man dieses Verhalten beeinflussen? Ich habe im ObjectBrowser folgenden Eintrag gefunden:

ics.10.module.locationloader.template = EXT:cal/template/module_locationloader.tmpl

 

Weiter besteht das Problem, dass trotz konfigurierter plugin.tx_cal_controller.view.ics.eventUidPrefix = www.zli.ch immer www.mysite.com_... ausgegeben wird. Im ObjectBrowser wird auch der richtige Wert angezeigt.

 

Danke für die alle weiterführenden Hinweise.

 

Grüsse, Prims.

#364 Primus schrieb am 07.11.2007 14:55

Das Problem wird in der nächsten Version behoben.

#362 Anja schrieb am 04.11.2007 15:29

Hallo Steffen, hab den Kalender jetzt endlich durch dein Tut zum laufen gebracht.

 

Hätte aber mal noch ne Frage zur Tagesansicht. Hats hier ne Möglichkeit diese auch als Liste auszugeben? Bei 10 bis 15 Terminen, die übern Tag so anfallen und sich alle ziemlich überschneiden können wirds dann bei der normalen Ansicht leider etwas unübersichtlich.

 

Danke dir schon mal vorab.

 

Liebe Grüße

#361 WWT schrieb am 03.11.2007 14:38

Hallo!

Möchte die Kategorien im FE als Selectbox haben. WIe kann ich die derzeitige Listansicht umschreiben??? Bitte um Feedback.

DANKE, Joe.

#366 Mark schrieb am 07.11.2007 21:40

Das würde mich auch interessieren.

#367 steffen schrieb am 07.11.2007 23:06
#360 Benjamin schrieb am 29.10.2007 12:38

Hallo,

 

kann man den minical auf irgendeine Art und Weise nur auf bestimmten Seiten anzeigen lassen? Momentan bekomme ich den Kalender ja auf allen Seiten angezeigt, möchte das aber ändern.

 

Viele Grüße

Benjamin

#359 Primus schrieb am 27.10.2007 22:34

Die Icons im Header für die Ansichten Tag, Woche, Monat und Jahr werden entsprechend der Konfiguration des Plugins angezeigt oder ausgeblendet - abhängig ob sie im Plugin konfiguriert sind.

 

Bei der Jump-Navigation sind im ersten Drop-Down Links zum heutigen Tag, aktueller Woche, aktueller Monat und aktuelles Jahr zu finden. Diese Auswahl wird im Gegensatz zu den Icons im Header NICHT der Konfiguration des Plugins angepasst. Das heisst z.B. im Drop-Down wird der Link zum aktuellen Jahr angezeigt, obwohl gar keine Jahresansicht im Plugin konfiguriert ist. Wählt man dieses Link wird einfach die Seite neu geladen, aber man bleibt auf der aktuellen Ansicht stehen. Für einen Besucher der Website ein unerklärliches Ereignis.

 

Ist dieses Verhalten beabsichtigt oder habe ich etwas übersehen?

 

 

Primus

 

PS Es handelt sich um die aktuellste Version 0.15.4 aus dem Repository bei typo3.

#365 Primus schrieb am 07.11.2007 14:58

Auch wenn keine Jahresansicht konfiguriert ist, kann man in der Jump-Nav das Jahr ändern - und eben wieder zurück. Das Verhalten ist bei Design.

#358 Primus schrieb am 25.10.2007 20:10

Warum wird der TS-Code

 

plugin.tx_cal_controller.view.week.dateFormatWeekList = %A

 

aus dem Setup im FE nicht übernommen? Nur wenn ich im Object Browser direkt die Änderung vornehme wird in der Week View nur der Wochentag ausgegeben.

 

Das gleiche gilt für dateFormatWeek und timeFormatWeek.

 

Primus

#357 Primus schrieb am 25.10.2007 20:03

An alle die gerne die Zeit im 24-Stundenformat und das Datum in deutscher Reihenfolge haben möchten:

 

Das ist eine Einstellung im Constant Editor! Calendar Base General.

 

Wem das noch nicht reicht schreibt es ins TS-Setup und formatiert nach seinem Gusto.

einen Kommentar schreiben
Typo3