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
#450 Fips schrieb am 30.03.2008 19:30

Ich habe - als absoluter Typo3-Anfänger - den Kalender auf unserer Homepage zum Laufen gebracht, nach 2 Tagen Verzweiflung dank dieses Threads auch das Frontend-Editing installieren können, habe jetzt aber noch 2 ungelöste Probleme.

 

Frontend-Editing: Die Freigabe der Erstellung von neuen Events für eine FEUser-Gruppe ging problemlos, alle Rechte konnte ich nach Belieben vergeben und auch die Anzeige der Feldern genau nach meinen Wünschen einrichten. Aber eben nur im Bereich create. Man würde also meinen, das müsste beim Editieren und Löschen der eingegebenen (eigenen) Termine auch funktionieren. Tut es aber nicht. Auch nicht, wenn ich die Berechtigung auf public ändere. Alle nötigen Ansichten auf der Kalenderseite sind aktiviert und als admin eingeloggt sehe ich auch alle Bearbeitungssymbole und kann bearbeiten und löschen. Nur der FEUser kann seine Termine nicht mehr bearbeiten, obwohl ich die Rechte vergeben habe. Als Versuch (Tipp aus einem anderen Thread) habe ich noch addFeGroupToShared auf 1 gestellt, aber es tut sich immer noch nichts.

 

Und das zweite Problem: Es ist so gedacht, dass örtliche Vereine ihre Termine als eingeloggte FEuser selber eingeben können, allerdings wollen wir natürlich die Kontrolle behalten. Ist es möglich, dass die Termine erst von uns freigegeben werden müssen, bevor sie im Kalender erscheinen? Und wenn nicht, ist es zumindest möglich, dass wir benachrichtigt werden, wenn FEUser etwas ändern? Im ObjectBrowser gibt es die Benachrichtigungsoption nur für die Einstellung public - die hat aber bei uns keine Berechtigung.

 

Ich habe deshalb versucht, RSS zu installieren, bin aber kläglich gescheitert. Entweder lässt mich mein Englisch im Stich oder das Manual ist wirklich sehr knapp gefasst. Ich kapiere irgendwie nicht, welche PIDs verlangt werden. Eine ist die Kalenderseite, ok, aber die zweite? Ich habe dafür extra eine im Menü versteckte neue Seite angelegt, aber was mache ich mit der? Muss ich da das Plugin nochmal installieren? Wenn ich nur diese PID in der URL angebe, passiert jedenfalls gar nichts außer eine Fehlermeldung. Außerdem scheint im Constant Editor das Feld mit der URL bei mir gar nicht auf. Ich bin echt zu doof dazu. Cry

 

Und dann noch eine kleine Anregung: Was wir dringend gebraucht hätten, wäre, dass ein Termin gleichzeitig in mehrere Kalender eingetragen wird, also beispielsweise in den öffentlichen Veranstaltungskalender, gleichzeitig aber auch in den Belegungskalender des Gemeindesaales. Jetzt musste ich mir damit behelfen, dass ich diese "Kalender" als Kategorien angelegt habe, musste aber für die beiden Locations je 3 Kategorien anlegen: Location 1 alle, Location 1 fixierte Termine, Location 1 nicht fixierte Termine, und für Location 2 dasselbe in Grün. Das funktioniert jetzt auch wunderbar, nur muss ich dafür auf die eigentlichen Kategorien (Art der Veranstaltung) verzichten. Um das Flexform anzupassen, hab ich leider noch zu wenig Kenntnisse, aber wäre das sehr aufwändig, um es vielleicht mal für ein Update vorzumerken?

 

Uns fehlt auch noch ein Feld für Angaben, die nicht im Kalender erscheinen sollen mit internen Informationen (Telefonnummern, Adressen von privaten Veranstaltern). Wäre es möglich, das Flexform selber anzupassen?

 

Ich weiß, es sind viele Fragen, aber ich bin schon so weit gekommen, nur weil ich mich hineingekniet und nicht aufgegeben habe, auch wenn ich Bahnhof verstanden habe und immerhin haben wir (2 absolute Typo3-Anfänger) eine komplette Gemeindehomepage hingekriegt. Jeztt will ich es auch durchziehen, bis alles passt. zwinker

 

lg

Fips

#448 deXx schrieb am 28.03.2008 16:47

Hallo Zusammen,

 

erstmal ein dickes Lob an dieses Tutorial!!! Habe Calendar Base super installieren können. Nun geht es ans Feintuning ... ich stehe nämlich vor folgendem Problem:

In der Jahresansicht werden anstatt den Eventtiteln "bullets" angezeigt, auf die man klicken kann (man gelangt dann zur Ereignisansicht). Das finde ich nicht besonders schön und für den User auch eher unpraktisch. Mir ist klar, dass in den einzelnen Spalten nicht genügend Platz für den kompletten Titel ist, allerding wären mind. 5 Zeichen (oder so) schon super.

 

Ansehen könnt ihr es euch unter:

www.kerpen-tourismus.de/cms/index.php

 

Weiß jemand, wie man das in die Jahresansicht einbauen könnte?

 

 

Liebe Grüße

deXx

#449 Tim schrieb am 29.03.2008 10:10

dies könntest du mit einer Änderung am Year-Template realisieren.

#451 deXx schrieb am 31.03.2008 16:42

Vielen Dank für die schnelle Antwort ....

 

Ja, das hatte ich mir auch gedacht, allerding wird im year.tmpl das month_medium.tmpl verknüpft, in diesem Template sorgt der Marker ###EVENT### für die Darstellung der "Bullets + Verlinkung zum Event" im Year-Template.

 

Ich bin aber ziemlich ratlos, wo und wie ich definiere, dass der Titel anstatt den Bullets ausgegeben wird?!

 

Kannst du mir da weiter helfen?

#452 Lamy schrieb am 04.04.2008 14:16

Hey

 

ich finde Deinen Kalender echt schön gemacht, hoffe das ich es auch so hinbekomme - das Design ist genau so wie ich es mir für meinen kalender vorstelle.

 

Gruß

Lamy

#454 deXx schrieb am 07.04.2008 17:00

Vielen Dank Lamy, das hört man gerne ;-)

 

Man kann den Kalender ganz einfach und nach seinen Vorstellungen anpassen einmal über die Template-Dateien und einmal über CSS. Falls du Tipps brauchst, einfach Fragen .... vielleicht kann ich dir helfen ;-)

#455 Lamy schrieb am 08.04.2008 09:26

Wie kann ich denn am besten Kontakt zu Dir aufnehmen? smile

 

 

Grüße aus Koblenz!

 

Lamy

#460 star7591 schrieb am 14.04.2008 20:29

Dein Kalender ist echt gut gemacht.

Ich finde den Einstieg in die Template, resp. CSS für diese Ext. nicht.

z.B. welche Marker für was sind.

Hast du eine kurze Zsfg, ein paar knackige Hinweise?

Herzichen Dank

#473 deXx schrieb am 25.05.2008 18:52

Ich werde mir die Mühe machen, und eine kleine Fortsetzung zu diesem Tutorial schreiben, was sich schwerpunktmäßig auf Design konzentriert.

 

Ich poste euch dann den Link!

#447 Manni schrieb am 28.03.2008 15:59

Hallo,

 

ich sitze vor folgendem Problem. Ich habe eine Reihe von Terminen die am gleichen Tag stattfinden. Leider werden diese Termine nach der uid sortiert und nicht nach dem title, was ich gerne hätte. Wie kann ich das realisieren?

 

Viele Grüße

#446 Sid schrieb am 20.03.2008 18:24

*umpf* bei mir werden in der eventansicht weder teaser noch description angezeigt. alles andere soweit schon! dabei habe ich an den templates nichts geändert!

 

hab mir nun schon nen wolf gesucht - auch hier in den kommentaren bis auf glaube seite gelen. aber leider ohne erfolg Eek

 

Ich verwende 0.16.6

wäre für jeden tip, hinweis oder hilfestellung sehr dankbar!

#444 Benjamin schrieb am 09.03.2008 12:31

Hallo,

nach dem Update des Kalenders von einer 0.15er auf eine 0.16er Version werden bei mir im FE keine Einträge mehr angezeigt.

 

Hat jemand anderes auch noch das Problem und eine Lösung dafür gefunden?

 

Viele Grüße

Benjamin

#442 Uli schrieb am 03.03.2008 20:25

Hallo zusammen

 

ich habe eine Frage zur Rubrik "Suche nach Eintrag".

 

Die Suche wird beim mir zwar angezeigt, aber sie spricht den Zeitraum Fr, 02. Januar 1970 - Di, 01. Januar 2030 an.

 

Unterhalb werden alle angelegten Events in diesem Zeitraum angezeigt, das würde wohl zu ewigen Ladezeiten führen.

 

Wo setze das Datum auf den Anfragetag ein?

 

Uli

#440 Tim schrieb am 03.03.2008 07:16

Hallo zusammen

ich kann im Kalender keine Events mehr anlegen Cry

 

Grund: date2cal 7.0.0 scheint nicht zu funktionieren, als ich diesen wieder auf 6. gesetzt habe, ging es wieder!

#437 Werner schrieb am 29.02.2008 15:39

Hallo, der Kalender ist einfach super. Aber ich habe ein Problem und weiss nicht wie es zu lösen ist.

 

Es soll so sein dass ein Fe User der einen Eintrag erstellt, auch nur diesen bearbeiten kann. Bis jetzt bekomme ich nur so hin, dass ein Fe User alle Einträge bearbeiten könnte.

 

Denke dass das Problem betimmt öfter vorkommt und vielleicht weiss einer eine Lösung zu diesem Problem.

Version 0.16.4

 

Gruß

Werner

#436 Markus B. schrieb am 29.02.2008 13:08

Guten Tag!

 

Mein Problem:

 

Ich wollte einzenlnen Usergruppen, wie oben beschrieben, nur Rechte für "Events erstellen" zuteilen.

 

CODE:

plugin.tx_cal_controller {

rights {

edit = 1

create.event.enableAllFields.group = 5

}

}

------------------------------

Ohne Erfolg

 

CAL-VERSION: 0.17.0

Front End User Admin: 1.0.2

 

 

Meine Admin Gruppe funktioniert:

 

plugin.tx_cal_controller {

rights {

edit = 1

admin.group = 4

}

}

 

Würde ich die ID5 zu admin.group = 4,5 zuweisen, hat diese Gruppe auch Adminrechte.

 

 

Bitte um Hilfe

 

mfg.

#458 Tim schrieb am 12.04.2008 07:52

habe genau das selbe Problem.

 

cal: 0.17.1

#435 Thomas schrieb am 29.02.2008 10:20

Hallo,

 

das Wechseln der Sprache funktioniert bei mir reibungslos in der Extension - lediglich die Monats/Tagesnamen werden nur in Englisch angezeigt!? Woran kanns liegen?

 

Danke, Grüße Thomas

#438 Tim schrieb am 03.03.2008 07:10

Du musst in deinem Template die deutsche Sprache definiert haben. Bei mir sieht dies so aus:

page{

config.sys_language_uid = 0

config.language = de

config.locale_all = german

config.locale_all = de_DE

config.locale_all = de_DE@euro

config.locale_all = de_DE.ISO8859-1

 

}

einen Kommentar schreiben
Typo3