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
#393 Alex (ICF) schrieb am 02.01.2008 19:02

Ich hab ein Problem:

Beim Thema "Installation und Einrichtung" steht man solle einen "Neuen Datensatz anlegen" soll. Problem ist nur, dass dort nichts von Calender steht (siehe www.icf-berlin.de/static/webdesigner2/images/uploaded_by_alex/list.jpg ).

Ich verwende Typo3 4.1.5 und Calender Base 0.16.0 (siehe www.icf-berlin.de/static/webdesigner2/images/uploaded_by_alex/extention.jpg ).

 

Hat wer irgendwelche Ideen?

#390 Andreas schrieb am 31.12.2007 15:26

Hallo zusammen,

 

ich verwende zur Zeit Typo 4.0.4, mit Cal Base 0.15.4.

 

Bisher habe ich alle Events von Hand eingetragen, möchte jetzt jedoch auf einen .ics Import setzen, da ich die Events auf meinem Mac in iCal verwalte. Nach längerem Suchen habe ich nun einen WebDAV Server gefunden, welcher die ICS Datei verwaltet.

 

Wenn ich jedoch im Calendar Datensatz den Typen auf External Calendar setze und die URL angebe werden immer noch die angelegten Event Datensätze verwendet. Was mache ich falsch? Kann Cal-Base nur lokale ics Dateien verarbeiten? In welcher Form müssten Externe Kalender vorliegen? Ich kann aus iCal nicht direkt auf meinen Webserver publizieren, da dieser WebDAV nicht unterstützt (Die ICS Datei ist dann immer 0 Byte lang, selbst bei Upload via FTP).

 

Leider habe ich nirgends Beispiele zur Konfiguration mit iCal gefunden.

 

Gruss

 

Andreas.

#389 Mirko schrieb am 28.12.2007 16:09

Hi,

 

ich habe das Problem, dass in meinem List-View immer max. 10 Einträge angezeigt werden.

Trage ich im Plugin bei "Max Events" weniger als 10 ein, dann wird auch nur genau diese Anzahl an Elementen angezeigt. Trage ich aber eine Zahl größer als 10 ein, werden immer max. 10 Events in der Liste angeziegt.

Kann mir bitte einer den Grund hierzu nennen. Ich möchte einfach alle Events der eingestellten Kategorie sehen.

 

Danke für die Hilfe!

#391 steffen schrieb am 31.12.2007 18:00

Du musst den Pagebrowser ausstellen

#384 Dieter Flügel schrieb am 11.12.2007 18:44

Hallo,

diese Seite hat mir sehr geholfen, (wie immer) aber ich habe noch folgende ungeklärte Probleme:

1. Ich habe versucht die Datumseingabe mit erotea_date2cal) zu vereinfachen, auch rlmp_dateselectlib eingebunden. Danach verschwanden beim Klick auf den Button .... die Zeitfelder.

2. Meine Benutzer sind (darf man eigentlich sagen) leicht zu verwirren Big Grins Sie können (ich habs geschafft) ihre Events sekber eintragen und verwalten. Nun verbringe ich viel Zeit damit versteckte Termine wieder sichtbar zu machen. Kann der Benutzer das selber? Was muß ich wie einstellen? Oder kann das Feld Verstecken nicht ganz ausgeblendet werden und auf false gesetzt werden?

 

Vielen Dank

#385 steffen schrieb am 13.12.2007 11:24

zu 1) beides ist veraltet, nimm date2cal

zu 2) redest Du von BE oder FE ? hidden kann man per pageTS auf false setzen

#405 Andreas schrieb am 21.01.2008 09:49

Hallo zusammen,

 

leider habe ich es noch immer nicht geschafft, das Calendar Base (nun updated auf die neuste Version) ein ics File welches von iCalendar auf einen WebDAV Server geladen wird dynamisch in Calendar Base zu integrieren. Falls jemand sowas geschafft hat wäre ich um ein kleines "How To" froh.

 

Nun habe ich auch das Problem mit den Zeitzonen, wenn ich das über den WebDAV Server runtergeladene ics File in Calendar importiere. Ich kann das Problem umgehen indem ich das ics File editiere und alle Zeitzonen Strings von Europe/Zurich auf GMT setze.

In meinem Typo3 Server ist die serverTimeZone auf "1" gesetzt, ich denke das ist korrekt.

Zudem berücksichtigt Calendar Base bei importierten ics Files mit wiederkehrenden Events, deren ausnahmen nicht (sprich wir haben 1x die Woche Training, ausser in den Ferien, diese habe ich manuell entfernt. Trotzdem zeigt Calendar Base diese in der Jahresansicht an).

 

Vielleicht werde ich dies als Bug erfassen, oder mache ich etwas falsch?

 

Gruss

 

Andreas.

#383 Daniz schrieb am 11.12.2007 11:26

Hallo!

 

Wie verhält sich der Kalender denn in Verbindung mit der Indexed Search Engine? Es werden ja einige GET-Parameter übermittelt, wird da nicht die index_rel aufgeblasen?

 

Gruß, Daniz

#382 webby schrieb am 04.12.2007 16:22

hello!

 

habe leider ein problem bei den listen-ansichten! der crop befehl schneidet ja den description text ab und dadurch fehlt zb der ende tag -> /p! gibt es einen trick dafür um den html code wieder valid zu bekommen? besten dank!

 

so long

#386 dieko schrieb am 14.12.2007 11:04

Bzgl. Validität habe ich mich so aus der Affaire gezogen, dass ich in auskommentiert habe, die ist ja im teaser auch nicht nötig. Das ganze hängt mit irgendeinem Widerspruch zwischen xml und html-Validierung zusammen und soll kein echter Fehler sein, aber ärgerlich ist es doch. Schau auch mal hier:

www.wer-weiss-was.de/theme193/article1659235.html

#387 dieko schrieb am 14.12.2007 11:06

Pardon, Wort vergessen: ".. in monthteaser.tmpl ... auskommentiert..."

#381 BeamMeUpScotti schrieb am 03.12.2007 11:21

cal 15.5

 

Hat jemand eine Idee, warum mein cal beim ICS-Import eines Kalendars zu allen Terminen eine Stunde dazuaddiert? Zeitzone? Wo kann man sowas einstellen? Erstaunlicherweise stehen in der Listenansicht des Kalendars die Termine mit der richtigen Zeit?!?

 

Bei von Hand eingegeben Daten stimmt die Zeit auch.

 

MIT FREUNDLICHEN GRÜßEN

 

BeamMeUpScottie

#380 Vera schrieb am 30.11.2007 16:48

Huhu,

ich hoffe ihr könnt mir helfen.

ich kämpfe mich gerade durch calendar base 0.15.5

innerhalb der monatsansicht steht vor dem eingetragenen Event immer die Startzeit des Events. Ich finde einfach nicht die Option, wo ich des austellen kann.

Hab mal n Pic hochgeladen, was ich genau meine: img148.imageshack.us/my.php

 

Ich hoffe, ihr könnt mir kurzfristig helfen smile

 

Grüsse aus Kölle

Vera

#445 sonop schrieb am 15.03.2008 20:51

Die Ansichten werden in der Datei „phpicalendar_event.tmpl“ konfiguriert. Kopiere Dir die Datei von /typo3conf/ext/cal/template/ phpicalendar_event.tmpl z.B. nach /fileadmin/ext-templates/ phpicalendar_event.tmpl.

Die Monatsansicht liegt zwischen folgenden Kommentaren:

Hier löschst du den Marker ###STARTTIME###.

Zum Schluß noch unter Constants Pfad des geänderten Templates angeben: plugin.tx_cal_controller.view.event.phpicalendarEventTemplate = fileadmin/ext-templates/phpicalendar_event.tmpl

#378 Bernhard schrieb am 25.11.2007 18:17

Hallo was kann ich machen wenn zwar angeboten wir ein enues Event anzulegen aber beim Klick darauf dann nur nach längerer wartezeit der hauptkalender angezeigt wird

#375 Ralf schrieb am 20.11.2007 19:00

Bin immer noch bei cal-0_16_0-r1687.

 

Habe mich die ganze Zeit gewundert, daß ihr alle unter der Monatsansicht ###CALENDAR_NAV### (Sidebar unter Monat) angezeigt bekommt.

 

Ich mußte dafür eigenartiger Weise im Setup einfügen:

plugin.tx_cal_controller.view.month.navigati 0

 

Wenn ich den auf 1 stelle (oder gar nichts ins Setup schreibe), erscheint keine Navigation unter der Monatsansicht. Ist doch wohl ein Bug, oder?

 

Andere Frage:

Ich möchte statt der Navigation -unter- dem Monat lieber eine Sidebar wie bei Day/Week.

Wie mach ich das?

#376 Ralf schrieb am 20.11.2007 19:03

wurde wohl falsch dargestellt im Kommentar:

 

Bei mir im Setup steht also:

plugin.tx_cal_controller.view.month.navigati 0

 

Dann wird navigaton unter Monat angezeigt.

Ich möchte Sidebar -neben- Monat, statt Navi -unter- Monat.

#377 Ralf schrieb am 20.11.2007 19:05

wieso wird das hier nicht richtig angezeigt???

 

plugin.tx_cal_controller.view.month.navigation=0

einen Kommentar schreiben
Typo3