Je viens de vérifier et le code fonctionne toujours. Toutes les remarques que j’ai mentionnées restent valables.
J’ai essayé de retrouver tous les endroits où le nom complet de l’utilisateur était utilisé comme attribut de titre de son avatar. Le code suivant devrait couvrir tous les cas, à condition que hide_user_profiles_from_public et prioritize_username_in_ux soient activés. Malheureusement, cela nécessite de remplacer quelques modèles, mais ceux-ci changent rarement. J’ai inclus des liens vers les fichiers sur GitHub au cas où vous voudriez vérifier si vous devez mettre à jour une partie du code. La seule modification que j’ai apportée consiste à ajouter ou modifier le namePath afin qu’il utilise le nom d’utilisateur au lieu du nom complet.
<script type="text/discourse-plugin" version="0.8">
api.reopenWidget("poster-name", {
html(attrs) {
let contents = this._super(attrs);
if(contents.length == 2 && api.getCurrentUser()) {
return contents.shift();
}
return contents;
}
});
api.reopenWidget("post-avatar", {
html(attrs) {
attrs.name = "";
return this._super(attrs);
}
});
api.reopenWidget("topic-map-summary", {
html(attrs, state) {
attrs.createdByName = "";
attrs.lastPostName = "";
return this._super(attrs, state);
}
});
api.reopenWidget("topic-participant", {
html(attrs, state) {
attrs.name = "";
return this._super(attrs, state);
}
});
</script>
<!-- https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/components/user-info.hbs -->
<script type="text/x-handlebars" data-template-name="components/user-info">
<div class="user-image">
<div class="user-image-inner">
<a href="{{unbound userPath}}" data-user-card="{{unbound user.username}}">{{avatar user namePath="user.username" imageSize="large"}}</a>
{{#if user.primary_group_name}}
{{avatar-flair
flairURL=user.primary_group_flair_url
flairBgColor=user.primary_group_flair_bg_color
flairColor=user.primary_group_flair_color
groupName=user.primary_group_name}}
{{/if}}
</div>
</div>
<div class="user-detail">
<div class='name-line'>
<span class="username"><a href="{{unbound userPath}}" data-user-card="{{unbound user.username}}">{{format-username user.username}}</a></span>
<span class="name">{{unbound name}}</span>
</div>
<div class="title">{{unbound user.title}}</div>
{{#if hasBlock}}
<div class='details'>
{{yield}}
</div>
{{/if}}
</div>
</script>
<!-- https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/list/posters-column.raw.hbs -->
<script type="text/x-handlebars" data-template-name="list/posters-column.raw">
<td class='posters'>
{{#each posters as |poster|}}
<a href="{{poster.user.path}}" data-user-card="{{poster.user.username}}" class="{{poster.extraClasses}}">{{avatar poster avatarTemplatePath="user.avatar_template" usernamePath="user.username" namePath="user.username" imageSize="small"}}</a>
{{/each}}
</td>
</script>
<!-- https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/components/latest-topic-list-item.hbs -->
<script type="text/x-handlebars" data-template-name="components/latest-topic-list-item">
<div class='topic-poster'>
{{#user-link user=topic.lastPoster}}
{{avatar topic.lastPoster namePath="topic.lastPoster" imageSize="large"}}
{{/user-link}}
</div>
<div class='main-link'>
<div class='top-row'>
{{raw "topic-status" topic=topic}}
{{topic-link topic}}
{{#if topic.featured_link}}
{{topic-featured-link topic}}
{{/if}}
{{topic-post-badges newPosts=topic.totalUnread unseen=topic.unseen url=topic.lastUnreadUrl}}
</div>
<div class='bottom-row'>
{{category-link topic.category}}
{{discourse-tags topic mode="list"}}
</div>
</div>
<div class='topic-stats'>
{{raw "list/posts-count-column" topic=topic tagName="div"}}
<div class="topic-last-activity">
<a href="{{topic.lastPostUrl}}" title="{{topic.bumpedAtTitle}}">{{format-date topic.bumpedAt format="tiny" noTitle="true"}}</a>
</div>
</div>
</script>
Il ne faut pas considérer cela comme une méthode de sécurité à 100 %, mais cela permettra de garder ces informations hors de portée de toute personne qui ne cherche pas activement à les trouver.
Il serait agréable, à un moment donné, d’avoir cette fonctionnalité intégrée au comportement de base dès que prioritize_username_in_ux est activé.
@DavidO, avez-vous lu Beginner's guide to using Discourse Themes ? Si vous avez créé un composant de thème et ajouté le code dans la section commune <head>, assurez-vous d’ajouter ce composant à votre thème principal.