From cc76087f59b5039ec60d5458345a18354fd24e0e Mon Sep 17 00:00:00 2001 From: James Kiesel Date: Sun, 30 Nov 2014 15:09:34 +1300 Subject: [PATCH] Add new private message button on topics list That'll teach me to wildly refactor things. --- .../discourse/controllers/user-topics-list.js.es6 | 2 +- app/assets/javascripts/discourse/routes/user.js.es6 | 6 +++--- .../discourse/templates/list/user_topics_list.hbs | 6 ++++++ app/assets/stylesheets/common/base/user.scss | 3 +++ app/serializers/user_serializer.rb | 7 +++++++ config/locales/client.en.yml | 1 + 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 index c39d34df951..58320d8c62c 100644 --- a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 @@ -1,7 +1,7 @@ import ObjectController from 'discourse/controllers/object'; // Lists of topics on a user's page. -export default ObjectController.extend({ +export default ObjectController.extend(Discourse.HasCurrentUser, { needs: ["application"], hideCategory: false, showParticipants: false, diff --git a/app/assets/javascripts/discourse/routes/user.js.es6 b/app/assets/javascripts/discourse/routes/user.js.es6 index 910abb196ff..ac4ddb49cfd 100644 --- a/app/assets/javascripts/discourse/routes/user.js.es6 +++ b/app/assets/javascripts/discourse/routes/user.js.es6 @@ -15,11 +15,11 @@ export default Discourse.Route.extend({ Discourse.logout(); }, - composePrivateMessage: function() { - var user = this.modelFor('user'); + composePrivateMessage: function(user) { + var recipient = user ? user.username : ''; return this.controllerFor('composer').open({ action: Discourse.Composer.PRIVATE_MESSAGE, - usernames: user.get('username'), + usernames: recipient, archetypeId: 'private_message', draftKey: 'new_private_message' }); diff --git a/app/assets/javascripts/discourse/templates/list/user_topics_list.hbs b/app/assets/javascripts/discourse/templates/list/user_topics_list.hbs index ac54a240bfa..f0270c6ad1c 100644 --- a/app/assets/javascripts/discourse/templates/list/user_topics_list.hbs +++ b/app/assets/javascripts/discourse/templates/list/user_topics_list.hbs @@ -1,3 +1,9 @@ +{{#if currentUser.can_send_private_messages}} +
+ {{fa-icon "envelope"}}{{i18n user.new_private_message}} +
+{{/if}} + {{basic-topic-list topicList=model hideCategory=hideCategory showParticipants=showParticipants diff --git a/app/assets/stylesheets/common/base/user.scss b/app/assets/stylesheets/common/base/user.scss index 8f8d35fded2..1e77ac0b824 100644 --- a/app/assets/stylesheets/common/base/user.scss +++ b/app/assets/stylesheets/common/base/user.scss @@ -73,3 +73,6 @@ } } +.new-private-message { + margin-bottom: 15px; +} diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 1313db0b76b..d7560c6c89a 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -45,6 +45,7 @@ class UserSerializer < BasicUserSerializer :can_edit_email, :can_edit_name, :stats, + :can_send_private_messages, :can_send_private_message_to_user, :bio_excerpt, :trust_level, @@ -178,6 +179,12 @@ class UserSerializer < BasicUserSerializer UserAction.stats(object.id, scope) end + # Needed because 'send_private_message_to_user' will always return false + # when the current user is being serialized + def can_send_private_messages + scope.can_send_private_message?(Discourse.system_user) + end + def can_send_private_message_to_user scope.can_send_private_message?(object) end diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 317d37e4215..f026183e879 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -293,6 +293,7 @@ en: mute: "Mute" edit: "Edit Preferences" download_archive: "download archive of my posts" + new_private_message: "New Private Message" private_message: "Private Message" private_messages: "Messages" activity_stream: "Activity"