diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index bcef6b4826..8130901ad0 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -371,7 +371,6 @@ export default DiscourseController.extend({ // If it's the same draft, just open it up again. if (composerModel.get('composeState') === Discourse.Composer.DRAFT && composerModel.get('draftKey') === opts.draftKey) { - composerModel.set('composeState', Discourse.Composer.OPEN); return resolve(); } diff --git a/app/assets/javascripts/discourse/controllers/user-card.js.es6 b/app/assets/javascripts/discourse/controllers/user-card.js.es6 index ce1c665f86..7701837f38 100644 --- a/app/assets/javascripts/discourse/controllers/user-card.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-card.js.es6 @@ -9,6 +9,7 @@ export default ObjectController.extend({ avatar: null, userLoading: null, cardTarget: null, + post: null, postStream: Em.computed.alias('controllers.topic.postStream'), enoughPostsForFiltering: Em.computed.gte('participant.post_count', 2), @@ -31,7 +32,7 @@ export default ObjectController.extend({ return img && img.indexOf('fa-') !== 0; }.property('user.card_badge.image'), - show: function(username, target) { + show: function(username, postId, target) { // XSS protection (should be encapsulated) username = username.toString().replace(/[^A-Za-z0-9_]/g, ""); var url = "/users/" + username; @@ -43,14 +44,14 @@ export default ObjectController.extend({ } var currentUsername = this.get('username'), - wasVisible = this.get('visible'); + wasVisible = this.get('visible'), + post = this.get('viewingTopic') && postId ? this.get('controllers.topic.postStream').findLoadedPost(postId) : null; - this.set('avatar', null); - this.set('username', username); + this.setProperties({ avatar: null, post: post, username: username }); // If we click the avatar again, close it (unless its diff element on the screen). if (target === this.get('cardTarget') && wasVisible) { - this.setProperties({ visible: false, username: null, avatar: null, cardTarget: null }); + this.setProperties({ visible: false, username: null, cardTarget: null }); return; } @@ -67,11 +68,9 @@ export default ObjectController.extend({ this.set('participant', participants.findBy('username', username)); } - var self = this; - self.set('user', null); - self.set('userLoading', username); - self.set('cardTarget', target); + this.setProperties({ user: null, userLoading: username, cardTarget: target }); + var self = this; Discourse.User.findByUsername(username).then(function (user) { user = Discourse.User.create(user); self.setProperties({ user: user, avatar: user, visible: true}); @@ -82,8 +81,7 @@ export default ObjectController.extend({ }, close: function() { - this.set('visible', false); - this.set('cardTarget', null); + this.setProperties({ visible: false, cardTarget: null }); }, actions: { diff --git a/app/assets/javascripts/discourse/routes/application.js.es6 b/app/assets/javascripts/discourse/routes/application.js.es6 index d185e9cc4f..f8aa629589 100644 --- a/app/assets/javascripts/discourse/routes/application.js.es6 +++ b/app/assets/javascripts/discourse/routes/application.js.es6 @@ -25,10 +25,10 @@ const ApplicationRoute = Discourse.Route.extend({ this.controllerFor('topic-entrance').send('show', data); }, - composePrivateMessage(user) { + composePrivateMessage(user, post) { const self = this; this.transitionTo('userActivity', user).then(function () { - self.controllerFor('user-activity').send('composePrivateMessage', user); + self.controllerFor('user-activity').send('composePrivateMessage', user, post); }); }, diff --git a/app/assets/javascripts/discourse/routes/user.js.es6 b/app/assets/javascripts/discourse/routes/user.js.es6 index 6f65c7c390..bf8e231235 100644 --- a/app/assets/javascripts/discourse/routes/user.js.es6 +++ b/app/assets/javascripts/discourse/routes/user.js.es6 @@ -15,13 +15,16 @@ export default Discourse.Route.extend({ Discourse.logout(); }, - composePrivateMessage: function(user) { - var recipient = user ? user.get('username') : ''; + composePrivateMessage: function(user, post) { + var recipient = user ? user.get('username') : '', + reply = post ? window.location.protocol + "//" + window.location.host + post.get("url") : null + return this.controllerFor('composer').open({ action: Discourse.Composer.PRIVATE_MESSAGE, usernames: recipient, archetypeId: 'private_message', - draftKey: 'new_private_message' + draftKey: 'new_private_message', + reply: reply }); }, diff --git a/app/assets/javascripts/discourse/templates/user-card.hbs b/app/assets/javascripts/discourse/templates/user-card.hbs index 5b0f4e5b23..1db3b3f328 100644 --- a/app/assets/javascripts/discourse/templates/user-card.hbs +++ b/app/assets/javascripts/discourse/templates/user-card.hbs @@ -24,7 +24,7 @@