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
#303 webby schrieb am 13.09.2007 15:00

mein beitrag kann schon ignoriert werden! die lösung war hier zu finden: www.typo3-calendar.org/1657.0.html

smile einfach super der kalender!!

#302 webby schrieb am 13.09.2007 14:22

hello!

 

wie schaffe ich es, dass die uhrzeit im 24h format angegeben wird? sprich 15:00 Uhr? besten dank!

 

so long

#392 Michu schrieb am 01.01.2008 11:54

du musst das Template mit dem Constant editor bearbeiten.

Dort findest du unter "Calendar Base General" die Einstellung "General time format"

#301 velvet schrieb am 11.09.2007 09:36

Hallo,

 

habe jetzt folgende Externe-Verlinkung eingefügt um die gewünschte Kategorie anzuzeigen: www.meineseite.de/111.0.html

 

Wie muß ich die _DEFAULT_PI_VARS einfügen. Gibts ein TS Beispiel?

 

Danke und viele Grüße

Nicole

#300 Martin schrieb am 10.09.2007 12:11

Im Forum von Typo3.net habe ich den Versuch eines HowTo zur Rechtevergabe gestartet. Jeder Kommentar ist willkomen. Vielleicht wird ja mal ein richtiges Tutorial draus, das wir dann auch unter www.typo3-calendar.org einstellen koennen.

 

www.typo3.net/forum/list/list_post//67801/

#299 David schrieb am 06.09.2007 02:29

Hallo,

 

ich lasse auf meiner Seite die Termine standardmäßig als Liste anzeigen.

 

(1) Ist es möglich, die Listenansicht so zu ändern, dass ich in ihr auch die Monate wechseln kann?

Ich habe es versucht, indem ich im Template dazu gefügt habe:

 

 

aber das hat nicht funktioniert.

 

Mein TS ist:

Typoscript

   1: lib.list_big= COA

2: lib.list_big {

3: wrap = <div id="inhalt_main"><h3>Die nächsten 3 Termine</h3>|</div>

4:

5: 5 < plugin.tx_cal_controller

6: 5 {

7:

8: pidList = 49

9: view {

10: # defaultView = list

11: allowedViews = list

12: list.listTemplate = fileadmin/_temp_/cal/list_big.tmpl

13: list.endtime = +2 months

14: # eventLinkTarget = day

15: # day.dayViewPid = 26

16: weekStartDay = Monday

17: # list.maxEvents = 3

18: list.listViewPid = 26

19: # event.eventViewPid = 26

20: }

21:

22: }

23: }

24:

(kopiert aus dem Tut von Steffen Kamper)

 

(2) Zu den Wechselmöglichkeiten zu den direkt anliegenden Monaten hätte ich gerne auch rechts direkte Links zu den Terminlisten der einzelnen Monate. Also quasi:

Termine im

- Mai 2007

- Juni 2007

- Juli 2007

- August 2007

- ...

Geht das?

 

Lg David

#298 Marco schrieb am 30.08.2007 16:03

Hallo zusammen,

 

ich habe (wie in diesem demokalender) auf der linken spalte einen minikalender für den monat als eigenständiges element eingebaut. dazu habe ich die jahresansicht die ich nicht benötige ausgeschlachtet. die tage (mit events) sollen nun auf eine listenansicht in der rechten spalte verlinkt sein.

leider komme ich mit der verlinkung nicht weiter: ich weiß nicht was ich tun muss um die beiden kalenderelement (linke spalte: minikalender | rechte spalte: listenansicht) zu verknüpfen.

momentan ändert beim klick auf einen tag im minikalender nur dessen ansicht - in der listenansicht (rechte spalte) passiert nichts.

 

danke und gruss

marco

#297 xeon schrieb am 29.08.2007 16:50

Hallo,

 

ich hab eine Frage: Wie kann ich die Detailseiten aufrufen, welche ich in der Listenansicht aufrufen kann (z.B oben links "Fussball-Training"). Welche PIDs muss ich im TS verwenden. welches Template muss ich in TS einbinden?

 

danke

#295 velvet schrieb am 28.08.2007 12:44

Hallo an alle!

 

Ich möchte gerne auf meiner Seite die Events nach Kategorien sortiert auf den jeweils eigenen Seiten anzeigen. Ist das irgendwie möglich und wenn ja wie? Habe im TS noch keine passende Einstellung gefunden.

 

z.B. alle Anmeldetermine auf der Seite Anmeldetermine etc.

 

Viele Grüße

#296 steffen schrieb am 28.08.2007 12:48

Die Kategorien lassen sich über die URL einschränken. Man kann das in der Listenansicht sehen, wenn man auf einen Kategorielink klickt.

Über _DEFAULT_PI_VARS kann man bei einer Seite eine Kategorie vorauswählen

#291 christiana schrieb am 27.08.2007 17:38

Hallo,

 

ich habe das Problem, dass FE Einträge, speziell das Description Feld, nicht korrekt gespeichert werden. Wenn ich Umlaute in den Feldern Description und Title verwende, so werden diese im Description Feld falsch codiert gespeichert. Im Title Feld jedoch korrekt. Das ist bereits nach dem Speichern des EVents in der DB ersichtlich. Demnach werden dann auch Umlaut im Text des Description Feldes falsch ausgegeben. Hat jemand ein ähnliches Problem und bereits eine Lösung gefunden?

#292 Martin schrieb am 27.08.2007 22:30

Geht mir gerade auch so; meine Datenbank sagt mir (phpmyadmin, Startseite), dass mein Zeichensatz auf iso-8859-1 steht, mein Typo3 aber UTF8 verarbeitet (in der localconf.php steht bei mir $TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8'zwinker.

 

Da ich bis jetzt nur diese eine T3-Installation auf UTF8 habe, moechte ich nicht die ganze Datenbank auf UTF8 stellen. Wer weiss, wie dann meine ganzen anderen Seiten aussehen...

 

Dadurch entsteht der witzige, aber wenig brauchbare Effekt, dass nach jeder Bearbeitung ueber das FE die Sonderzeichen länger werden.

 

Mal sehen, ob ich es hinbekomme. Wie ist Deine Datenbank eingestellt?

#293 steffen schrieb am 27.08.2007 23:48

macht dazu bitte einen Bugeintrag unter

svn.webempoweredchurch.org/calendar/newticket

#294 Martin schrieb am 28.08.2007 10:37

ok. done.

Wird #'ne tolle EXT. Freue mich schon drauf, wenn sie fertig ist smile

#289 tisp schrieb am 22.08.2007 10:20

Ich versuche jetzt schon seit zwei Tagen das FE-Editing beim Kalender zum Laufen zu bekommen. Ich habe die Version 0.15.4 installiert. Läuft, bis auf das FE-Edit, auch alles wunderbar. Ich bin kein Typo3-Neuling, habe viele Vorschläge aus diesem Tutorial, den Kommentaren und aus anderen Quellen versucht, aber Links zum Anlegen und Ändern von Terminen tauchen bei mir nicht auf.

 

Ich habe eine Gruppe angelegt (ID=1), einen Benutzer der dieser Gruppe zugehört und angemeldet ist. Ich habe ein Extension Template auf der Seite angelegte, auf der der Kalender angezeigt wird. Habe folgendes TypoScript dort in CONSTANTS eingetragen:

 

plugin.tx_cal_controller {

rights {

edit = 1

create.event.enableAllFields.group = 1

}

}

 

Folgender Code zeigt die Administrator Links an:

 

plugin.tx_cal_controller {

rights {

edit = 1

admin.group = 1

}

}

 

Aber ich möchte eigentlich nicht allen Benutzern alles erlauben.

 

In der Kalenderkonfiguration sind die Ansichten für Anlegen, Bearbeiten und Löschen von Events ausgewählt.

 

Was habe ich nicht bedacht?

 

Tisp

#290 steffen schrieb am 22.08.2007 11:00

das sollte Dir helfen:

www.typo3.net/index.php

einen Kommentar schreiben
Typo3