diff --git a/app/assets/javascripts/discourse/components/poster-name.js.es6 b/app/assets/javascripts/discourse/components/poster-name.js.es6 index 284376d3ba0..3817b2d33d6 100644 --- a/app/assets/javascripts/discourse/components/poster-name.js.es6 +++ b/app/assets/javascripts/discourse/components/poster-name.js.es6 @@ -34,8 +34,6 @@ var PosterNameComponent = Em.Component.extend({ } buffer.push(""); - - // Are we showing full names? if (name && this.get('displayNameOnPosts') && (this.sanitizeName(name) !== this.sanitizeName(username))) { name = Handlebars.Utils.escapeExpression(name); diff --git a/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 b/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 index a0ec468b1ae..5130d1a9b82 100644 --- a/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 +++ b/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 @@ -2,7 +2,9 @@ export default Discourse.ObjectController.extend({ needs: ['topic'], visible: false, user: null, + username: null, participant: null, + avatar: null, postStream: Em.computed.alias('controllers.topic.postStream'), enoughPostsForFiltering: Em.computed.gte('participant.post_count', 2), @@ -20,22 +22,25 @@ export default Discourse.ObjectController.extend({ showMoreBadges: Em.computed.gt('moreBadgesCount', 0), - show: function(post) { + show: function(username, uploadedAvatarId) { + var url = "/users/" + username; // Don't show on mobile if (Discourse.Mobile.mobileView) { - Discourse.URL.routeTo(post.get('usernameUrl')); + Discourse.URL.routeTo(url); return; } - var currentPostId = this.get('id'), + var currentUsername = this.get('username'), wasVisible = this.get('visible'); - this.setProperties({model: post, visible: true}); + this.set('avatar', {username: username, uploaded_avatar_id: uploadedAvatarId}); + + this.setProperties({visible: true, username: username}); // If we click the avatar again, close it. - if (post.get('id') === currentPostId && wasVisible) { - this.setProperties({ visible: false, model: null }); + if (username === currentUsername && wasVisible) { + this.setProperties({ visible: false, username: null, avatar: null }); return; } @@ -44,13 +49,14 @@ export default Discourse.ObjectController.extend({ // Retrieve their participants info var participants = this.get('topic.details.participants'); if (participants) { - this.set('participant', participants.findBy('username', post.get('username'))); + this.set('participant', participants.findBy('username', username)); } var self = this; self.set('user', null); - Discourse.User.findByUsername(post.get('username')).then(function (user) { + Discourse.User.findByUsername(username).then(function (user) { self.set('user', user); + self.set('avatar', user); }); }, diff --git a/app/assets/javascripts/discourse/helpers/application_helpers.js b/app/assets/javascripts/discourse/helpers/application_helpers.js index 46035e1f3f5..43b2a7045f2 100644 --- a/app/assets/javascripts/discourse/helpers/application_helpers.js +++ b/app/assets/javascripts/discourse/helpers/application_helpers.js @@ -189,7 +189,7 @@ Handlebars.registerHelper('avatar', function(user, options) { @for Handlebars **/ Em.Handlebars.helper('bound-avatar', function(user, size, uploadId) { - + if (Em.isEmpty(user)) { return; } var username = Em.get(user, 'username'); if(arguments.length < 4){ diff --git a/app/assets/javascripts/discourse/routes/topic_route.js b/app/assets/javascripts/discourse/routes/topic_route.js index e5c57f056b9..48a0938e535 100644 --- a/app/assets/javascripts/discourse/routes/topic_route.js +++ b/app/assets/javascripts/discourse/routes/topic_route.js @@ -14,8 +14,15 @@ Discourse.TopicRoute = Discourse.Route.extend({ actions: { // Modals that can pop up within a topic - showPosterExpansion: function(post) { - this.controllerFor('poster-expansion').show(post); + expandPostUser: function(post) { + this.controllerFor('poster-expansion').show(post.get('username'), post.get('uploaded_avatar_id')); + }, + + expandPostUsername: function(username) { + username = username.replace(/^@/, ''); + if (!Em.isEmpty(username)) { + this.controllerFor('poster-expansion').show(username); + } }, composePrivateMessage: function(user) { diff --git a/app/assets/javascripts/discourse/templates/embedded_post.js.handlebars b/app/assets/javascripts/discourse/templates/embedded_post.js.handlebars index a2007af2106..acc40ed72bc 100644 --- a/app/assets/javascripts/discourse/templates/embedded_post.js.handlebars +++ b/app/assets/javascripts/discourse/templates/embedded_post.js.handlebars @@ -2,13 +2,13 @@