Ich versuche, eine Themenkomponente zu erstellen, die die Vorlage für Benutzerprofile basierend auf der Gruppenzugehörigkeit des angesehenen Benutzers überschreibt. Ich möchte, dass Profile für anonyme Benutzer den Bereich #user-content überhaupt nicht anzeigen, es sei denn, der aktuelle Benutzer ist ein Mitarbeiter. Ich habe eine Gruppe erstellt, zu der anonyme Benutzer automatisch hinzugefügt werden, aber ich habe Schwierigkeiten, die Vorlage bedingt zu überschreiben.
Basierend auf Discourse-Vorlagen aus einem Thema überschreiben und Hintergrundvideos zu bestimmten Benutzerprofilen hinzufügen habe ich versucht, user/summary.hbs wie folgt zu überschreiben:
<script type="text/discourse-plugin" version="0.8">
const TARGET_GROUP = "anon"
api.registerConnectorClass('above-user-summary-stats', 'user-summary', {
setupComponent(args, component) {
const inGroup = [...args.model.groups].filter(g => g.name === TARGET_GROUP)
const isAnon = inGroup.length ? true : false;
component.setProperties({isAnon})
}
});
</script>
<script type="text/x-handlebars" data-template-name="user/summary">
<DSection @pageClass="user-summary" @tagName="">
<div class="user-content" id="user-content">
<PluginOutlet
@name="above-user-summary-stats"
@args={{hash model=this.model user=this.user}}
/>
{{log isAnon}}
</div>
</DSection>
</script>
Dies überschreibt die Vorlage für alle Profile, aber isAnon ist undefiniert. Ich glaube, ich verstehe nicht, wie ich die Logik für Handlebars erstellen kann, um beim Überschreiben zu prüfen, anstatt zu einem Plugin-Outlet hinzuzufügen.
Ist registerConnectorClass hierfür korrekt? Ist eine Vorlagenüberschreibung hier notwendig? Ich habe die Plugin-API und User.rb durchgesehen und herausgefunden, wie man prüft, ob der aktuelle Benutzer im anonymen Modus ist, aber ich habe keinen einfachen Zugriff außer auf die Gruppe gefunden, um zu prüfen, ob der angesehene Benutzer anonym ist. Ich bin mit Rails, JS und Handlebars vertraut, aber neu bei Ember und Discourse.