From c98601129b2df1983fcc527fed910648adc51cc5 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 4 May 2017 12:03:59 -0400 Subject: [PATCH] Move name, avatar, and title fields from profile tab to account tab --- .../controllers/preferences/account.js.es6 | 30 ++++++++++++ .../controllers/preferences/profile.js.es6 | 16 ------- .../templates/preferences/account.hbs | 46 +++++++++++++++++++ .../templates/preferences/profile.hbs | 37 --------------- .../acceptance/preferences-test.js.es6 | 3 ++ 5 files changed, 79 insertions(+), 53 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 index a5cd50edc97..c7ba00e3e11 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 2cdfd8e6940..fa7f7470b32 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 03515e116de..27e50337a38 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}} +
+ +
+ {{#if model.can_edit_name}} + {{text-field value=newNameInput classNames="input-xxlarge"}} + {{else}} + {{model.name}} + {{/if}} +
+
+ {{nameInstructions}} +
+
+{{/if}} + {{#if canCheckEmails}}
@@ -49,10 +65,40 @@
{{/if}} +
+ +
+ {{! we want the "huge" version even though we're downsizing it to "large" in CSS }} + {{bound-avatar model "huge"}} + {{#unless siteSettings.sso_overrides_avatar}} + {{d-button action="showAvatarSelector" class="pad-left" icon="pencil"}} + {{/unless}} +
+
+ +{{#if canSelectTitle}} +
+ +
+ {{model.title}} + {{#link-to "preferences.badgeTitle" class="btn btn-small pad-left no-text"}}{{fa-icon "pencil"}}{{/link-to}} +
+
+{{/if}} + {{plugin-outlet name="user-preferences-account"}}
+{{plugin-outlet name="user-custom-controls" args=(hash model=model)}} + +
+
+ {{partial 'user/preferences/save-button'}} +
+
+ + {{#if model.canDeleteAccount}}

diff --git a/app/assets/javascripts/discourse/templates/preferences/profile.hbs b/app/assets/javascripts/discourse/templates/preferences/profile.hbs index bc57e60fdad..168e9afc248 100644 --- a/app/assets/javascripts/discourse/templates/preferences/profile.hbs +++ b/app/assets/javascripts/discourse/templates/preferences/profile.hbs @@ -1,40 +1,3 @@ -{{#if canEditName}} -
- -
- {{#if model.can_edit_name}} - {{text-field value=newNameInput classNames="input-xxlarge"}} - {{else}} - {{model.name}} - {{/if}} -
-
- {{nameInstructions}} -
-
-{{/if}} - -{{#if canSelectTitle}} -
- -
- {{model.title}} - {{#link-to "preferences.badgeTitle" class="btn btn-small pad-left no-text"}}{{fa-icon "pencil"}}{{/link-to}} -
-
-{{/if}} - -
- -
- {{! we want the "huge" version even though we're downsizing it to "large" in CSS }} - {{bound-avatar model "huge"}} - {{#unless siteSettings.sso_overrides_avatar}} - {{d-button action="showAvatarSelector" class="pad-left" icon="pencil"}} - {{/unless}} -
-
- {{#if siteSettings.allow_profile_backgrounds}}
diff --git a/test/javascripts/acceptance/preferences-test.js.es6 b/test/javascripts/acceptance/preferences-test.js.es6 index dd986f8c78f..ccd2aff7b41 100644 --- a/test/javascripts/acceptance/preferences-test.js.es6 +++ b/test/javascripts/acceptance/preferences-test.js.es6 @@ -18,6 +18,9 @@ test("update some fields", () => { }); }; + fillIn(".pref-name input[type=text]", "Jon Snow"); + savePreferences(); + click(".preferences-nav .nav-profile a"); fillIn("#edit-location", "Westeros"); savePreferences();