Thread-Flat-Template: Rating wird als "Integration" aufgeführt

12.08.2019 20:02
avatar  rOgerHZ
#1
rO
User

Ciao Zämme

Das ist wohl eine Fragen an @Ingmar

Ich habe mein eigenes Template für die Thread-Flat-Darstellung. Ich habe gemäss Original-Standard-Template folgende HTML/Template-Codezeilen drin:

1
2
3
4
5
6
7
8
9
10
11
12
 

{{show_ratings_for_forum_message==true.start}}
<div class="postratings">{{ratings(forum_message,message:id)}}</div>
{{show_ratings_for_forum_message==true.end}}
{{message:integration==true.start}}
<div class="postlinking">
<strong>{[thread_linked_elements]}</strong>
{{message:integration.startlist}}
{{integration|integrate(forum_message)}}
{{message:integration.end}}
</div>
{{message:integration==true.end}}
 



Nun habe ich aber den Effekt, dass sobald einer eine Bewertung abgibt, dies wie folgt aussieht:


Wie Ihr seht, wird da einmal die Bewertungs-Buttons sichtbar (im Rahmen des "show_ratings_for_forum_message") - der Benutzer der Danke gesagt hat, fehlt allerdings.

Dafür wird im Rahmen des "message:integration"-Teils offenbar der Bewertungs-Button-Teil nochmals eingeblendet.

Ich habe noch nicht herausgefunden, wie die Bewertungsfunktion genau funktioniert, da ja da entsprechende Funktion aufgerufen wird: ratings(forum_message,message:id)

Hast Du mir einen Tipp was ich prüfen kann oder zum besseren Verständnis für den Code führt?

Danke & aes liebs Grüessli
rOgerHZ


 Antworten

 Beitrag melden
12.08.2019 20:40
avatar  rOgerHZ
#2
rO
User

Nachtrag:

Wenn man die zwei Abschnitte show_ratings_for_forum_message und message:integration abtauscht, wird die Button-Leiste nur "einmal" eingeblendet.

Inzwischen habe ich noch die JavaScript Funktion xRatingAction gefunden, die von den eingeblendeten Buttons benutzt wird. Allerdings habe ich das Binding für diese Buttons noch nicht gefunden - oder aber es ist in einem Template integriert, dass mittels der Funktion {{ratings(forum_message,message:id)}} eingesetzt wird.

Tipps?


 Antworten

 Beitrag melden
13.08.2019 12:06
avatar  Ingmar
#3
avatar
Technik

Der Aufruf von {{integration|integrate(forum_message)}} führt intern dazu, dass das Template "(Widget view) - Bewertung integrieren" (templatename=rating_integration) an dieser Stelle geladen wird.

Die xRatingAction-Funktion führt die Bewertung aus, lädt dann das rating-Template mit den aktualisierten Daten erneut und gibt den HTML-Code als Rückgabewert zurück. So kann die neue Bewertung direkt angezeigt werden, ohne die Seite neu zu laden.

Schau dir mal das rating_integration-Template an - das erklärt vermutlich einiges. Wenn du dann weitere Fragen hast immer her damit.


 Antworten

 Beitrag melden
19.08.2019 19:40
avatar  rOgerHZ
#4
rO
User

Ciao @Ingmar !!!

Danke für den Tipp. Ich hatte natürlich die Templates geprüft um "Insights" zu bekommen - aber das besagte nicht gefunden...

Um daher den Tipp zu komplettieren hier noch von mir folgende Ergänzung: Zumindest im Standard-Template ist das Template nicht für die öffentliche Bearbeitung vorgesehen. Wenn man aber das Template "(Widget view) - Mitglied integrieren" aufruft und in der URL den Teil von "&templatename=user_integration&" auf "&templatename=rating_integration&" ändert, kommt man an das Template ran.

Aes liebs Grüessli
rOgerHZ


 Antworten

 Beitrag melden
20.08.2019 06:29
avatar  rOgerHZ
#5
rO
User

Ciao @Ingmar

Ich bin jetzt ein bisschen verwirrt. Du schreibst das mittels der folgenden Funktion das Rating integriert wird:

Zitat von Ingmar im Beitrag #3
{{integration|integrate(forum_message)}}


Allerding habe ich festgestellt, dass die folgende Code Sektion (aus dem Template Thread-Flat) die Bewertung integriert:

1
2
3
 
{{show_ratings_for_forum_message==true.start}}
<div class="postratings">{{ratings(forum_message,message:id)}}</div>
{{show_ratings_for_forum_message==true.end}}
 



Ich sehe aktuell bei mir das Problem, dass eine existierende Bewertung nicht angezeigt wird. Daher nun meine Frage dazu: Wird die Bewertung bereits durch die eine oder andere Funktion (sprich entwender {{integration|integrate(forum_message)}} oder mittels {{ratings(forum_message,message:id)}} ) bereits ausgefüllt hinterlegt oder aber im Nachgang dynamisch per JavaScript angepasst?

Aktuell sehe ich eben gar keine Bewertung mehr und versuche einzukreisen, wo sich der Fehler eingeschlichen hat....

Danke für Dein Feedack.

Aes liebs Grüessli
rOgerHZ


 Antworten

 Beitrag melden
20.08.2019 10:48
avatar  Ingmar
#6
avatar
Technik

Du hast völlig recht. Da hab ich was falsches behauptet...
Zu meiner Entschuldigung: Das hat mal gestimmt, ist aber schon lange nicht mehr so


Mit {{integration|integrate(forum_message)}} werden die so genannten Integrationen für eine Nachricht geladen. Das sind Inhalte, die über den "Inhalte integrieren" Link mit einem Beitrag verknüpft wurden (z.B. Galeriebilder oder Kalender-Events).


Für das Laden der Bewertungen ist dann tatsächlich die andere Zeile zuständig:
{{ratings(forum_message,message:id)}}
also {{ratings(typ,id)}}


 Antworten

 Beitrag melden
20.08.2019 21:05
avatar  rOgerHZ
#7
rO
User

Ciao @Ingmar

Danke fürs Feedback. Soweit so klar. Mein Problem ist aber folgendes:

  • Benutzer A hat bereits eine Bewertung abgegeben (funktioniert)
  • Benutzer B ruft das Thema auf. Dort sollte nun die Bewertung des anderen Benutzers zu sehen sein. Allerdings scheint der Aufruf der Funktion {{ratings(forum_message,message:id)}} nicht die Bewertung anzuzeigen. Meiner Einschätzung nach wird ja einfach das Template eingesetzt und mit den Variablen befüllt - also keinerlei dynamischer Inhalt. Daher frage ich mich, warum es nicht funktioniert bzw. ob es irgendwo noch eine Randbedingung gibt, damit die Bewertung sauber ins Template abgefüllt wird und mittels der genannten Funktion ins "Thread-Flat"-Template eingesetzt wird.
Trotz dem Studium der Templates sowie dem immer geladenen JavaScript Code bin ich noch nicht schlauer geworden, woran das liegen könnte.

Danke für Deine Bemühungen hier etwas Licht ins Dunkle zu bringen.

aes liebs grüessli
rOger


 Antworten

 Beitrag melden
20.08.2019 22:02
avatar  rOgerHZ
#8
rO
User

Zitat von rOgerHZ im Beitrag #7
Trotz dem Studium der Templates sowie dem immer geladenen JavaScript Code bin ich noch nicht schlauer geworden, woran das liegen könnte.


Kann es sein, dass die Bewertungs-Anzeige mittels JavaScript nach dem Dokument-Laden geladen wird? (wenn ich nämlich bei einer bereits getätigten Bewertung noch eine andere Bewertung mache, wird ja per Ajax der Teil neu geladen und dann stimmt er lustigerweise. Das deutet darauf hin, dass ich ein Problem bei der Initialisierung habe).

aes liebs grüessli
rOgerHZ


 Antworten

 Beitrag melden
21.08.2019 11:55
avatar  Ingmar
#9
avatar
Technik

Zitat von rOgerHZ im Beitrag #8
Kann es sein, dass die Bewertungs-Anzeige mittels JavaScript nach dem Dokument-Laden geladen wird?


Nein, eigentlich sollte das - wie du schon oben vermutet hast - alles mit dem Aufruf von {{ratings(forum_message,message:id)}} geladen werden.

Ich bin mir nicht sicher woran das liegen könnte. Da ja nach der Bewertung alles korrekt geladen wird scheinen die Einstellungen zu den Bewertungen auch korrekt zu sein. Eventuell ist das auch gar nicht dein Fehler, sondern ein Problem mit der Vererbung. Da du hier ja auch in Bereichen Änderungen drin hast, die absolut nicht für den Endkunden gedacht sind kann ich da jetzt leider auch nicht ewig suchen wo das Problem liegt.


Du köntnest mal versuchen im rating_integration Template ein paar Debug-Ausgaben zu machen. Die Bewertungen werden ja innerhalb der {{ratingbuttons:hideratings==false.start}}{{ratingbuttons:hideratings==false.end}} Bedingung ausgegeben. Da müsstest du mal rausfinden, woran es genau hakt (ist z.B. hideratings true oder eher {{ratingbuttons:ratings}} false)


 Antworten

 Beitrag melden
21.08.2019 20:03
avatar  rOgerHZ
#10
rO
User

Ciao Ingmar

Zuerst einmal vielen Dank für Deine Feedbacks. Mir ist klar, dass wir uns hier in einem sehr spezifischen Teil der Anpassung bewegen. Auf der anderen Seite ist es natürlich so, dass man bei "anderen" Lösungen den Code selber studieren kann.

Wie auch immer. Ich habe mal das Thread-Flat-Template (und nur dieses) zurück gesetzt. Ergebnis: Bewertung wird korrekt dargestellt. Damit ist soweit das Bewertungs-Template sowie der Code korrekt.

Beim geänderten (meinem) Template ist mir aufgefallen, dass statt der Bewertung die entsprechenden Daten über die Funktion {{integration|integrate(forum_message)}} eingesetzt werden (und damit für mich logisch dann nicht korrekt funktioniert).

Vielleicht kannst Du mir einen Hint dazu geben, warum bzw. unter welchen Umständen dies passieren kann? (die Code-Struktur bzw. Reihenfolge entspricht immer noch der im Original-Template, sprich zuerst Auflisten der Integrations und dann allfällige Ratings).

Danke & aes liebs Grüessli
rOger


 Antworten

 Beitrag melden
26.08.2019 21:38
avatar  rOgerHZ
#11
rO
User

Ciao @Ingmar

Ich habe wohl den Fehler gefunden! Ich habe im Template um den Titel zu bestimmen folgenden Code vorgelagert:

1
2
3
4
5
6
7
8
9
 
<!-- PageTitleCode: Start -->
{{first.start}}{{first.end}}
{{message.startlist}}
{{first==false.start}}
{{topic_title.start}}{{message:title}}{{topic_title.end}}
{{first.start}}true{{first.end}}
{{first==false.end}}
{{message.end}}
<!-- PageTitleCode: End -->
 



Später im Template iteriere ich dann effektiv nochmals über das message-Array. So wie es scheint "zerstört" aber wohl das erste mal über das Array iterieren irgend einen internen Zustand....

Ich werde jetzt mal gucken, wie ich ansonsten den Titel vorab bestimmen kann.

Aes liebs Grüessli
rOgerHZ

PS: Bin froh habe ich es gefunden - war langsam frustrierend....


 Antworten

 Beitrag melden
27.08.2019 10:30
avatar  Ingmar
#12
avatar
Technik

Schön, dass du zumindest mal einen Ansatz hast.

Spontan würde mir allerdings leider kein Grund einfallen, warum durch die Iteration irgendetwas am Array verändert werden sollte.
Es gibt diverse Stellen in den Templates, an denen mit arr.startlist arr.end mehrfach hintereinander durch den selben Array iteriert wird.


 Antworten

 Beitrag melden
27.08.2019 21:48
avatar  rOgerHZ
#13
rO
User

Ciao Ingmar

Ja kann ich mir auch nicht wirklich vorstellen - ist aber so. Entfernt und es funktioniert. Ich bin nun froh dass ich es gefunden habe und dass es nun funktioniert.

Aes liebs Grüessli
rOgerHZ


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!