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;