In der stable kam eine Funktion hinzu die wohl einige eher in der 1.1 erwartet hätten, Plugin support. Nein, nicht die schon lange unterstützen "content" Plugins, sondern EventList eigene, welche auf bestimmte Aktionen beliebig reagieren können.
Um ein paar Beispiele zu geben was damit möglich wird kann man sich zwei bereits existierende Plugin für EventList etwas näher anschauen.
Friday, 20. February 2009
EventList und Plugins
Zum einen das Plugin das Jomsocial und EventList verbindet. Hier werden Aktionen innerhalb EventList, wie zum Beispiel das Einreichen oder Anmelden zu einer Veranstaltung, umgehend in einem "Activity stream" innerhalb Jomsocials angezeigt sowie die Profil Avatare aus Jomsocial geladen und anstatt der üblichen Namensliste der angemeldeten Nutzer dargestellt. Also das Jomsocial äquivalent zur fest integrierten Community Builder Unterstützung.
Das zweite Plugin ist das "mailer" Plugin (Nur in SVN zur Zeit des Eintrags) welches Benachrichtigungsfunktionen für die Registrier- und Abmeldeaktionen nachrüstet. Ist dieses installiert können sowohl dem Nutzer der sich zB. anmeldet bzw. dem Administrator eine Bestätigungs- respektive Informations Email zugeschickt werden.
Wie man anhand der obigen Beispiele schon merken kann sind den Plugins im Moment noch Grenzen gesetzt. Ihnen wird lediglich mitgeteilt es passiert etwas, es schaut ob es davon betroffen ist, also tut es was und dazu bekommt es meistens ein geradezu lächerliches Maß an Daten. Die Event ID und evtl. noch die Info ob es sich um einen neuen Event handelt. Plugins, wie von Joomla bekannt, welche vor der eigentlichen Anzeige noch zB die Eventdaten bearbeiten könnten sind noch nicht möglich. Das dürfte erst in der 1.1 unterstützt sein.
Das war der Versuch einmal so wenig technisch wie es mir möglich ist die grundsätzliche Funktionsweise sowie die Möglichkeiten für Anwender die sich daraus ergeben zu beschreiben. Denke das hat einigermaßen geklappt
Doch nun geht es mehr ins Detail allerdings im Schnelldurchgang. Wir "basteln" ein Plugin für EventList. Dazu sollten wir natürlich erst einmal wissen welche Aktionen zur Verfügung stehen:
Nun kommen wir zum ersten Schritt der Geschichte: Der XML Datei
Zwei wichtige Punkte sind hier zu beachten:
Das eigentliche Plugin:
Jetzt müssen diese zwei Dateien nur noch gepackt und via dem Joomla Extension installer installiert werden, aktivieren und fertig
Das wars auch schon. Viel mehr gibt es dazu nicht zu sagen.
Nun die Rückfrage...welche Ideen für Plugins habt Ihr die man gegenwärtig umsetzen könnte? Welche hooks/events würdet Ihr euch für die 1.1 wünschen? Schreibt doch kurz dazu etwas in die Kommentare.
PS: Dieser Blogpost erfüllt natürlich in keinster Weise den Anspruch technischer Dokumentation
Das kommt noch, wenn Zeit, auf schlu.net
Das zweite Plugin ist das "mailer" Plugin (Nur in SVN zur Zeit des Eintrags) welches Benachrichtigungsfunktionen für die Registrier- und Abmeldeaktionen nachrüstet. Ist dieses installiert können sowohl dem Nutzer der sich zB. anmeldet bzw. dem Administrator eine Bestätigungs- respektive Informations Email zugeschickt werden.
Wie man anhand der obigen Beispiele schon merken kann sind den Plugins im Moment noch Grenzen gesetzt. Ihnen wird lediglich mitgeteilt es passiert etwas, es schaut ob es davon betroffen ist, also tut es was und dazu bekommt es meistens ein geradezu lächerliches Maß an Daten. Die Event ID und evtl. noch die Info ob es sich um einen neuen Event handelt. Plugins, wie von Joomla bekannt, welche vor der eigentlichen Anzeige noch zB die Eventdaten bearbeiten könnten sind noch nicht möglich. Das dürfte erst in der 1.1 unterstützt sein.
Das war der Versuch einmal so wenig technisch wie es mir möglich ist die grundsätzliche Funktionsweise sowie die Möglichkeiten für Anwender die sich daraus ergeben zu beschreiben. Denke das hat einigermaßen geklappt
Doch nun geht es mehr ins Detail allerdings im Schnelldurchgang. Wir "basteln" ein Plugin für EventList. Dazu sollten wir natürlich erst einmal wissen welche Aktionen zur Verfügung stehen:
- onEventEdited
- onVenueEdited
- onEventUserRegistered
- onEventUserUnregistered
- onAttendeeDisplay
Nun kommen wir zum ersten Schritt der Geschichte: Der XML Datei
- <?xml version="1.0" encoding="utf-8"?>
- <install version="1.5.2" type="plugin" group="eventlist" method="upgrade">
- <name>EventList - Example Plugin</name>
- <author>Author</author>
- <creationDate>Month 2009</creationDate>
- <copyright>Copyright (C) 2009 Holder. All rights reserved.</copyright>
- <license>GNU General Public License 2</license>
- <authorEmail>email</authorEmail>
- <authorUrl>url</authorUrl>
- <version>1.0</version>
- <description>A Plugin forEventList which does nothing</description>
- <files>
- <filename plugin="example">example.php</filename>
- </files>
- <params>
- <param name="example" type="text" default="" label="Example" description="An example text parameter" />
- </params>
- </install>
Zwei wichtige Punkte sind hier zu beachten:
- Das "group="eventlist" im install tag macht dieses Plugin de facto zu einem EventList plugin. Steht da etwas anderes interessiert sich Eventlist nicht dafür und es wird nicht ausgeführt.
- Etwas nicht EventList spezielles aber erwähnenswert:
example.php Hier gebt Ihr zum einen die Plugin Datei an (hier example.php) sowie den "Plugin Namen" der euch im folgenden noch begleiten wird. Er sollte also zumindest etwas überlegt sein.
Das eigentliche Plugin:
- <?php
- //Kein direkter Zugriff
- //Abhängigkeiten importieren
- jimport('joomla.event.plugin');
- class plgEventlistExample extends JPlugin {
- /**
- * Constructor (php4)
- *
- * @param object $subject The object to observe
- * @param array $config An array that holds the plugin configuration
- * @since 1.0
- */
- {
- parent::__construct($subject, $config);
- }
- /**
- * Methode für onEventUserRegistered
- *
- * @access public
- * @param int $event_id
- * @return boolean
- * @since 1.0
- */
- function onEventUserRegistered($event_id)
- {
- //tu was wenn sich jemand zu einer Veranstaltung anmeldet
- return true;
- }
- /**
- * Methode für onEventUserUnregistered
- *
- * @access public
- * @param int $event_id
- * @return boolean
- * @since 1.0
- */
- function onEventUserRegistered($event_id)
- {
- //tu was wenn sich jemand von einer Veranstaltung abmeldet
- return true;
- }
- /**
- * Methode für onEventEdited
- *
- * @access public
- * @param int $event_id
- * @param int $isNew
- * @return boolean
- * @since 1.0
- */
- function onEventEdited($event_id, $isNew)
- {
- if ($isNew) {
- //tu was wenn eine Veranstaltung neu angelegt wird
- } else {
- //tu was wenn eine Veranstaltung bearbeitet wurde
- }
- return true;
- }
- /**
- * Methode für onVenueEdited
- *
- * @access public
- * @param int $venue_id
- * @param int $isNew
- * @return boolean
- * @since 1.0
- */
- function onVenueEdited($venue_id, $isNew)
- {
- if ($isNew) {
- //tu was wenn ein Veranstaltungsort neu angelegt wird
- } else {
- //tu was wenn ein Veranstaltungort bearbeitet wurde
- }
- return true;
- }
- /**
- * Methode für onAttendeeDisplay
- *
- * @access public
- * @param int $user_id
- * @param string $text
- * @return boolean
- * @since 1.0
- */
- function onAttendeeDisplay($user_id, &$text)
- {
- //hier lassen wir das Plugin doch noch etwas machen, wenn auch komplett unnütz
- //wir holen uns den parameter example und geben dessen wert
- //in der liste der registrierten nutzer aus
- $text = $this->params->get('example', '');
- return true;
- }
- }
- ?>
Jetzt müssen diese zwei Dateien nur noch gepackt und via dem Joomla Extension installer installiert werden, aktivieren und fertig
Das wars auch schon. Viel mehr gibt es dazu nicht zu sagen.
Nun die Rückfrage...welche Ideen für Plugins habt Ihr die man gegenwärtig umsetzen könnte? Welche hooks/events würdet Ihr euch für die 1.1 wünschen? Schreibt doch kurz dazu etwas in die Kommentare.
PS: Dieser Blogpost erfüllt natürlich in keinster Weise den Anspruch technischer Dokumentation


- onVenueDeleted
(sinnvoll für Mailerplugin, weil: z.B. Info an User oder Admin wenn das Event abgesagt wird o.Ä.)
- onAfterEventDisplay
- onPrepareEventDisplay
(Sinnvoll um Beispielsweise irgendwelchen Content ÜBER oder UNTER dem Event Anzeigen zu lassen, z.B. Buttons/Links zur Kartenregistrierung...)
- onCreateVenue
(Sinnvoll um z.B. den Admin darüber zu informieren um auch zu schauen ob es sich nichtum Müll handelt)
Und weisste was richtig cool wäre an Plugins/Möglichkeiten:
- wenn das Votingsystem aus QuickFAQ/QuickLoad in den Events auftauchen würde, somit könnten User "vergangene" Events bewerten.
- wenn man Bilder vergangener Events darstellen könnte, Beispielsweise aus Joomgallery/PhocaGallery usw.
Das wars, sind in meinen Augen alles coole Features die sicher gut ankommen würden. Ich selber hab leider keine Verwendung mehr dafür, aber egal
Nice work.
actually i am looking for your email address to ask more if you dont mind...
greeting from Java Indonesia
dieses Feature zu ermöglichen wäre auch super.
http://www.schlu.net/forum/index.php?f=19&t=7645&p=16754&hilit=verbindlich&rb_view=viewtopic#p16754
Danke, Carlo
eine Event-Importfunktion wäre super, entweder automatsich, z.B. Events in München, oder ne Poollösung, mit Filterfunktion und Einbindung in die EventList.
du erwähntest in deinem Dezember-Eintrag, daß ihr an einer CSV Import-Funktion arbeitet. Da ich so etwas dringend suche würde ich mich als Tester anbieten.
Gruß
Toni