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: