Am 25.Oktober 2008 hielt Mario Matzulla im Rahmen der monatlichen Treffen der TYPO3-Usergroup-NRW einen Vortrag zur Extension CAL, begleitet / gefolgt von Anmerkungen von Steffen Kamper
Diese Seite basiert auf den Notizen von Martin Bless. Vielen Dank für die ausführlichen Notizen.
Die Bilder sind dem Vortrag von Mario Matzulla, ursprünglich gehalten auf den Developer Days 2008, entnommen. Die gleichen Bilder und auch die dazugehörige Videos von Jeff hat Mario beim Vortrag präsentiert. Für die Videos ('Preparing a good Hamburger' in four parts) haben wir hier leider nicht genug Platz / Bandbreite.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Letzter Samstag im Monat: Da läutet die Glocke für das regelmäßige Treffen der TYPO3 Usergroup NRW. Diesmal mit einem ganz besonderen Event: Mario Matzulla ist da und lässt sein Baby, die CAL-Extension leben. Das ist nun wirklich Grund genug, endlich einmal den Sprung von Münster nach Düsseldorf zu machen. Und, das Beste kommt nicht nur zum Schluss, sondern steht gerne auch mal am Anfang: Es hat sich gelohnt! Da konnte auch WDR2 nichts dran ändern, der uns Nebel angedroht hatte, der dann noch nicht einmal da war. Sehr schöne Räumlichkeiten in der Marketing-Factory, das macht Spaß. Und gut dass ich da instinktiv noch Marmelade mitgebracht habe: Sehe jetzt erst, dass es dazu ja auch noch einen Aufruf gab.
Thema hatten wir "nur" eins: Die CAL-Extension.
Die Beschäftigung mit Zeitphänomenen ist sicher ein uraltes "Hobby" der Menschheit und auch eng mit astronomischen Gegebenheiten verknüpft. Man denke einmal an die Himmelsscheibe von Nebra:
http://de.wikipedia.org/wiki/Himmelsscheibe_von_Nebra
Vielleicht nicht nur "Hobby", sondern schnell auch eine Notwendigkeit, und so sind auf der Welt viele Kalender entstanden. Die Schwierigkeit der Kalenderrechnung ergibt sich daraus, dass Erdumlaufbahn, Erddrehung und Mondumlauf in eine brauchbare Beziehung gesetzt werden müssen. Und die Zahlen teilen sich nunmal nicht glatt und sind zudem noch nichtmal konstant. Wer sich über die verschiedenen Kalenderrechnungen informieren will, wird hier umfassend "bedient":
http://emr.cs.iit.edu/home/reingold/calendar-book/third-edition/
Martin Bless: Zu dem Werk Calendrical Calculations möchte ich noch sagen, dass alle Algorithmen, die dort verwandt werden, als Programmcode formuliert sind. Für nichtkommerzielle Zwecke schreibt man eine Mail an die Autoren und erhält einen Link zum download. In was für einer Programmiersprache? Die erste Ausgabe des Buches habe ich, da ist es LISP! Inzwischen gibt's aber, glaube ich, mindestens auch eine Javascript-Fassung.
Das ist ein starkes Werk. Besonders gut gefällt mir ja der Kalender, der zum Teil noch in Agypten gilt: Das Jahr hat immer 12 mal 30 Tage, und dann macht man einfach noch 5 oder 6 Feiertage.
Nun zu CAL, DER TYPO3-Kalenderextension. Alles, was ich hier schreibe, entstammt meinen privaten Notizen. Für das, was richtig ist, geht das Lob an die Autoren und Vortragenden. Die Fehler gehören mir und dürfen gerne korrigiert werden. Der Vortrag stand unter dem Motto "Cooking with Mario" und Chefköche sind:
Natürlich sind wir neugierig, und damit auch ja nichts untergeht, gleich hier:
Bei der Ein- und Wertschätzung hilft vielleicht die Info, dass die Entwicklungszeit im Dezember 2008 bereits drei Jahre beträgt.
Ein Dreh- und Angelpunkt ist:
Reingucken!
CAL hat historische Wurzeln in früheren Kalender-Extensions und PHP-Anwendungen, ist nun aber gründlich durchdacht und vom alten Code ist praktisch nichts mehr geblieben. Insbesondere das Fundament ist solide. Architektonisch spielen Model-View-Controller-Überlegungen wohl eine starke Rolle:
Für CAL gibt's hier ein imposantes Schaubild (PDF, SVG):
Was mich besonders begeistert ist, dass die vier CAL-Miraculixe nicht einen proprietären Datensaft nach eigenem Rezept kochen, sondern versuchen, sich möglichst an den iCalendar-Standard zu halten:
Das Regelwerk hierzu findet sich in den "Aufrufen zur Stellungnahme", den RFCs:
"ical", "ics", "icalendar" sind wichtige Stichworte hierzu, die man sich merken sollte. Sie beschreiben Austauschformate von Kalenderdaten, MIME-Type "text/calendar".
"CAL kann das Standardformat exportieren und importieren." Das ist eine Aussage, die man gar nicht hoch genug schäzten kann.
Wenn man CAL verwenden will, benötigt man die Extension
und den den einen und anderen Sysordner. Zuerst legt man immer einen Kalender an und kann hier unterscheiden zwischen privatem und öffentlichem Kalender. Private werden nur von bestimmten FeUsern und -gruppen gesehen. Optionale kann man Kalenderkategorien anlegen. Das eigentliche "Fleisch", also das Datenmaterial für diese "Knochen" sind dann die Events, die immer zu (mindestens?) einem Kalender gehören.
Preisfrage: Was kennzeichnet einen Event? Er hat jedenfalls IMMER ein Anfangsdatum und eine Dauer bzw. Endedatum. "Meeting 10 Uhr" ist also KEIN Event! Events können auch im Backend eingegeben werden. In den Feldern "HeaderStyle" und "BodyStyle" kann man etwas eintragen. Sie werden später ausgewertet und in CSS-Klassen umgesetzt, so dass man Events z. B. farblich unterlegen kann. Es gibt auch (ca.) sechs vorbereitete, wie red, green, blue usw. sowie "default". Genaue Namen bitte nachgucken.
Bei der Vorstellung der Basics haben wir unmittelbar kleinere Ausflüge zu den Tipps und Tricks und "Was man wissen muss" usw. gemacht. Die Details sprengen hier den Rahmen, aber dafür gibt es ja auch mehr als 150 Seiten Doku:
Deshalb hier vielleicht eher die Hinweise auf einige Prinzipien, Tipps und Fallgruben ("pitfalls"):
plugin.tx_cal_controller {
((view)).((object)).((property))
# Beispiel:
month.event.title.crop=5
}
WICHTIG: Praktisch alle Felder (Properties?) haben stdWrap-Eigenschaften, können also das, was ein TS-TEXT-Objekt kann.$TYPO3_CONF_VARS['SYS']['sqlDebug'] = 1; $TYPO3_CONF_VARS['SYS']['displayErrors'] = 1; $TYPO3_CONF_VARS['SYS']['debug'] = 1;NICHT VERGESSEN: Später wieder ausschalten!!!
Tipp und Frage:
Conditions im TS sind ggf. schneller als EXT-Templates. Hat da jemand eine Quelle zu?
ACHTUNG:
Es sind vor allem die wiederkehrenden Termine, mit denen CAL den Server an den Rand des Wahnsinns treiben kann. Da muss sehr viel berechnet werden.
Call for feedback:
Es gibt in CAL deshalb zur Zeit ein "experimental feature" useNewRecurringModel (etwa dieser Name). Hierzu hätte Mario gerne Feedback.
Update von älteren CAL-Version: Es gibt dazu ein Updatescript. Und der Export- und Import von ICS-Daten ist auch eine Idee.
Dann war da noch was zu GoogleMaps ... Wie war das? CAL unterstützt vor allem die TYPO3-Extension von der WEC? Hhm, welche ist das?
Simon Harhues: GoogleMaps Extension der Web Empowered Church? Da ist wohl folgende Extension gemeint: WEC Map, Extkey 'wec_map', http://typo3.org/extensions/repository/view/wec_map/current/
Michael Gnessner: 'wec_map' - Genau diese Extension war bei meiner Frage gemeint. So hast Du die Möglichkeit, beim Organizer- und Location-Datensatz entsprechend eine Googlemap einzubinden, die auch sehr flexibel konfigurierbar ist.
Natürlich wurden auch bestehende Bugs angesprochen und noch viel mehr Feature-Requests gleich vor Ort in die Runde getragen. Hier sei gesagt: Es macht überhaupt keinen Sinn, diese per Mail irgendwo hin zu schicken. Hier ist der richtige Ort dafür:
Was hier eingetragen ist, geht auf alle Fälle schon einmal nicht verloren. Und Jeff und Mario können hier effizient den Dingen nachgehen. Die CAL Version 2.0 ist hier gleichsam das Auffangbecken visionäre Überlegungen.
Aktuelle Versionen sind per Subversion hier zu erhalten:
Wann immer von Entwicklerseite ein Submit gemacht wird, also für jedes neue Release, sollte dort unmittelbar ein neuer Build erstellt werden, nicht nur "nightly". Siehe auch:
Fazit:
Fünf Stunden waren veranschlagt, und die Zeit ist vergangen wie im Fluge.
Es hat Spaß gemacht und sich SEHR gelohnt. Ein herzliches Dankeschön an alle Beteiligten!
Hier noch einmal eine Liste mit wichtigen Links:
sun.webempoweredchurch.com/projects/calendar
es gibt auch eine Newsgroup/Mailingliste, in der neben den Entwicklern auch eine Gruppe von Cal-Nutzern Fragen beantworten:
news://typo3.projects.calendar