Fehler beim Ersetzen von topic-list-item.raw.hbs / topic-list-item.hbr auf Mobilgeräten

Hallo zusammen,

ich arbeite an einem Theme, um verschiedene Aspekte des standardmäßigen Discourse anzupassen. Dabei muss ich unter anderem das topic-list-item anpassen, was zunächst recht einfach erscheint: Ich füge in meinem Theme eine Datei unter dem Pfad javascripts/discourse/templates/components/topic-list-item.hbs hinzu und kann dort meinen Code einfügen. Dennoch beginnen hier die Fragen.

Es gibt eine Methode in der Komponente für diese Vorlage namens renderTopicListItem, die eine Eigenschaft namens topicListItemContents setzt, die standardmäßig gerendert wird. Schaut mal:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/components/topic-list-item.hbs

Die erste Frage ist WARUM? Warum müssen wir das so machen? Warum nicht einfach den Handlebars-Code wie üblich verwenden?

Um den Kerncode nicht zu stark zu beeinflussen, habe ich beschlossen, topic-list-item so zu lassen und stattdessen topic-list-item.raw.hbs in meinem Theme zu ersetzen. Das funktioniert problemlos.

Ich gehe jedoch davon aus, dass das Hinzufügen einer Datei wie javascripts/discourse/templates/mobile/list/topic-list-item.raw.hbs in meinem Theme die mobile Ansicht ersetzt – doch das tut es nicht.

Die Methode findRawTemplate gibt weiterhin die Standard-Mobile-Vorlage von Discourse zurück, die Folgendes enthält:

Selbst bei manueller Bearbeitung in meinem lokalen Discourse-Projekt gelingt es mir nicht, die mobile Version mit den Änderungen zu aktualisieren.

Ich hoffe, die Erklärung ist verständlich. Hat jemand Erfahrung damit? Es sieht aktuell wirklich fehlerhaft aus, und vielleicht möchten wir es beheben, falls es wirklich kaputt ist (ich kann das gerne tun, wenn ich etwas mehr verstehe, was hier los ist).

In der Zwischenzeit suche ich weiter selbst nach einer Antwort und werde über Neuigkeiten berichten. Unten ein kleines GIF dessen, was ich lokal habe.

http://g.recordit.co/AtOJlltJ8o

UPDATE: Ich habe auch raw auf .hbr aktualisiert, da ein kürzlichiger Commit die Dateien geändert hat, aber es funktioniert immer noch nicht.

Ich habe es gerade getestet und sehe das gleiche Problem… Ich kann diese Vorlage überhaupt nicht überschreiben. Das scheint in den letzten ein oder zwei Tagen passiert zu sein. Könnte das damit zusammenhängen, dass man auf hbr umgestellt hat, @markvanlan?

Als ich dieses Thema erstellt habe, war meine lokale Discourse-Version vom 17. Januar, wenn ich mich nicht irre. Ich hatte mit dieser Version bereits das Problem, und auch nach dem Update auf die neuesten Änderungen und der Umbenennung von raw.hbs in hbr bestehen die gleichen Probleme weiterhin.

Bisher habe ich das Thema durch Anpassungen in javascripts/discourse/templates/components/topic-list-item.hbs gelöst. Idealerweise sollten die Rohvorlagen jedoch genauso funktionieren wie die anderen Vorlagen (hinsichtlich Substitution und Anpassung).

@awesomerobot Wenn du den Commit direkt vor der hbr-Änderung auscheckst, funktioniert es dann?

Ah ja, danke für das Datum, @duranmla… Das ist ein etwas älteres Problem, @markvanlan. Ich suche gerade danach.

Info: Ich habe dieses Problem nicht bei Topic List Previews (legacy) festgestellt, das die mobile Topic-Liste-Element-Rohvorlage überschreibt. https://github.com/paviliondev/discourse-topic-previews/tree/master/assets/javascripts/discourse/templates/mobile/list Ich habe dies jedoch nur bei „tests-passed

Okay, ich hatte etwas Schwierigkeiten, das Problem zu finden, da ich nach dem Zurücksetzen die Anpassung erst entfernen und dann erneut anwenden musste, um das Problem zu reproduzieren.

Ich denke, es liegt tatsächlich an dem hbr-Commit von @markvanlan (https://github.com/discourse/discourse/commit/3e897749084faeb29eb9a524d3f3b3f1d46a8738), entschuldige bitte mein Zögern.

Zum Testen habe ich dies über den Anpassungsbereich im Admin-Bereich in das <head> des aktuellen Themes eingefügt:

<script type='text/x-handlebars' data-template-name='mobile/list/topic-list-item.raw'>
  test
</script>

Vor diesem Commit funktioniert das einwandfrei. Sobald ich diesen Commit anwende und die Anpassung erneut hinzufüge, wird die Vorlage ignoriert.

Vielleicht war ich doch verwirrt, ich dachte, es sei älter als das.
Ich werde diesen Thread sowieso im Auge behalten. Danke für die schnelle Antwort, um das aufzudecken @awesomerobot

Es ist bereits eine Korrektur enthalten, wenn du die neueste Version holst.

Mark wird weitere Arbeiten durchführen, um herauszufinden, warum die Tests bestanden haben, obwohl dies fehlerhaft war.

Trotzdem habe ich das Update durchgeführt, und der Fehler bleibt bestehen, beim Arbeiten mit der Theme-Projektstruktur (die wahrscheinlich die am häufigsten verwendete für mittlere und große Projekte ist). Hier ist das Video, in dem ich den Fehler zeige: https://www.loom.com/share/d3f437347c8f4d5aa4dd1c7ce08e1bf9

PS: Ich lasse das Video vorerst online, falls es jemandem hilft, das Problem zu verstehen und nachzuvollziehen. Ich werde das Video nach einigen Wochen löschen müssen. :grimacing:

HINWEIS: Ich habe es auch versucht, indem ich die Datei wieder in topic-list-item.raw.hbs umbenannt habe, anstatt topic-list-item.hbr, und das Problem bleibt dasselbe.

Bei mir funktioniert es mit dem Verzeichnis ‘javascripts’ (egal ob mit der alten oder neuen Erweiterung).

Etwas, das ich gestern Abend festgestellt habe: Möglicherweise müssen Sie die Datei bearbeiten und speichern oder die Datei entfernen und erneut hinzufügen (die Vorlagen werden beim Speichern kompiliert, daher ist es möglich, dass Sie vorübergehend in dem fehlerhaften Zustand stecken bleiben).