グループに基づいてユーザープロファイルテンプレートをオーバーライドする

匿名ユーザーのグループメンバーシップに基づいて、ユーザープロファイルテンプレートをオーバーライドするテーマコンポーネントを作成しようとしています。現在のユーザーがスタッフでない限り、匿名ユーザーのプロファイルでは #user-content エリアをまったく表示したくありません。匿名ユーザーが自動的に追加されるグループを作成しましたが、テンプレートを条件付きでオーバーライドするのに苦労しています。

テーマまたはプラグインから Discourse テンプレートをオーバーライドする特定のユーザープロファイルに背景ビデオを追加する に基づいて、次のように user/summary.hbs をオーバーライドしようとしています。

<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>

これによりすべてのプロファイルのテンプレートがオーバーライドされますが、isAnon が未定義であるため、オーバーライド時にロジックを作成する方法を理解していないようです。プラグインアウトレットに追加するのではなく、handlebars がチェックするためのロジックを作成する方法を理解していないようです。

registerConnectorClass はこれに使用して正しいですか?ここでテンプレートのオーバーライドが必要ですか? プラグイン API と User.rb を確認しましたが、現在のユーザーが匿名モードであるかどうかを確認する方法はわかりましたが、表示されているユーザーが匿名であるかどうかを確認するためのグループ以外の簡単なアクセスは見つかりませんでした。Rails、js、handlebars には慣れていますが、Ember と Discourse は初めてです。

「いいね!」 1

もし他の誰かがこれを見つけた場合、最終的にやったことは、ユーザー、user/summary、user/activity のテンプレートをオーバーライドすることでした。これは、ログインユーザーに見られたくないセクションを {{#if (or viewingSelf currentUser.staff)}} で囲むことによって行いました。これにより、指定されたグループのユーザーだけでなく、すべてのユーザーのプロファイルテンプレートがオーバーライドされますが、私のユースケースではこれで十分だと判断し、ユーザーにより一般的なプライバシーを提供しました。私が考案したテンプレートは、ユーザーがトピックを特集することを選択できるようにしつつ、自分自身やスタッフが見る場合を除き、他のすべての概要統計、トピック、アクティビティを非表示にします。

私のユースケースは、教室での使用のための匿名モードに関するこのトピックに似ています。つまり、ユーザーまたは管理者が、ログインしているユーザーに対しても、プロフィールのどの部分を表示または非表示にするかをより詳細に制御できる、簡単にアクセスできる方法があると良いでしょう。たとえば、ヘルスサポートグループフォーラムでは、anonグループに匿名アカウントを持たせ、anonグループのアクティビティページまたはタブを表示しないように設定できると便利です。

「いいね!」 1