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
#499 FEbert schrieb am 12.08.2008 19:25

ich kan den Kalender garnicht erst instalieren, wenn ich die Ext. auswähle, dann die rot hinterlegte ext. calender_basic auswähle, kommt nichts, manueller upload geht auch nicht.

Wo liegt da denn das Problem?

danke

#498 jojo schrieb am 02.08.2008 10:32

Hallo,

 

ich möchte gern die Addressdaten die von tt_address verwaltet werden in cal (location und organizer) nutzen, ich habe auch alles installiert und konfiguriert, ich kann die Datensätze auch auswählen.

 

Nun möchte ich gern zusätzlich zum Name des Veranstalters die Telefonnummer anzeigen bzw. zusätzlich zum Veranstaltungsort noch die Adresse den Ort und die PLZ.

 

habe schon eine Menge experimentiert, bekomme es aber nicht hin.

 

Also wie kann ich die Felder PHONE, ZIP, CITY und ADRESS unter der eventansicht von cal zur Anzeige bringe?

ich denke ich habe die stelle (in der class.tx_cal_location_address.php) gefunden an de die Umsetzung tt_address > cal abläuft. Allerdings sieht es so aus das alle Variablen übergeben werden, woran könnte es noch liegen.

 

Danke MfG jojo

 

Danke MfG jojo

#497 Philipp schrieb am 29.07.2008 15:04

Ich hab mich jetzt erneut einige Tage mit meinem Problem beschäftigt, aber immer noch keine Lösung gefunden.

 

Vieleicht, kann mir doch noch jemand mit meinen 2 kleinen Problemen helfen.

 

Ich wäre euch sehr Dankbar.

 

Hier noch mal das Problem:

 

 

ich bin Neuling in TYPO...habe aber mich doch an CalanderBase gewagt und auch den Kalender zum laufen gebracht.

 

 

 

Ich möchte auf meiner Seite (www.feuerwehr-haldorf.de) in der rechten Spalte eine Listen-Ansicht mit den nächsten 3 Terminen einbinden.

 

 

 

Weiterhin möchte ich Frontend Benutzern ermöglichen Termine einzutrage.

 

 

 

Bis her konnte ich mit dem Tutoriel mir selbst weiterhelfen, aber jetzt weiß ich nicht mehr weiter.

 

 

 

Wo muss ich die TypoScripte eintragen und wie bekomme ich die Listen-Ansicht in meine News-Spalte.

 

 

 

Bitter dran denken - ich bin blutiger ANFÄNGER!!

#495 Thomas schrieb am 16.07.2008 21:26

Hallo,

 

ich möchte einen Kalender anlegen, bei dem verschiedene Termine unterschiedlichen FE-Usern aber auch überschneidend zu geordnet werden können:

z.B. Schema:

Event1: FE-U1

Event2: FE-U1, FE-U2

Event3: FE-U4, FE-U2

 

Muss ich dafür mehrere Kalender anlegen oder kann ich das erreichen, in dem ich verschiedene Kategorien erstelle, die jeweils mit den genannten FE-U-Zuordnung übereinstimmt?

 

Vielen Dank für jeden Tipp!

Thomas

#496 Philipp schrieb am 23.07.2008 19:22

Hallo,

 

ich bin Neuling in TYPO...habe aber mich doch an CalanderBase gewagt und auch den Kalender zum laufen gebracht.

 

Ich möchte auf meiner Seite (www.feuerwehr-haldorf.de) in der rechten Spalte eine Listen-Ansicht mit den nächsten 3 Terminen einbinden.

 

Weiterhin möchte ich Frontend Benutzern ermöglichen Termine einzutrage.

 

Bis her konnte ich mit dem Tutoriel mir selbst weiterhelfen, aber jetzt weiß ich nicht mehr weiter.

 

Wo muss ich die TypoScripte eintragen und wie bekomme ich die Listen-Ansicht in meine News-Spalte.

 

Bitter dran denken - ich bin blutiger ANFÄNGER!!

 

Ich wäre EUch wirklich DANNKBAR für EURE HILFE!!!

#494 enzo schrieb am 14.07.2008 19:19

hallo

 

ich habe nochmals eine anfängerfrage. diesen typo3script code für den minical

 

lib.minical >

lib.minical < plugin.tx_cal_controller

lib.minical {

pages = PID_DES_SYSFOLDERS

view {

defaultView = month ............ etc.

 

wo muss ich den eintragen? kann mir auch jemand sagen wo ich den marker für den minical setzen muss? im html dokument oder wo?

 

bin dankbar für jede info die mich weiterbringt

 

grüsse

 

enzo

#493 André schrieb am 10.07.2008 10:29

Ich habe ein Problem mit dem Anmelden im Kalender. In der Tagesansicht habe ich in den "Anderen Ansichten" den Punkt "Zeige Login" aktiviert. Bei dieser Ansicht wird dann auch tatsächlich eine normale Login Box angezeigt.

 

Weiterhin habe ich in einem Systemordner einen Webseiten Benutzer angelegt und diesem eine Benutzergruppe (Kalenderadmin) zugewiesen. Obwohl Passwort und Benutzername stimmen, kann ich mich nicht in der Loginbox des Kalenders anmelden.

Seltsam ist aber auch folgendes: Neben dem Kalender habe ich auch die mm_forum extension laufen und habe ich mittels "Erweiterung: Besseres Anmeldeformular" ebenfalls ein Login realisiert. Dort klappt auch meine angegebene Benutzer/Passwort Kombination. Beim wechseln auf meine Kalenderseite mit der Login Box merkt die Extension dann auch das ich eingeloggt bin. Leider sehe ich keinerlei Möglichkeiiten, im FE jetzt meine Termine zu verwalten. Ich habe auf der Seite ebenfalls den "Admin" View hinzugefügt, weil ich dachte, dass ich genau diesen Punkt für die Verwaltung brauche. Was mache ich falsch?

 

Danke schon im vorraus für die Hilfe smile

 

André

#490 Ttim schrieb am 09.07.2008 10:42

1.

plugin.tx_cal_controller.rights {

2.

edit.event {

3.

group = 10

4.

allowedToEditEvents.group = 10

5.

fields {

6.

title.group = 10

7.

category.group = 10

8.

calendar_id.public = 0

9.

# make sure the event gets linked to our public calendar

10.

calendar_id.default = 1

11.

startdate.group =

12.

starttime.group =

13.

enddate.group =

14.

endtime.group =

15.

allday.group = 10

16.

description.group =

17.

location.group = 10

18.

cal_organizer.public = 0

19.

organizer.public = 0

20.

cal_location.public = 0

21.

}

22.

}

 

 

Was ist an dem Code falsch?

Kann mir da jemand weiterhelfen?

Ich möchte dieser Gruppe die Rechte zum editieren aller Events geben.

#488 enzo schrieb am 08.07.2008 20:09

ich habe vielleicht eine dumme frage, aber ich bin leider noch weit weg ein typo3 spezialist zu sein.

 

habe calandar base installiert und diese läuft auch soweit ganz gut, nun möchte ich eine Mini view auf der linken seite machen. ich habe die instruktionen auf dieser seite gelesen, mir ist aber nicht klar wo ich den typoscript ....... lib.minical = COA

lib.minical {wrap =

Die nächsten 3 Termine

|..... reinschreiben muss. schreib ich diesen in das basistemplate der seite wo ich den kalender plazieren will, oder wohin sonst?

 

gibt es eine einfache lösung?

 

danke!

#487 enzo schrieb am 03.07.2008 21:38

hallo

toll eine deutsche anleitung! ich bin dabei ... anzulegen. bis zum abschnitt ... einen Datensatz vom Typ Calendar an ... ist mir klar nachher folgt .... 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 .... die frage ist nur wo mache ich das, können sie mir sagen wo dies in welches dokument einzutragen ist?

 

grüsse & dank

#489 Ttim schrieb am 09.07.2008 10:41

gehe in den gleichen Ordner, in welchem du auch den Kalender angelegt hast. Dort machst du einen neuen Datensatz (record) des Types Veranstalter.

#492 enzo schrieb am 09.07.2008 16:34

gracias Ttim, das ist doch ein positive rückmeldung für den start in einen neunen Tag!

#486 Mike Zimmer schrieb am 03.07.2008 17:41

Hallo,

 

Gibt es eine Möglichkeit den Minikalender so abzuändern das:

 

1. Wenn ich mit der Maus über einen Tag gehe an welchem ein Event ist eine kurzform des Titels angezeigt wird (Layer oder als title)

 

2. Wenn ich den Tag dann klick ich direkt in dem Termin lande, bzw. Wenn es mehrere Termine an dem Tag gibt ich in einer Listenansicht lande mit den Terminen des entsprechenden Tages

 

ein weiteres Problem wie bekomm ich in dem Minikalender den Link des Monatsnamens weg. Denn ein klick auf diesen ist ja witzlos da ich immer auf der gleichen Seite lande. Alternativ könnte ich auch damit leben wenn es Termine in dem Monat gibt der Link wiederum in einer Listenansicht landet.

 

Danke schonmal im voraus.

einen Kommentar schreiben
Typo3