MessageModule

Dieser Bereich dient dazu, eure Tricks und Erweiterungen vorzustellen, damit diese auch andere Anwender nutzen können. // This area can be used to publish your tricks and extensions to the APF to be used by other developers.
Gesperrt
Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

MessageModule

Beitrag von Screeze » 04.07.2010, 14:33:22

DIese erweiterung ist inzwischen veraltet, es gibt eine inzwischen eine bessere, ins APF als extension integrierte Erweiterung:
viewtopic.php?f=11&t=584





Hi,
nachdem das NachrichtenSystem von Megger nicht ganz meinen Anforderungen eines solchen Systems entsprochen hat (nicht falsch verstehen megger, die Umsetzung ist gut und ich hab es mir auch als basis angesehen, ich wollte nur andere features etc ;) ) und auserdem zu anwendungsspezifisch war, da ich ein System wollte welches in beliebigen anwendungen mit minimalen änderungen, am besten nur mit configänderungen funktioniert, habe ich ein eigenes MessageModule geschrieben.
Wichtig war mir hierbei die flexibilität und performance.

Grob beschrieben kann das Modul folgendes:
- Postboxanzeige: Postein- und -ausgang in einem. Integrierte Blätterfunktion mit konfigurierbarer Anzeige von Channels pro Seite.
- Nachrichten im "Channel"-format: Ich wollte ein System welches die letzten zusammengehörenden nachrichten gemeinsam anzeigt, und nicht jede Nachricht einzeln. (so wie in diesem Forum in etwa) Das habe ich in einer Art Channel/Thread system umgesetzt: Eine neue Nachricht öffnet einen Channel für die 2 betroffenen Nutzer, nachrichten die als Antwort hierauf geschrieben werden, werden dem Channel zugeordnet.
- Gelesen anzeige: Anzeige für gelesen/ungelesen für Sender und Empfänger in der Postbox.
- Keine doppelte Datenhaltung: Die zurodnung zu den Nachrichten geschieht mittels Relationen, weshalb Nachrichten und Channels nicht mehrfach dargestellt werden müssen. Ein Benutzer kann einen Channel "löschen", solange der andere Benutzer ihn noch nicht gelöscht hat wird er lediglich versteckt. Sollte der andere benutzer nochmal etwas schreiben wird der Channel wieder aktiviert für beide. Haben beide den Channel versteckt wird er endgültig gelöscht.
- Caching der Postbox: Da hier Daten aus vielen Objekten und relationen zusammengesammelt werden müssen, kann optional eine Version verwendet werden, die einen Cache benutzt. Pro Channel existiert 1 cacheeintrag, der dann auch automatisch aktualisiert wird.
- Schutz vor XSS-Attacken: Durch die Verwendung der Formular validatoren und filter sollte ein Schutz vor XSS-Attacken gewährleistet sein, wenn das jemand nochmal genauer prüfen könnte wäre ich dankbar.


Das Modul baut auf die aktuelle SVN-version von 1.12 auf, und ist NICHT abwärtskompatibel.
Es wird u.a. der GORM verwendet.

Es werden basistemplates und eine passende .css datei mitgeliefert. Sofern diese verwendet werden sollen, kann einfach das template "messagemodule.html" mithilfe der importdesign-taglib eingebunden werden, und die .css datei dem header der Seite angefügt werden.
Allerdings wird es in den meisten Fällen nötig sein die templates und entsprechenden controller auf die eigene anwendung anzupassen, hierbei können die existierenden als grundlage verwendet werden.
Die Kernkomponenten des Moduls sind:
  • MessageManager: stellt alle funktionen zum interagieren mit der Datenbank zur verfügung. Sollte NICHT von den controllern verwendet werden.
  • MessageCentre: wird von den documtcontrollern verwendet, und kapselt die Funktionen des MessageManager. Implementiert das Interface "MessageCentreInterface"
  • CachedMessageCentre: selbe Funktion wie MessageCentre, allerdings verwendet diese Komponente Caching.
  • MessageCentreInterface: jedes MessageCentre muss dieses interface implementieren, um die funktion der controller zu gewährleisten.
Das Modul benötigt 5 konfigurationsdateien unter dem namespace "externmodules::messagemodule::{CONTEXT}".
2 für den GORM, 1 Datei mit den Sprachabhängigen Werten für die Templates, 1 datei welche konfigurationswerte für das modul enthält und 1 für die serviceobjekte.

Der Wechsel zwischen MessageCentre und CachedMessageCentre kann einfach durch anpassen der serviceobjects.ini erreicht werden.
Hier muss auch die configuration des GORM angepasst werden, damit die richtige Datenbankverbindung verwendet werden kann.

Dem Modul liegt unter messagemodule/data/ eine setup.php bei, welche die einrichtung der Datenbank übernimmt. Diese muss vor verwendung mit dem richtigen Context und der richtigen Datenbankverbindung gefüttert werden, sowie dem Pfad zum core-ordner des apf.

Hier liegt das Modul als .zip datei zum download:
http://the-screeze.de/APF/messagemodule.zip

Eine simple, fertig konfigurierte Beispielanwendung, wie das modul verwendet werden kann, findet sich hier zum download:
http://the-screeze.de/APF/messagemodule ... ackage.zip
Beim Beispielpaket muss die setup.php aus dem obersten Verzeichnis verwendet werden, da diese bereits 4 Testuser erzeugt.

Erwartet nichts grafisch aufwändiges, ich hab blos eine verwendbare basis als frontend geschrieben, da jede Anwendung sowieso ihre eigene Anforderung haben wird.

Über rückmeldung zur Umsetzung würde ich mich freuen, bei Fragen meldet euch.
Das Modul darf natürlich frei verwendet/erweitert werden, dafür ist es da ;)

Grüße,
Ralf

P.s.: Danke an Christian für seine Ratschläge etc ;)

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: MessageModule

Beitrag von Coach83 » 05.07.2010, 11:05:06

Dein Zip_Paket wurde nicht gefunden 404 - File not found :-)

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: MessageModule

Beitrag von Screeze » 05.07.2010, 11:44:21

Sry, ist wohl beim upload unterschlagen worden, ist jetzt oben.

Hier übrigens ein kleines UML zum Datenbankdesign welches das System nutzt:

Bild

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: MessageModule

Beitrag von Megger » 08.07.2010, 10:26:44

Hi

Hört sich gut an. Werde es irgendwann mal testen, wenn ich mal wieder ein Projekt habe, welches ich mit dem APF realisiere.
nicht falsch verstehen megger, die Umsetzung ist gut und ich hab es mir auch als basis angesehen, ich wollte nur andere features etc ;)
Passt schon. Mein Nachrichtensystem war auch mehr als Idee gedacht und noch sehr unfertig.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: MessageModule

Beitrag von Megger » 29.08.2010, 15:01:10

Theoretisch könnten auch mehr als 2 User in einem Channel teilnehmen, oder?

Edit: Obwohl, dass isRead im Message Objekt ist dafür zu unflexibel
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: MessageModule

Beitrag von Screeze » 08.09.2010, 00:00:07

Korrekt, dafür ist das nicht gedacht gewesen, sonst hast du ja fast eine Forenfunktionalität, das sollte eher ein privates nachrichtensystem sein, und da gehören immer nur 2 dazu.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: MessageModule

Beitrag von Megger » 08.09.2010, 00:08:06

Hi

Ich habe bei mir die Möglichkeit eine Rundmail zu schreiben, deswegen soll es auch mit mehreren Usern funktionieren. Habe es bei mir nun so gemacht, dass ich eine MessageInfo dazwischen gebaut habe, welche den Status einer Nachricht für einen bestimmten User speichert.

Gruß
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast