Benutzerprofilvorlage basierend auf Gruppe überschreiben

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.

1 „Gefällt mir“

Wenn jemand anderes auf diesen Beitrag stößt, habe ich am Ende die Vorlagen für Benutzer, Benutzer/Zusammenfassung und Benutzer/Aktivität überschrieben, indem ich {{#if (or viewingSelf currentUser.staff)}} um die Abschnitte hinzugefügt habe, die ich nicht von angemeldeten Benutzern sehen lassen wollte. Dies überschreibt die Profilvorlagen für alle Benutzer und nicht nur für Benutzer in einer bestimmten Gruppe, aber ich entschied, dass dies für meinen Anwendungsfall gut genug war, um den Benutzern etwas mehr allgemeine Privatsphäre zu geben. Die Vorlage, die ich ausgearbeitet habe, erlaubte es den Benutzern immer noch, ein Thema hervorzuheben, verbarg aber alle anderen Zusammenfassungsstatistiken, Themen und Aktivitäten, außer wenn sie vom Benutzer selbst und vom Personal eingesehen wurden.

Mein Anwendungsfall ähnelt diesem Thema zum anonymen Modus für den Unterricht, da es schön wäre, eine leicht zugängliche Möglichkeit für Benutzer oder Administratoren zu haben, detailliertere Kontrolle darüber zu erhalten, welche Teile des Profils angezeigt oder ausgeblendet werden sollen, selbst für angemeldete Benutzer. Zum Beispiel wäre es in einem Forum zur Gesundheitsunterstützung schön, anonyme Konten in der Anon-Gruppe zu haben und dann so zu konfigurieren, dass die Aktivitätsseite oder -registerkarte für die Anon-Gruppe nicht angezeigt wird.

1 „Gefällt mir“