diff --git a/app/assets/javascripts/admin/templates/modal/admin-suspend-user.hbs b/app/assets/javascripts/admin/templates/modal/admin-suspend-user.hbs
index 6de8afdd3f6..cfbd21d4b9b 100644
--- a/app/assets/javascripts/admin/templates/modal/admin-suspend-user.hbs
+++ b/app/assets/javascripts/admin/templates/modal/admin-suspend-user.hbs
@@ -7,6 +7,7 @@
{{future-date-input
class="suspend-until"
label="admin.user.suspend_duration"
+ includeForever=true
input=suspendUntil}}
diff --git a/app/assets/javascripts/admin/templates/user-index.hbs b/app/assets/javascripts/admin/templates/user-index.hbs
index e01f05ebfbb..fcc9d716f2f 100644
--- a/app/assets/javascripts/admin/templates/user-index.hbs
+++ b/app/assets/javascripts/admin/templates/user-index.hbs
@@ -307,7 +307,9 @@
{{i18n-yes-no model.isSuspended}}
{{#if model.isSuspended}}
- {{i18n "admin.user.suspended_until" until=model.suspendedTillDate}}
+ {{#unless model.suspendedForever}}
+ {{i18n "admin.user.suspended_until" until=model.suspendedTillDate}}
+ {{/unless}}
{{/if}}
diff --git a/app/assets/javascripts/discourse/components/future-date-input-selector.js.es6 b/app/assets/javascripts/discourse/components/future-date-input-selector.js.es6
index f4c9a00fc86..034ebb91542 100644
--- a/app/assets/javascripts/discourse/components/future-date-input-selector.js.es6
+++ b/app/assets/javascripts/discourse/components/future-date-input-selector.js.es6
@@ -9,6 +9,8 @@ const LATER_THIS_WEEK = 'later_this_week';
const THIS_WEEKEND = 'this_weekend';
const NEXT_WEEK = 'next_week';
const NEXT_MONTH = 'next_month';
+const FOREVER = 'forever';
+
export const PICK_DATE_AND_TIME = 'pick_date_and_time';
export const SET_BASED_ON_LAST_POST = 'set_based_on_last_post';
@@ -66,6 +68,13 @@ export default Combobox.extend({
});
}
+ if (this.get('includeForever')) {
+ selections.push({
+ id: FOREVER,
+ name: I18n.t('topic.auto_update_input.forever')
+ });
+ }
+
selections.push({
id: PICK_DATE_AND_TIME,
name: I18n.t('topic.auto_update_input.pick_date_and_time')
@@ -133,7 +142,7 @@ export default Combobox.extend({
output += `${state.text}`;
- if (time) {
+ if (time && state.id !== FOREVER) {
output += `${time}`;
}
@@ -170,6 +179,10 @@ export default Combobox.extend({
time = time.add(1, 'month').startOf('month').hour(timeOfDay).minute(0);
icon = 'briefcase';
break;
+ case FOREVER:
+ time = time.add(1000, 'year').hour(timeOfDay).minute(0);
+ icon = 'gavel';
+ break;
case PICK_DATE_AND_TIME:
time = null;
icon = 'calendar-plus-o';
diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6
index 93dce420151..10a822a4e99 100644
--- a/app/assets/javascripts/discourse/models/user.js.es6
+++ b/app/assets/javascripts/discourse/models/user.js.es6
@@ -178,6 +178,11 @@ const User = RestModel.extend({
return suspendedTill && moment(suspendedTill).isAfter();
},
+ @computed("suspended_till")
+ suspendedForever(suspendedTill) {
+ return moment().diff(suspendedTill, 'years') < -500;
+ },
+
@computed("suspended_till")
suspendedTillDate(suspendedTill) {
return longDate(suspendedTill);
diff --git a/app/assets/javascripts/discourse/templates/components/future-date-input.hbs b/app/assets/javascripts/discourse/templates/components/future-date-input.hbs
index 3f5f9848933..ed205d9a00f 100644
--- a/app/assets/javascripts/discourse/templates/components/future-date-input.hbs
+++ b/app/assets/javascripts/discourse/templates/components/future-date-input.hbs
@@ -8,6 +8,7 @@
statusType=statusType
value=selection
input=input
+ includeForever=includeForever
width="50%"
none="topic.auto_update_input.none"}}
diff --git a/app/assets/javascripts/discourse/templates/user.hbs b/app/assets/javascripts/discourse/templates/user.hbs
index 7c654823ef8..17677dd3d18 100644
--- a/app/assets/javascripts/discourse/templates/user.hbs
+++ b/app/assets/javascripts/discourse/templates/user.hbs
@@ -84,7 +84,13 @@
{{#if model.isSuspended}}
{{d-icon "ban"}}
- {{i18n 'user.suspended_notice' date=model.suspendedTillDate}}
+
+ {{#if model.suspendedForever}}
+ {{i18n 'user.suspended_permanently'}}
+ {{else}}
+ {{i18n 'user.suspended_notice' date=model.suspendedTillDate}}
+ {{/if}}
+
{{#if model.suspend_reason}}
{{i18n 'user.suspended_reason'}} {{model.suspend_reason}}
{{/if}}
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 80ffb7603c2..e3a3f91f44c 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -604,6 +604,7 @@ en:
admin_tooltip: "This user is an admin"
blocked_tooltip: "This user is blocked"
suspended_notice: "This user is suspended until {{date}}."
+ suspended_permanently: "This user is suspended."
suspended_reason: "Reason: "
github_profile: "Github"
email_activity_summary: "Activity Summary"
@@ -1568,6 +1569,7 @@ en:
this_weekend: "This weekend"
next_week: "Next week"
next_month: "Next month"
+ forever: "Forever"
pick_date_and_time: "Pick date and time"
set_based_on_last_post: "Close based on last post"
publish_to_category: