Je crée un composant de thème qui remplace le modèle de profil utilisateur en fonction de l’appartenance du groupe de l’utilisateur consulté. J’aimerais que les profils des utilisateurs anonymes n’affichent pas du tout la zone #user-content, sauf si currentUser est un membre du personnel. J’ai créé un groupe auquel les utilisateurs anonymes sont automatiquement ajoutés, mais j’ai du mal à remplacer conditionnellement le modèle.
Basé sur Overriding Discourse Templates from a Theme et Adding background videos to certain user profiles, j’ai essayé de remplacer user/summary.hbs comme suit :
<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>
Cela remplace le modèle pour tous les profils, mais isAnon est indéfini, donc je pense que je ne comprends pas comment créer la logique pour que handlebars vérifie lors du remplacement au lieu d’ajouter à un plugin outlet.
Est-ce que registerConnectorClass est correct à utiliser pour cela ? Une substitution de modèle est-elle nécessaire ici ? J’ai parcouru l’API des plugins et User.rb et j’ai compris comment vérifier si l’utilisateur actuel est en mode anonyme, mais je n’ai pas trouvé d’accès facile autre que le groupe pour vérifier si l’utilisateur consulté est anonyme. Je connais Rails, js et handlebars, mais je suis nouveau sur Ember et Discourse.