Das Modul "Calendar Views" stellt eine kalendarische Ansicht für Views zur Verfügung und macht das "Event"-Modul aus meiner Sicht überflüssig. Der Vorteil von "Calendar Views" liegt auch darin, dass das Modul auf CCK aufsetzt und die Termin-Daten nicht in einem proprietären Format "irgendwo" im Node-Body speichert.
"Calendar" bringt einen außerordentlich komplexen View mit, der über eine Argument-Verschachtelung die Optionen für Jahres, Monats-, Wochen- und Tagesansicht, sowie zum vorwärts- und rückwärtsblättern zur Verfügung stellt. Standardmäßig reagiert dieser Views auf das Beitragsdatum von Nodes. Beim ersten Aufruf erhält man eine recht lustige Ansicht, da alle bestehenden Drupal-Nodes anhand ihres Erstellungsdatums im Kalender dargestellt werden. Dies ist sicherlich eher ein exotischer Anwendungsfall, ist aber unumgänglich, da der View auf irgendein Datumsfeld voreingestellt sein muss.
Mit wenigen Handgriffen lässt sich der View auf einen bestimmten NodeType filtern und das Datums-Argument auf ein bestehendes CCK-Datumsfeld umstellen (siehe Abbildung 1). Danach zeigt der Kalender nur noch Termine anhand ihres Zeitpunkts an.
Wie lässt sich daraus für die Mitarbeiter der eigenen Firma ein Team-Kalender bauen?
Den "Trick" hat merlinofchaos, Maintainer diverser mächtiger Drupal-Module mit beängstigend genialen Anwandlungen, in dem Beitrag "how to filter by 'user referenced field' equal to 'current logged in user'" beschrieben:
- Die Termine benötigen ein CCK-Feld vom Typ "User-Reference", in dem Mitarbeiter zugetragen werden können. Das Feld unterstützt die Angabe mehrerer Mitarbeiter.
- Unter "Beziehungen" muss noch eine Beziehung - ich nenne sie "MItarbeiter" - über das User-Reference Feld zu den Drupal-Usern hergestellt werden. (siehe Abbildung 2)
- Nun fehlt als letzter Schritt noch ein Filter, der auf den aktuell angemeldeten User filtert und die Beziehung "Mitarbeiter" verwendet.
Den Filter setze ich "hervorgehoben" und beschrifte ihn mit "nur eigene Termine". Er bietet eine JA - NEIN Option und stellt entweder alle Termine oder nur die eigenen zur Verfügung.
Eigentlich ganz einfach - man muss nur drauf kommen :-)
Um die Termine eines anderen Mitarbeiters einsehen zu können, benötigt man noch das Modul "Masquerade". Über die Berechtigungen von "Masquerade" lässt sich einstellen, wer wessen Terminkalender einsehen darf. Das Modul ist mit Bedacht einzusetzen, da der User mit dem Modul in die Rolle eines anderen Users schlüpft und damit dessengesamte Drupal-Rechte "erbt".
















