diff --git a/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js b/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js index d4aebbc97..861853ca4 100644 --- a/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js +++ b/app/assets/javascripts/discourse/controllers/avatar_selector_controller.js @@ -8,39 +8,7 @@ @module Discourse **/ Discourse.AvatarSelectorController = Discourse.Controller.extend(Discourse.ModalFunctionality, { - init: function() { - // copy some data to support the cancel action - this.setProperties(this.get("currentUser").getProperties( - "username", - "has_uploaded_avatar", - "use_uploaded_avatar", - "gravatar_template", - "uploaded_avatar_template" - )); - }, - toggleUseUploadedAvatar: function(toggle) { this.set("use_uploaded_avatar", toggle); - }, - - saveAvatarSelection: function() { - // sends the information to the server if it has changed - if (this.get("use_uploaded_avatar") !== this.get("currentUser.use_uploaded_avatar")) { - var data = { use_uploaded_avatar: this.get("use_uploaded_avatar") }; - Discourse.ajax("/users/" + this.get("currentUser.username") + "/preferences/avatar/toggle", { type: 'PUT', data: data }); - } - // saves the data back to the currentUser object - var currentUser = this.get("currentUser"); - currentUser.setProperties(this.getProperties( - "has_uploaded_avatar", - "use_uploaded_avatar", - "gravatar_template", - "uploaded_avatar_template" - )); - if (this.get("use_uploaded_avatar")) { - currentUser.set("avatar_template", this.get("uploaded_avatar_template")); - } else { - currentUser.set("avatar_template", this.get("gravatar_template")); - } } }); diff --git a/app/assets/javascripts/discourse/models/user.js b/app/assets/javascripts/discourse/models/user.js index d1b842661..4abb65886 100644 --- a/app/assets/javascripts/discourse/models/user.js +++ b/app/assets/javascripts/discourse/models/user.js @@ -139,7 +139,7 @@ Discourse.User = Discourse.Model.extend({ **/ save: function() { var user = this; - return Discourse.ajax("/users/" + this.get('username').toLowerCase(), { + return Discourse.ajax("/users/" + this.get('username_lower'), { data: this.getProperties('auto_track_topics_after_msecs', 'bio_raw', 'website', @@ -260,6 +260,17 @@ Discourse.User = Discourse.Model.extend({ user.setProperties(json.user); return user; }); + }, + + /* + Change avatar selection + + @method toggleAvatarSelection + @returns {Promise} the result of the toggle avatar selection + */ + toggleAvatarSelection: function() { + var data = { use_uploaded_avatar: this.get("use_uploaded_avatar") }; + return Discourse.ajax("/users/" + this.get("username") + "/preferences/avatar/toggle", { type: 'PUT', data: data }); } }); diff --git a/app/assets/javascripts/discourse/routes/preferences_routes.js b/app/assets/javascripts/discourse/routes/preferences_routes.js index 0ddc31a45..e623cf3c4 100644 --- a/app/assets/javascripts/discourse/routes/preferences_routes.js +++ b/app/assets/javascripts/discourse/routes/preferences_routes.js @@ -18,7 +18,35 @@ Discourse.PreferencesRoute = Discourse.RestrictedUserRoute.extend({ events: { showAvatarSelector: function() { Discourse.Route.showModal(this, 'avatarSelector'); - this.controllerFor("avatarSelector").init(); + var user = this.modelFor("user"); + console.log(user); + this.controllerFor("avatarSelector").setProperties(user.getProperties( + "username", + "email", + "has_uploaded_avatar", + "use_uploaded_avatar", + "gravatar_template", + "uploaded_avatar_template" + )); + }, + + saveAvatarSelection: function() { + var user = this.modelFor("user"); + var avatar = this.controllerFor("avatarSelector"); + // sends the information to the server if it has changed + if (avatar.get("use_uploaded_avatar") !== user.get("use_uploaded_avatar")) { user.toggleAvatarSelection(); } + // saves the data back + user.setProperties(avatar.getProperties( + "has_uploaded_avatar", + "use_uploaded_avatar", + "gravatar_template", + "uploaded_avatar_template" + )); + if (avatar.get("use_uploaded_avatar")) { + user.set("avatar_template", avatar.get("uploaded_avatar_template")); + } else { + user.set("avatar_template", avatar.get("gravatar_template")); + } } } }); diff --git a/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars b/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars index 8242668af..4548c091b 100644 --- a/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars +++ b/app/assets/javascripts/discourse/templates/modal/avatar_selector.js.handlebars @@ -2,7 +2,7 @@