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 @@
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"