Sto cercando di creare un componente del tema che sovrascriva il template del profilo utente in base all’appartenenza al gruppo dell’utente visualizzato. Vorrei che i profili degli utenti anonimi non mostrassero affatto l’area #user-content a meno che currentUser non sia staff. Ho creato un gruppo a cui gli utenti anonimi vengono aggiunti automaticamente, ma ho difficoltà a sovrascrivere condizionalmente il template.
Basandomi su Overriding Discourse Templates from a Theme e Adding background videos to certain user profiles ho provato a sovrascrivere user/summary.hbs in questo modo:
<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>
Questo sovrascrive il template per tutti i profili, ma isAnon è undefined, quindi penso di non aver capito come creare la logica per handlebars per controllare quando sovrascrivere invece di aggiungere a un plugin outlet.
registerConnectorClass è corretto da usare per questo? È necessaria una sovrascrittura del template qui? Ho esaminato l’API dei plugin e User.rb e ho capito come verificare se l’utente corrente è in modalità anonima, ma non ho trovato un accesso facile oltre al gruppo per verificare se l’utente visualizzato è anonimo. Ho familiarità con Rails, js e handlebars ma sono nuovo a Ember e Discourse.