From dbd2332b74f7e38ab5bfa09f6a6fa17b009e4baf Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 7 Nov 2013 16:34:18 -0500 Subject: [PATCH] Public user profile page shows if the user is suspended and why. --- .../modal/admin_suspend_user.js.handlebars | 4 ++-- .../javascripts/discourse/models/user.js | 6 ++++++ .../templates/user/user.js.handlebars | 8 ++++++++ app/assets/stylesheets/desktop/user.scss | 4 ++++ app/serializers/user_serializer.rb | 19 ++++++++++++++++++- config/locales/client.en.yml | 6 ++++-- 6 files changed, 42 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/admin/templates/modal/admin_suspend_user.js.handlebars b/app/assets/javascripts/admin/templates/modal/admin_suspend_user.js.handlebars index bc70d42c82d..735396ad91a 100644 --- a/app/assets/javascripts/admin/templates/modal/admin_suspend_user.js.handlebars +++ b/app/assets/javascripts/admin/templates/modal/admin_suspend_user.js.handlebars @@ -2,9 +2,9 @@
{{i18n admin.user.suspend_duration}} {{textField value=duration maxlength="5" autofocus="autofocus" class="span2"}} - {{i18n admin.user.suspend_duration_units}} + {{i18n admin.user.suspend_duration_units}}

- {{i18n admin.user.suspend_reason_label}} + {{{i18n admin.user.suspend_reason_label}}}

{{textField value=reason class="span8"}}
diff --git a/app/assets/javascripts/discourse/models/user.js b/app/assets/javascripts/discourse/models/user.js index 09a7ee20908..6316e4f7883 100644 --- a/app/assets/javascripts/discourse/models/user.js +++ b/app/assets/javascripts/discourse/models/user.js @@ -97,6 +97,12 @@ Discourse.User = Discourse.Model.extend({ return Discourse.Site.currentProp('trustLevels').findProperty('id', parseInt(this.get('trust_level'), 10)); }.property('trust_level'), + isSuspended: Em.computed.equal('suspended', true), + + suspendedTillDate: function() { + return Discourse.Formatter.longDate(this.get('suspended_till')); + }.property('suspended_till'), + /** Changes this user's username. diff --git a/app/assets/javascripts/discourse/templates/user/user.js.handlebars b/app/assets/javascripts/discourse/templates/user/user.js.handlebars index 535d7f83383..89de4df9244 100644 --- a/app/assets/javascripts/discourse/templates/user/user.js.handlebars +++ b/app/assets/javascripts/discourse/templates/user/user.js.handlebars @@ -42,6 +42,14 @@

{{name}}

{{{bio_excerpt}}}
+ + {{#if isSuspended}} +
+ + {{i18n user.suspended_notice date="suspendedTillDate"}}
+ {{i18n user.suspended_reason}} {{suspend_reason}} +
+ {{/if}}
diff --git a/app/assets/stylesheets/desktop/user.scss b/app/assets/stylesheets/desktop/user.scss index e6c85335ced..2c29326bbd1 100644 --- a/app/assets/stylesheets/desktop/user.scss +++ b/app/assets/stylesheets/desktop/user.scss @@ -166,6 +166,10 @@ background-color: white; } + .suspended { + color: #f77; + } + .primary { margin-top: 20px; float: left; diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 4533d320bc3..38be5f60614 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -17,7 +17,10 @@ class UserSerializer < BasicUserSerializer :trust_level, :moderator, :admin, - :title + :title, + :suspended, + :suspend_reason, + :suspended_till has_one :invited_by, embed: :object, serializer: BasicUserSerializer @@ -96,4 +99,18 @@ class UserSerializer < BasicUserSerializer SiteSetting.enable_names? end + def suspended + object.suspended? + end + + def include_suspended? + object.suspended? + end + def include_suspend_reason? + object.suspended? + end + def include_suspended_till? + object.suspended? + end + end diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index aeb4c6f8df4..7fa6f06f25e 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -216,6 +216,8 @@ en: moderator: "{{user}} is a moderator" admin: "{{user}} is an admin" deleted: "(deleted)" + suspended_notice: "This user is suspended until {{date}}." + suspended_reason: "Reason: " messages: all: "All" @@ -1339,9 +1341,9 @@ en: user: suspend_failed: "Something went wrong suspending this user {{error}}" unsuspend_failed: "Something went wrong unsuspending this user {{error}}" - suspend_duration: "How long would you like to suspend the user for?" + suspend_duration: "How long will the user be suspended for?" suspend_duration_units: "(days)" - suspend_reason_label: "Why are you suspending? When the user tries to log in, they will see this text. Keep it short." + suspend_reason_label: "Why are you suspending? This text will be visible to everyone on this user's profile page, and will be shown to the user when they try to log in. Keep it short." suspend_reason: "Reason" suspended_by: "Suspended by" delete_all_posts: "Delete all posts"