var PosterNameComponent = Em.Component.extend({
classNames: ['names'],
displayNameOnPosts: Discourse.computed.setting('display_name_on_posts'),
render: function(buffer) {
var post = this.get('post');
if (post) {
var name = post.get('name'),
username = post.get('username'),
linkClass = 'username',
primaryGroupName = post.get('primary_group_name');
if (post.get('staff')) { linkClass += ' staff'; }
if (post.get('new_user')) { linkClass += ' new-user'; }
if (!Em.isEmpty(primaryGroupName)) {
linkClass += ' ' + primaryGroupName;
}
// Main link
buffer.push("" + username + "");
// Add a glyph if we have one
var glyph = this.posterGlyph(post);
if (!Em.isEmpty(glyph)) {
buffer.push(glyph);
}
buffer.push("");
// Are we showing full names?
if (name && (name !== username) && this.get('displayNameOnPosts')) {
name = Handlebars.Utils.escapeExpression(name);
buffer.push("" + name + "");
}
// User titles
var title = post.get('user_title');
if (!Em.isEmpty(title)) {
buffer.push('');
if (Em.isEmpty(primaryGroupName)) {
buffer.push(title);
} else {
buffer.push("" + title + "");
}
buffer.push("");
}
PosterNameComponent.trigger('renderedName', buffer, post);
}
},
click: function(e) {
var $target = $(e.target),
href = $target.attr('href');
if (!Em.isEmpty(href) && href !== '#') {
return true;
} else {
this.sendAction('expandAction', this.get('post'));
}
return false;
},
/**
Overwrite this to give a user a custom font awesome glyph.
@method posterGlyph
@param {Post} the related post.
@return {String} the glyph to render (or null for none)
**/
posterGlyph: function(post) {
var desc;
if(post.get('admin')) {
desc = I18n.t('user.admin_tooltip');
return '';
} else if(post.get('moderator')) {
desc = I18n.t('user.moderator_tooltip');
return '';
}
}
});
// Support for event triggering
PosterNameComponent.reopenClass(Em.Evented);
export default PosterNameComponent;