diff --git a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 index a5cd50edc9..c7ba00e3e1 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 @@ -1,9 +1,17 @@ import CanCheckEmails from 'discourse/mixins/can-check-emails'; import { default as computed } from "ember-addons/ember-computed-decorators"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; +import { setting } from 'discourse/lib/computed'; +import { popupAjaxError } from 'discourse/lib/ajax-error'; export default Ember.Controller.extend(CanCheckEmails, PreferencesTabController, { + saveAttrNames: ['name'], + + canEditName: setting('enable_names'), + + newNameInput: null, + passwordProgress: null, cannotDeleteAccount: Em.computed.not('currentUser.can_delete_account'), @@ -15,12 +23,34 @@ export default Ember.Controller.extend(CanCheckEmails, PreferencesTabController, }); }, + @computed() + nameInstructions() { + return I18n.t(this.siteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions'); + }, + + @computed("model.has_title_badges") + canSelectTitle(hasTitleBadges) { + return this.siteSettings.enable_badges && hasTitleBadges; + }, + @computed() canChangePassword() { return !this.siteSettings.enable_sso && this.siteSettings.enable_local_logins; }, actions: { + save() { + this.set('saved', false); + + const model = this.get('model'); + + model.set('name', this.get('newNameInput')); + + return model.save(this.get('saveAttrNames')).then(() => { + this.set('saved', true); + }).catch(popupAjaxError); + }, + changePassword() { if (!this.get('passwordProgress')) { this.set('passwordProgress', I18n.t("user.change_password.in_progress")); diff --git a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 index 2cdfd8e694..fa7f7470b3 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 @@ -1,13 +1,11 @@ import { default as computed } from "ember-addons/ember-computed-decorators"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; -import { setting } from 'discourse/lib/computed'; import { popupAjaxError } from 'discourse/lib/ajax-error'; import { cook } from 'discourse/lib/text'; export default Ember.Controller.extend(PreferencesTabController, { saveAttrNames: [ - 'name', 'bio_raw', 'website', 'location', @@ -18,20 +16,6 @@ export default Ember.Controller.extend(PreferencesTabController, { 'date_of_birth' ], - canEditName: setting('enable_names'), - - newNameInput: null, - - @computed() - nameInstructions() { - return I18n.t(this.siteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions'); - }, - - @computed("model.has_title_badges") - canSelectTitle(hasTitleBadges) { - return this.siteSettings.enable_badges && hasTitleBadges; - }, - @computed("model.user_fields.@each.value") userFields() { let siteUserFields = this.site.get('user_fields'); diff --git a/app/assets/javascripts/discourse/templates/preferences/account.hbs b/app/assets/javascripts/discourse/templates/preferences/account.hbs index 03515e116d..27e50337a3 100644 --- a/app/assets/javascripts/discourse/templates/preferences/account.hbs +++ b/app/assets/javascripts/discourse/templates/preferences/account.hbs @@ -11,6 +11,22 @@ +{{#if canEditName}} +