mirror of
https://github.com/discourse/discourse.git
synced 2024-12-01 10:36:32 +08:00
ES6ify user preferences controller
This commit is contained in:
parent
a28df55518
commit
8128abe6b9
|
@ -1,6 +1,7 @@
|
||||||
import { setting } from 'discourse/lib/computed';
|
import { setting } from 'discourse/lib/computed';
|
||||||
import CanCheckEmails from 'discourse/mixins/can-check-emails';
|
import CanCheckEmails from 'discourse/mixins/can-check-emails';
|
||||||
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
||||||
|
import computed from "ember-addons/ember-computed-decorators";
|
||||||
|
|
||||||
export default Ember.Controller.extend(CanCheckEmails, {
|
export default Ember.Controller.extend(CanCheckEmails, {
|
||||||
|
|
||||||
|
@ -10,18 +11,18 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
||||||
allowBackgrounds: setting('allow_profile_backgrounds'),
|
allowBackgrounds: setting('allow_profile_backgrounds'),
|
||||||
editHistoryVisible: setting('edit_history_visible_to_public'),
|
editHistoryVisible: setting('edit_history_visible_to_public'),
|
||||||
|
|
||||||
selectedCategories: function(){
|
@computed("model.watchedCategories", "model.trackedCategories", "model.mutedCategories")
|
||||||
return [].concat(this.get("model.watchedCategories"),
|
selectedCategories(watched, tracked, muted) {
|
||||||
this.get("model.trackedCategories"),
|
return [].concat(watched, tracked, muted);
|
||||||
this.get("model.mutedCategories"));
|
},
|
||||||
}.property("model.watchedCategories", "model.trackedCategories", "model.mutedCategories"),
|
|
||||||
|
|
||||||
// By default we haven't saved anything
|
// By default we haven't saved anything
|
||||||
saved: false,
|
saved: false,
|
||||||
|
|
||||||
newNameInput: null,
|
newNameInput: null,
|
||||||
|
|
||||||
userFields: function() {
|
@computed("model.user_fields.@each.value")
|
||||||
|
userFields() {
|
||||||
let siteUserFields = this.site.get('user_fields');
|
let siteUserFields = this.site.get('user_fields');
|
||||||
if (!Ember.isEmpty(siteUserFields)) {
|
if (!Ember.isEmpty(siteUserFields)) {
|
||||||
const userFields = this.get('model.user_fields');
|
const userFields = this.get('model.user_fields');
|
||||||
|
@ -35,34 +36,37 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
||||||
return Ember.Object.create({ value, field });
|
return Ember.Object.create({ value, field });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}.property('model.user_fields.@each.value'),
|
},
|
||||||
|
|
||||||
cannotDeleteAccount: Em.computed.not('can_delete_account'),
|
cannotDeleteAccount: Em.computed.not('can_delete_account'),
|
||||||
deleteDisabled: Em.computed.or('saving', 'deleting', 'cannotDeleteAccount'),
|
deleteDisabled: Em.computed.or('saving', 'deleting', 'cannotDeleteAccount'),
|
||||||
|
|
||||||
canEditName: setting('enable_names'),
|
canEditName: setting('enable_names'),
|
||||||
|
|
||||||
nameInstructions: function() {
|
@computed()
|
||||||
|
nameInstructions() {
|
||||||
return I18n.t(Discourse.SiteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions');
|
return I18n.t(Discourse.SiteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions');
|
||||||
}.property(),
|
},
|
||||||
|
|
||||||
canSelectTitle: function() {
|
@computed("model.has_title_badges")
|
||||||
return this.siteSettings.enable_badges && this.get('model.has_title_badges');
|
canSelectTitle(hasTitleBadges) {
|
||||||
}.property('model.badge_count'),
|
return this.siteSettings.enable_badges && hasTitleBadges;
|
||||||
|
},
|
||||||
|
|
||||||
canChangePassword: function() {
|
@computed()
|
||||||
|
canChangePassword() {
|
||||||
return !this.siteSettings.enable_sso && this.siteSettings.enable_local_logins;
|
return !this.siteSettings.enable_sso && this.siteSettings.enable_local_logins;
|
||||||
}.property(),
|
},
|
||||||
|
|
||||||
canReceiveDigest: function() {
|
@computed()
|
||||||
|
canReceiveDigest() {
|
||||||
return !this.siteSettings.disable_digest_emails;
|
return !this.siteSettings.disable_digest_emails;
|
||||||
}.property(),
|
},
|
||||||
|
|
||||||
availableLocales: function() {
|
@computed()
|
||||||
return this.siteSettings.available_locales.split('|').map( function(s) {
|
availableLocales() {
|
||||||
return {name: s, value: s};
|
return this.siteSettings.available_locales.split('|').map(s => ({ name: s, value: s }));
|
||||||
});
|
},
|
||||||
}.property(),
|
|
||||||
|
|
||||||
digestFrequencies: [{ name: I18n.t('user.email_digests.daily'), value: 1 },
|
digestFrequencies: [{ name: I18n.t('user.email_digests.daily'), value: 1 },
|
||||||
{ name: I18n.t('user.email_digests.every_three_days'), value: 3 },
|
{ name: I18n.t('user.email_digests.every_three_days'), value: 3 },
|
||||||
|
@ -86,16 +90,16 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
||||||
{ name: I18n.t('user.new_topic_duration.after_2_weeks'), value: 2 * 7 * 60 * 24 },
|
{ name: I18n.t('user.new_topic_duration.after_2_weeks'), value: 2 * 7 * 60 * 24 },
|
||||||
{ name: I18n.t('user.new_topic_duration.last_here'), value: -2 }],
|
{ name: I18n.t('user.new_topic_duration.last_here'), value: -2 }],
|
||||||
|
|
||||||
saveButtonText: function() {
|
@computed("model.isSaving")
|
||||||
return this.get('model.isSaving') ? I18n.t('saving') : I18n.t('save');
|
saveButtonText(isSaving) {
|
||||||
}.property('model.isSaving'),
|
return isSaving ? I18n.t('saving') : I18n.t('save');
|
||||||
|
},
|
||||||
|
|
||||||
passwordProgress: null,
|
passwordProgress: null,
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
|
||||||
save() {
|
save() {
|
||||||
const self = this;
|
|
||||||
this.set('saved', false);
|
this.set('saved', false);
|
||||||
|
|
||||||
const model = this.get('model');
|
const model = this.get('model');
|
||||||
|
@ -113,28 +117,27 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
||||||
|
|
||||||
// Cook the bio for preview
|
// Cook the bio for preview
|
||||||
model.set('name', this.get('newNameInput'));
|
model.set('name', this.get('newNameInput'));
|
||||||
return model.save().then(function() {
|
return model.save().then(() => {
|
||||||
if (Discourse.User.currentProp('id') === model.get('id')) {
|
if (Discourse.User.currentProp('id') === model.get('id')) {
|
||||||
Discourse.User.currentProp('name', model.get('name'));
|
Discourse.User.currentProp('name', model.get('name'));
|
||||||
}
|
}
|
||||||
model.set('bio_cooked', Discourse.Markdown.cook(Discourse.Markdown.sanitize(model.get('bio_raw'))));
|
model.set('bio_cooked', Discourse.Markdown.cook(Discourse.Markdown.sanitize(model.get('bio_raw'))));
|
||||||
self.set('saved', true);
|
this.set('saved', true);
|
||||||
}).catch(popupAjaxError);
|
}).catch(popupAjaxError);
|
||||||
},
|
},
|
||||||
|
|
||||||
changePassword() {
|
changePassword() {
|
||||||
const self = this;
|
|
||||||
if (!this.get('passwordProgress')) {
|
if (!this.get('passwordProgress')) {
|
||||||
this.set('passwordProgress', I18n.t("user.change_password.in_progress"));
|
this.set('passwordProgress', I18n.t("user.change_password.in_progress"));
|
||||||
return this.get('model').changePassword().then(function() {
|
return this.get('model').changePassword().then(() => {
|
||||||
// password changed
|
// password changed
|
||||||
self.setProperties({
|
this.setProperties({
|
||||||
changePasswordProgress: false,
|
changePasswordProgress: false,
|
||||||
passwordProgress: I18n.t("user.change_password.success")
|
passwordProgress: I18n.t("user.change_password.success")
|
||||||
});
|
});
|
||||||
}, function() {
|
}).catch(() => {
|
||||||
// password failed to change
|
// password failed to change
|
||||||
self.setProperties({
|
this.setProperties({
|
||||||
changePasswordProgress: false,
|
changePasswordProgress: false,
|
||||||
passwordProgress: I18n.t("user.change_password.error")
|
passwordProgress: I18n.t("user.change_password.error")
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user