Überschreiben von .gjs-Dateien - nicht möglich?

Hallo,

mit einem aktuellen Update ist eine unserer Komponenten kaputtgegangen. Die Komponente hat zuvor den Inline-Zitat-Button erweitert, der quote-button.hbs war. Diese Datei existiert nicht mehr – stattdessen wurde der gesamte Code in eine gjs-Datei post-text-selection-toolbar.gjs verschoben, und wenn ich versuche, sie auf die „alte Weise“ zu überschreiben, beschwert sich der Browser mit der folgenden Meldung.

component-templates.js:62 [discourse/theme-48/discourse/templates/components/post-text-selection-toolbar] post-text-selection-toolbar wurde mit gjs erstellt und seine Vorlage kann nicht überschrieben werden. Überschreiben wird ignoriert.

Bedeutet das, dass dieses UI-Element in Discourse nur über die dort definierten PluginOutlets angesprochen werden kann?

  <PluginOutlet
                @name="quote-share-buttons-after"
                @connectorTagName="span"
              />

 <PluginOutlet @name="quote-button-after" @connectorTagName="div" />

Was ist, wenn ich mehr Kontrolle über den Zustand der Buttons und die neu hinzugefügten benötige? Ich habe das Gefühl, dass dies die Funktionalität einschränkt.

Weiß jemand, wie man diesen Fall handhabt?

3 „Gefällt mir“

Hallo :waving_hand:

Ich denke, das ist jetzt mit api.renderInOutlet möglich?

5 „Gefällt mir“

Hallo @Sören_Geier – das ist richtig, Sie müssen Plugin-Outlets verwenden, um Änderungen in diesem Teil der Benutzeroberfläche vorzunehmen. Plugin-Outlets sind eine wesentlich robustere Methode zur Erweiterung von Dingen und werden bei zukünftigen Discourse-Core-Updates zuverlässiger sein.

Wenn die vorhandenen Plugin-Outlets für Ihren Anwendungsfall nicht funktionieren, teilen Sie uns dies bitte mit, und wir werden gerne neue einführen.

In diesem Fall sind Sie vielleicht an dem Vorschlag in DEV: Add outlet and API for adding/controlling post selection buttons by keegangeorge · Pull Request #23782 · discourse/discourse · GitHub interessiert. Dieser führt ein „Wrapper-Plugin-Outlet“ ein, das es Themes/Plugins ermöglicht, die Kernimplementierung bei Bedarf vollständig zu ersetzen.

Dies ist in der Tat eine alternative Methode, um Dinge in Plugin-Outlets zu rendern. Es handelt sich jedoch eher um eine Code-Stil-Sache – sie führt keine neuen Funktionen im Vergleich zu /connectors/...-Dateien ein.

7 „Gefällt mir“