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 bc70d42c82..735396ad91 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 09a7ee2090..6316e4f788 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 535d7f8338..89de4df924 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 e6c85335ce..2c29326bbd 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 4533d320bc..38be5f6061 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 aeb4c6f8df..7fa6f06f25 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"