Umsetzung eines Eventloggers

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
apffan200
Beiträge: 41
Registriert: 15.09.2013, 20:22:40

Umsetzung eines Eventloggers

Beitrag von apffan200 » 05.02.2014, 23:02:37

Hallo Leute,

ich arbeite gerade an einem privatem Community Projekt. Dabei soll es die Funktion eines Loggers, also einer Funktion, die Meldung von anderen Kontakten speichert und ausgibt (Benutzer x teilt ein Bild, benutzer y sieht diese Meldung + einen Link zu der Seite im Logger).
Jetzt soll dieser aber mehrsprachig gestaltet werden. Jetzt sollen im Logger automatisch generierte Meldungen ala "Benutzer x hat ein Bild geteilt". Jetzt ist die Frage, wie die Meldungen gespeichert werden. Jetzt gäbe es die Möglichkeit für jede Sprache via GORM ne neue Spalte hinzuzufügen, das ist imo aber nicht sehr schön, weshalb ich jetzt euch mal frage, ob es da schönere Lösungen gibt.
Meine zweite Frage ist, wo der Event Logger aufgerufen wird:
beim teilen wird eine FC Action ausgeführt, die im CommunityManager die Teilung hinzugefügt wird (sharePost()). Jetzt wäre die Frage, ob in der sharePost() - Methode bereits der Logger aufgerufen wird, oder das nur in der FC Action ausgeführt wird.

Danke für eure Hilfe,
LG Maximilian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Umsetzung eines Eventloggers

Beitrag von dr.e. » 05.02.2014, 23:40:15

Hallo Maximilian,
Jetzt gäbe es die Möglichkeit für jede Sprache via GORM ne neue Spalte hinzuzufügen, das ist imo aber nicht sehr schön, weshalb ich jetzt euch mal frage, ob es da schönere Lösungen gibt.
Meine erste Idee ist, eine Entität "Language" und eine "Message" inkl. ihrem "MessageText" zu modellieren. Die jeweilige "Message" kannst du dann mit mehreren "MessageText"s anlegen, wobei ein "MessageText" immer eine Beziehung zu "Language" hat:

Code: Alles auswählen

Message <1---n> MessageText <1----1> Language
"Message" generierst du dir als eigenes DO, das dann z.B. eine Methode getMessage($lang) hat und intern den entsprechenden "MessageText" für die übergebene Sprache läd.
beim teilen wird eine FC Action ausgeführt, die im CommunityManager die Teilung hinzugefügt wird (sharePost()). Jetzt wäre die Frage, ob in der sharePost() - Methode bereits der Logger aufgerufen wird, oder das nur in der FC Action ausgeführt wird.
Würde ich so implementieren.
Viele Grüße,
Christian

apffan200
Beiträge: 41
Registriert: 15.09.2013, 20:22:40

Re: Umsetzung eines Eventloggers

Beitrag von apffan200 » 06.02.2014, 17:42:27

Hallo Christian,

vielen Dank für deine Antwort.

Verstehe ich das richtig, dass die Entität Message nur der Container ist und mehrere Sprachabhängige MessageText Entitäten haben kann?
Würde ich so implementieren
Vllt hab ich mich nur undeutlich ausgedrückt, aber ich habe zwei Möglickeiten (aufrufen des Loggers in der Business Komponente oder erst in der FC Action) geschildert :D

LG Maximilian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Umsetzung eines Eventloggers

Beitrag von dr.e. » 06.02.2014, 18:51:16

Verstehe ich das richtig, dass die Entität Message nur der Container ist und mehrere Sprachabhängige MessageText Entitäten haben kann?
Genau! :)
Vllt hab ich mich nur undeutlich ausgedrückt, aber ich habe zwei Möglickeiten (aufrufen des Loggers in der Business Komponente oder erst in der FC Action) geschildert :D
Oh, das hab ich übersehen. :roll: :D Ohne deine restliche Code Struktur zu kennen würde ich das in der Business-Komponente aufrufen.
Viele Grüße,
Christian

apffan200
Beiträge: 41
Registriert: 15.09.2013, 20:22:40

Re: Umsetzung eines Eventloggers

Beitrag von apffan200 » 06.02.2014, 19:41:46

Hallo Christian,

danke für deine Antwort. Jetzt bin ich doch noch auf ein Problem gekommen: ich will ja via JSON den Inhalt den Inhalt des Eintrags übertragen und dann mit jQuery ausgeben. Jetzt brauch ich für den Logger noch etwas Html. Wenn jemand zum Beispiel einen Beitrag teilt, dann soll der Beitrag innerhalb der Nachricht mit dem ganzen Html ausgegeben werden. Jetzt ist es imo unschön, Html "einfach so" in die Datenbank zu stecken, da bei Änderungen (am Profilbild zum Beispiel) es schwer ist, das in der DB wieder zu ändern. Jetzt ist es aber auch schwer, das anders zu lösen. EIne mir in den Sinn gekommene Möglichkeit wäre, einen iframe mit einer weiteren FC Action zu verwenden, die den Post nicht in Json, sondern mit Html. Würden dir so noch andere gute Lösungen einfallen?

LG Maximilian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Umsetzung eines Eventloggers

Beitrag von dr.e. » 06.02.2014, 23:01:22

Hallo Maximilian,
Jetzt ist es aber auch schwer, das anders zu lösen.
Darf ich fragen warum? Du kennst doch zum Zeitpunkt des Teiles den geteilten Beitrag und auch den neuen. Damit kannst du doch dein Datenmodell so auslegen, dass du den urspünglichen Artikel/Post dort "nur" verlinkst als komplett darin zu speichern. Beim Ausgeben kannst du dann beide sauber rendern und hast bei Updates kein Problem. Ist das keine Option?
Viele Grüße,
Christian

apffan200
Beiträge: 41
Registriert: 15.09.2013, 20:22:40

Re: Umsetzung eines Eventloggers

Beitrag von apffan200 » 07.02.2014, 15:12:03

Hallo CHristian,

naja, vllt habe ich mmich zu undeutlich ausgedrückt.
Auch die geteilten Posts innerhalb der Meldung sollten ja in HTML ausgegeben werden und ich wusste nicht wohin damit.
Ich habe das nun innerhalb des Objektes in 2 Methoden ausgelagert: eine, die den AJAX request sendet und dann die andere aufruft. Die andere bekommt ein array mit dem Inhalt des Postes, das sie in HTML transformiert. So simpel kann es sein :D

Danke für deine Unterstützung,
Maximilian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Umsetzung eines Eventloggers

Beitrag von dr.e. » 08.02.2014, 12:40:36

naja, vllt habe ich mmich zu undeutlich ausgedrückt.
... oder ich habe dich nicht richtig verstanden! :) Es ist für mich nicht immer ganz einfach ohne Einsicht in ein Projekt direkt eine passende Lösung vorzuschlagen. Oft führen mehrere Wege nach Rom.

Schön, dass du eine Lösung gefunden hast! :)
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast