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
#353 Ralf schrieb am 23.10.2007 18:37

Hi,

danke fürs Tutorial. Das macht einiges einfacher. Zwei Probleme bleiben mir aber leider noch.

Die Tagesansicht wird einfach nicht dargestellt. Es erscheint nur eine weiße Seite, wenn ich dorthin klicke. Dabei bin ich dort genau so wie bei der Monats- bzw. Listenansicht vorgegangen.

Das zweite Problem tritt auf, wenn ich die Suchbox auf einer Seite mit Listenansicht einfüge, bei der die Liste bereits nach einer Kategorie gefiltert wurde. Dort erhalte

ich die Fehlermeldung "Call to a member function getSinglePid()" (Bsp.:

143.93.108.160/~descom/index.php. Ist die Liste nicht gefiltert, funktioniert alles (Bsp.: 143.93.108.160/~descom/index.php. Weiß jemand Rat?

 

Gruß Ralf

#354 steffen schrieb am 24.10.2007 14:38

welche Version setzt Du ein?

#355 Ralf schrieb am 25.10.2007 09:30

Ich nutze Version 0.15.4.

#351 Jens schrieb am 19.10.2007 10:39

Achtung! Bei den TS Teaser Beispielen muss "view.allowedviews = list" verwendet werden !!!

#352 steffen schrieb am 19.10.2007 12:17
#350 Armin schrieb am 17.10.2007 17:20

Hallo Steffen,

vielen Dank für die prima Anleitungen auf Deiner Seite. Eine Frage hätte ich noch zur listview des Kalenders.

 

Wo stelle ich das Dateformat ein damit diese Ausgabe kommt:

17.Oktober 2007 - 17.Oktober 2008

 

Bei mir kommt leider nur sowas:

Oktober 17 - Oktober 17

 

viele Grüße

Armin

#356 thomas schrieb am 25.10.2007 17:37

Genau das versuche ich auch herauszufinden...

#379 24typo schrieb am 28.11.2007 15:14

Formatierung des Datums mit

 

plugin.tx_cal_controller.view {

dateFormat = %d.%m.%Y

timeFormat = %H:%M

}

 

Einfach in den Constants eintragen.

#515 andi schrieb am 05.10.2008 14:21

und wenn das keine wirkung zeigt, was habe ich falsch gemacht wenn anschließend das datum immernoch oktober 07 ist?

#349 nicocero schrieb am 17.10.2007 16:57

... ich moechte einen statischen Minikalender und eine statische Liste mit den Terminen des aktuellen Monats auf der linken Seite angezeigt bekommen. siehe siteground207.com/~isnaya/typo3/index.php. wo muss ich gemaess der obigen instruktion den typoscript exakt hineinkopieren, wo muessen die Templates monthmini.tmpl und monthteaser.tmpl eingebaut sein. gibt es eine etwas genauere anleitung, bin leider totaler typo3 anfaenger. gruss & merci

#347 Benjamin schrieb am 12.10.2007 21:44

Hallo,

 

gibt es eine Möglichkeit die Endzeit aus der Dayview herauszunehmen? Alle anderen Ansichten lassen sich problemlos anpassen, aber in der Dayview finde ich leider keine Möglichkeit :(

 

Gruß

Benjamin

#348 Benjamin schrieb am 13.10.2007 16:41

Wer genau schaut, der findet auch, dass sich der Marker auch im "phpicalendar_event.tmpl" findet Rolleyes

 

Viele Grüße

Benjamin

#343 mark schrieb am 11.10.2007 23:08

Guten Abend

Bezüglich dem Kalender hätte ich da ne Frage: Gibt es eine Möglichkeit, einem einzelnen Event mehrere Orte zuzuordnen?

 

grüsse

Mark

#346 steffen schrieb am 12.10.2007 09:41

momentan nicht.

#340 Fredo schrieb am 11.10.2007 14:13

Hallo!

 

Ich setze Typo3 4.0.4 ein mit der Extension "Calendar Base" (cal) Version 0.15.4

 

Meinen Kalender habe ich mithilfe vom Kickstarter um einige Felder im Event erweitert und gebe diese auch im Frontend aus. Nun möchte ich gerne auch nach diesen Felder in der Suche suchen können.

 

Bisher habe ich im Template nur gesehen, dass select-Felder definiert sind. Das Template habe ich um ein Select-feld erweitert:

 

<select name="tx_cal_controller[referent_ids][]" id="tx_cal_controller_referent_ids">###REFERENT_IDS###</select>

 

 

Der Marker wird hier jedoch nicht autogeparsed und umgesetzt. Außerdem müsste die Suche ja noch mitgeteilt bekommen auch in diesen Felder zu suchen?

 

Kann mir jemand weiterhelfen oder hat jemand einen Tipp wie ich da am Besten dran gehe?

 

Beste Grüße

Fredo

#334 Kai schrieb am 09.10.2007 15:12

Hallo!

Erstmal großes Kompliment für diese geniale Extension! Installation und Integration klappten ohne Probleme...

 

Jetzt hab ich aber noch eine Frage, deren Antwort ich auch nach stundenlangen Suchen nicht gefunden habe (vlt. bin ich ja blind): wie bekommt man so eine tolle Liste hin mit den Monatsüberschriften wie in der Online-Demo: www.sk-typo3.de/Listen-Ansicht.248.0.html

 

Wenn mir da jemand weiterhelfen könnte wär das Spitzenklasse! :-)

 

Vielen Dank & Grüsse

Kai

#335 steffen schrieb am 09.10.2007 15:50

schau nochmal - oben ist die Konfiguration in den Links.

#336 Kai schrieb am 09.10.2007 16:46

Huch, an der Stelle war vorher nur ne Fehlermeldung ;-)

 

Ok, vielen herzlichen Dank

Kai

#337 steffen schrieb am 09.10.2007 17:14

Ja, ich bin auf einen neuen Server umgezogen, daher stimmen ein paar Pfade noch nicht. Bis ich das alles mal gefunden habe ...

 

Dafür ist die Performance deutlich besser geworden.

#332 Markus Hoffmann schrieb am 09.10.2007 14:22

Hallo zusammen, ich habe folgendes Problem: ich habe in einer Site mehrere Kalender (Dekanat und Gemeinden), ich kann im Frontendbereich auch wunderbar damit arbeiten, kann Termine eintragen, Kategorien auswählen, Kalender auswählen, funktioniert alles wunderbar. Im Backend wird mir allerdings nur ein Kalender angezeigt (der zuerst erstellte) und bei diesem werden mir auch keine Kategorien gezeigt. Ich bin ein wenig ratlos. die id des entsprechenden Folders ist gesetzt (wie gesagt, wenn ich durchs Frontend drauf zugreife funktioniert das alles auch wunderbar). Hat jemand ne Idee für mich?

#333 steffen schrieb am 09.10.2007 15:02

schau mal, ob Du Access-restriction beim BE-User gesetzt hast.

#338 Markus Hoffmann schrieb am 09.10.2007 20:57

Nein habe ich nicht, habe ich schon nachgeschaut

#339 RoGer schrieb am 10.10.2007 08:30

... hab das gleiche Problem - keine Kategorien im BE(0.15.4).

#341 Markus Hoffmann schrieb am 11.10.2007 17:48

HILFE!!! Ich verzweifele wirklich! ich habe die Erweiterung runtergeworfen, alle referenzen auf die extension gelöscht, die datenbanktabellen gelöscht, die aktuelle version aus dem SVN installiert und das selbe spiel wieder. er erkennt nur einen Kalender im BE (und zwar den mit der UID 4) alle anderen Kalender werden im BE nicht erkannt. Kategorien kann ich auch nur für den einen Kalender im BE anlegen, Wenn ich Events anlege erscheinen diese Kategorien im BE allerdings nicht. Wenn ich übers FE darauf zugreife läuft alles. Ich kann Termine eingeben, Kategorien bearbeiten und löschen usw, usw, Hat irgendjemand eine Idee?????

#342 steffen schrieb am 11.10.2007 18:59

mach mir doch mal einen Zugang, ich muss mir das mal anschauen zwinker

#344 steffen schrieb am 11.10.2007 23:47

ok, ich habe es mir angeschaut.

 

Es lag an der Zugriffskontrolle der BE-User / Gruppen.

 

Selbst wenn ein User diese kontrolle nicht aktiviert hat, eine der zugeordneten Usergruppen aber eine Einschränkung haben, greift die.

btw - ein Admin braucht keine Gruppen, der Haken für Admin reicht aus.

#345 Markus Hoffmann schrieb am 12.10.2007 09:29

Hallo Steffen, vielen Dank erst mal. Wobei, ich noch nicht so ganz hinter steige wo mein Fehler lag. Ich hab aber mittlerweile begriffen, dass die Zugriffskontrolle im Kalendermodul selbst nur für die FE Benutzer zuständig ist. Ich verspreche aber für die Zukunft das Forum nach Möglichkeit nicht mit solchen Anfängerproblemen zu belasten. Vielen Dank!!!

#330 deXx schrieb am 04.10.2007 22:25

... ich bins nochmal ;-) ...

 

hat denn wirklich niemand eine Lösung für dieses Problem? Hat es vielleicht bei wem auf eine andere Art und Weise geklappt?

 

Dieses Tutorial hier war wirklich super hilfreich beim anlegen des Kalenders, was den Minikalender auf der rechten/linken Seite betrifft, bezieht es sich die Beschreibung ja leider auf die Version 0.12.0.

 

Über Tipps wäre ich echt dankbar!!!

 

 

Liebe Grüße

deXx

#331 RoGer schrieb am 05.10.2007 13:38

Das TS steht auf der Seite:

www.sk-typo3.de/Teaser_von_der_linken_Seite.253.0.html

Hab ich genauso eingebaut - und es funktioniert.

einen Kommentar schreiben
Typo3