BLOG

Team-Kalender mit Calendar, Views, CCK und User-Reference erstellen

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".

Kommentare

Flag ist auch eine gute Idee!

Super Idee!

Mit CCK User-Referenz, Flag und etwas Programmierung könnte ich mir sogar den Einsatz in einem komplexeren Netz vorstellen:

  1. CCK-User-Referenzierte Teilnehmer erhalten einen Einladungslink.
  2. Den Link können sie nur annehmen - bzw. den Flag setzen, wenn sie im User-Reference-Feld enthalten sind. Das geht m.E. nur mit zusätzlicher Programmierung.

So beruht die beabsichtige Nutzung nicht nur auf Good-Will der Teilnehmer, sondern liegt im Ermessen desjenigen, der den Node editieren darf.

Damit wird der Kalender außerdem interaktiv: man sieht nicht nur die eingeladenen User sondern auch deren Teilnahmestatus. Das klingt schon fast nach Exchange :-)

Ich geh dem mal nach und werde anschließend berichten...

 Schöne Zusammenfassung. Wie

 Schöne Zusammenfassung. Wie man den Zusammenhang zu den Benutzern gestaltet, ist wohl eine Philosophiefrage. Vor allem, wenn es darum geht, wer für wen Termine eintragen darf. Anderes Szenario:

Jeder Benutzer kann Events anlegen. Nun reicht es, im View nach Autoren der Nodes zu filtern (gerne auch exposed). So hat jeder seine Termine Hat man einen gemeinsamen Termin, gibt es einen Autor und jemand, der sich dazu einträgt, oder eintragen lässt. Benutzt man dafür Userreference, muss man sicherstellen, dass auch andere Benutzer dieses Feld verändern dürfen. In vertrauten Umgebungen kein Problem, in anderen Umgebungen schon schwieriger. Denn wer ein Feld ändern kann, kann auch Einträge löschen. Dort könnte man z.B. Flag benutzen, um einen "Ich bin auch dabei" Button zu kreieren. Alles hat so seine Vor- und Nachteile. ;-)

Persönlich würde ich Masquerade nur im administrativen Bereich benutzen.

Grüße, Ronald

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Mit dem Absenden dieses Formulars, akzeptieren Sie die Datenschutzrichtlinie von Mollom.