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
#241 max schrieb am 01.07.2007 22:01

Hi,

 

ich finde CalendarBase super.

Wenn mir nun jemand sagen kann, ob und wie ich eine Ansicht hinbekomme, die mehrere Monate in einer Übersicht anzeigen kann.

Ich habe mir das so wie in diesem Bild vorgestellt:

<http://www.dfc-achental.de/bilder/Kalender.gif>

 

Ist so was mit CalendarBase machbar?

#242 steffen schrieb am 03.07.2007 17:36

sicher smile

schaus Dir mal an:

typo3-calendar.org/1649.0.html

#243 max schrieb am 09.07.2007 18:50

Hi steffen,

 

hmmm, ich habs mir angesehen, probiert und nix gecheckt :-(

großer t3 versteher bin ich ja leider(noch) keiner.

wenn ich die Beispiele im ext-mgr installiere ändert sehe ich nirgens eine veränderung. muss da noch mehr verändert werden oder hab ich nur nen denkfehler?

 

danke.

max

#235 Klaus schrieb am 28.06.2007 09:56

Hallo,

 

Was muss ich tun, damit ich im Kalenderplugin bei den Einstelltabs das in der neuen Doku beschriebene Filter Tab angezeigt bekomme. Alles andere funktioniert bei uns wie es soll.

#244 Philipp schrieb am 12.07.2007 16:33

Bei mir wird der Filter-Tab leider auch nicht angezeigt. Ich habe mehrere Kalender eingefügt. Was mache ich falsch?

#246 steffen schrieb am 12.07.2007 16:40

1. im EM "nested categories" aktivieren

2.neuste (svn-)Version installieren

#233 Benjamin schrieb am 27.06.2007 16:01

Hi, ich hab da nen kleines Problem smile

 

Nachdem ich die Extension installiert habe, löst sich meine FE-Cache löschen Funktion im BE in Luft auf. Sprich nach klick auf den link löst sich das menü auf und eine fehlermeldung erscheint:

 

Fatal error: Cannot re-assign $this in /is/htdocs/wpxxxxx_MQXXXXXQ/typo3/typo3conf/ext/cal/hooks/class.tx_cal_tcemain_processdatamap.php on line 36

 

kann mir zufällig jemand weiterhelfen? smile ich wäre sehr dankbar

 

achja, selbiges gilt auch für Cache in typo3conf/ löschen

 

Gruß

Benjamin

#234 Benjamin schrieb am 27.06.2007 16:25

das problem scheint sich durchs ganze backend zu ziehen... ein versuch einen fe-benutzer zu editieren endete so:

 

Fatal error: Cannot re-assign $this in /is/htdocs/wpxxxxx_MQXXXXXX0Q/typo3/typo3conf/ext/cal/hooks/class.tx_cal_tceforms_getmainfields.php on line 35

 

deinstallieren von cal behebt das problem übrigens wieder... aber das ist ja nicht sinn der sache zwinker

#236 steffen schrieb am 28.06.2007 15:22

ich denke Dein Problem liegt bei einer fehlerhaften php-Version. Im Fall von 5.2.x solltest Du 5.2.3 nutzen.

#237 Benjamin schrieb am 28.06.2007 20:16

und genau diese Version benutzt mein Hosting Anbieter, also 5.2.3.

zufällig noch ne andere Idee woran es liegen könnte? smile

#238 steffen schrieb am 29.06.2007 10:27

ja.

 

öffne mal die Datei class.tx_cal_tceforms_getmainfields.php und ändere die Funktion wie folgt:

 

function getMainFields_preProcess($table,&$row,$theObject)

 

Es stimmt, seit php 5.2.3 ist die Nutzung von $this im anderen Zusammenhang nicht mehr erlaubt.

#239 Benjamin schrieb am 30.06.2007 18:59

Danke smile

 

habe entsprechende Stelle editiert und noch 2-3 andere this gegen theObject ausgetauscht. Das BE scheint jetzt wieder stabil. Jedenfalls weiß ich ja jetzt wie ich den error weg bekomme. Hoffe nur, dass der Kalender jetzt auch noch funktioniert zwinker werde mich jetzt damit versuchen Mr. Green

 

nochmals vielen dank

#240 steffen schrieb am 01.07.2007 10:48

in der aktuellen svn-Version ist das auch behoben zwinker

#232 Alex schrieb am 27.06.2007 11:31

Hi,

 

ich kenne die Extension noch nicht und konnte nicht alle Infos zu Funktionalitäten finden. Mich würden zwei Dinge interessieren:

 

Kann man für die Funktion "Ereignis beobachten" eine Standard-E-Mail-Adresse "blind" hinterlegen, dass z.B. ein Admin automatisch über neue oder geänderte Events informiert wird?

 

Kann für das FE-Editing ein Workflow eingerichtet werden, dass z.B. User mit Kalenderberechtigung nur im Entwurfs-Workspace Termine anlegen können, und diese erst vom Admin für den Live-Workspace freigegeben werden müssen?

 

Danke für eure Antworten!

#578 Mike schrieb am 10.02.2010 13:33

Kann man das nun?

Wäre toll!

#222 Nukular schrieb am 18.06.2007 08:59

Ich hab es mittlerweile erfolgreich geschafft einen Kalender "aufzusetzen".

 

Mein einziges Problem ist nur das FE-Edit.

 

Ich hab es aktiviert und sehe auch die zusätzlichen Links, wenn ich aber etwas hinzufügen möchten, sei es nun ein Event oder gar ein neuer Kalender, lande ich Kommentarlos in der Monatsansicht.

 

Woran kann das bitte liegen?

#225 Nukular schrieb am 18.06.2007 13:21

Hab jetzt festgestellt, dass der gesamte Administrationsbereich nicht funkioniert. Selbiger wird zwar aufgerufen, wenn ich dort aber einen Link anklicke wird die Seite nur neu geladen ... mehr nicht.

#226 steffen schrieb am 18.06.2007 13:29

Der komplette Bereich des FE-Edit/create wurde umgestellt (aktuelle svn)

Ich geh davon aus, das das in Kürze behoben wird, ansonsten musst Du so lange auf die TER-Version ausweichen.

#245 impact schrieb am 12.07.2007 16:39

Hallo Steffen

"Der komplette Bereich des FE-Edit/create wurde umgestellt (aktuelle svn)

Ich geh davon aus, das das in Kürze behoben wird"

 

Ist dies inzwischen behoben? bzw. wann ca. ist damit zu rechnen? zwinker

#227 Nukular schrieb am 18.06.2007 13:34

Habs Problem gerade gelöst mit Hilfe von diesem Tip:

 

Daniel Dimitrov schrieb am 24.04.2007 15:02

 

Petra probiere mal bei dem Plug-in Konfiguration bei Erlaubten Ansichten die Objekte Ereignis editieren, erstellen und löschen auszuwählen.

 

Mir hat das geholfen.

#221 Pieper schrieb am 18.06.2007 01:20

Hallo. Habe gerade die aktuellste Version des KAlenders installiert, nur die Ansicht ist für den Ar*** zwinker

 

Der zeigt mir nur die jeweilige schrift des KAlenders an, aber nicht wirklich den Kalender an sich, also die Tabelle...

 

Es ist schwer zu erklären, aber schaut mal selber. Habe hier mal einen Screenshot: www.schnaps-regal.de/kalender.gif

 

Kann mir einer sagen woran das liegen könnte?

 

Bis dann

Pieper

#223 steffen schrieb am 18.06.2007 13:04

ich würde sagen, Du hast vergessen, die Styles im roottemplate einzubinden zwinker

#229 Pieper schrieb am 18.06.2007 16:31

Hmmm, und wo bekomme ich die her?

#230 steffen schrieb am 18.06.2007 16:34

sind dabei. Schau mal oben unter "Anzeige" auf das Bild

#231 Pieper schrieb am 18.06.2007 16:36

Jo alles gefunden...

 

Ich danke dir!

#220 Reinhold schrieb am 17.06.2007 01:40

Hallo,

habe die ext. wie im Tutorial eingebunden, doch leider werden bei mir keine Termine angezeigt. Habe ich da etwas übersehen?

 

Der Kalender gefällt mir sehr gut und ich würde ihn gerne verwenden, für jede Antwort bin ich dankbar.

 

Reinhold

#224 steffen schrieb am 18.06.2007 13:06

welche Version nutzt Du ?

Hast Du auch im CE die Datenherkunft angegeben ?

#218 Joachim schrieb am 13.06.2007 11:01

Hallo alle fleißigen Cal-Einsetzer!

Ich scheitere beim Kalender leider bei den Kategorien ... bestimmt bin ich aber nur blind - meine Kategorien werden alle mit dem gleichen Bullet angezeigt; wie kann ich die Legende anpassen?

Herzlichen Dank für alle Tips!

Joachim

#219 Joachim schrieb am 13.06.2007 12:54

Ist ja klar ... wenn man die Anleitung nicht richtig liest ... funktioniert wie ne eins!

#205 Gernot schrieb am 08.06.2007 13:08

Hallo!

 

Bitte um Hilfe Frown

Irgendwie bekomme ich die Extension nicht zum Laufen. Sobald ich einen Kalender anlegen möchte, erhalte ich folgende Fehlermeldung: TYPO3 Fatal Error: Extension key "static_info_tables" was NOT loaded! (t3lib_extMgm::extPath) !

 

Ich hab folgende Extension nach etwas googlen nach installiert: overlib, Table Library . Aber das hat mir auch net weiter geholfen!

 

Besten Dank schon mal im Voraus!

 

Gruss Gernot

#206 hullebuh schrieb am 11.06.2007 07:51

Du mußt Dir von typo3.org noch static_info_tables holen.

 

Gruß

Tobi

#210 Gernot schrieb am 11.06.2007 22:11

Hallo Tobi,

 

danke vielmals für deinen Tipp, es funktioniert Razz Surprised

 

LG Gernot

#203 nils schrieb am 04.06.2007 23:05

Hallo Steffen,

ich hab ein Problem mit dem MonthWrapper: bei mir wird er nur einmal um das allererste Event gewrappt. Auch wenn bei den darunter folgenden Events schon ein neuer Monat beginnt, wird er dort nicht angezeigt. Das es irgendwie funktionieren muß zeigt dein Beispiel auf dieser Seite ja wunderbar ;-)

 

Besten Danke schonmal!

#209 steffen schrieb am 11.06.2007 20:50

da gabs einen Bug, den ich im aktuellen svn gefixt hab, versuch es mal damit zwinker

einen Kommentar schreiben
Typo3