diff --git a/app/assets/javascripts/admin/controllers/admin-user-field-item.js.es6 b/app/assets/javascripts/admin/controllers/admin-user-field-item.js.es6 index 9a320ad12b7..f2ea7d74619 100644 --- a/app/assets/javascripts/admin/controllers/admin-user-field-item.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-user-field-item.js.es6 @@ -13,14 +13,18 @@ export default Ember.ObjectController.extend(BufferedContent, { save: function() { var self = this; - var attrs = this.get('buffered').getProperties('name', 'field_type', 'editable'); + var attrs = this.get('buffered').getProperties('name', 'description', 'field_type', 'editable'); this.get('model').save(attrs).then(function(res) { self.set('model.id', res.user_field.id); self.set('editing', false); self.commitBuffer(); - }).catch(function() { - bootbox.alert(I18n.t('generic_error')); + }).catch(function(e) { + var msg = I18n.t("generic_error"); + if (e.responseJSON && e.responseJSON.errors) { + msg = I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')}); + } + bootbox.alert(msg); }); }, diff --git a/app/assets/javascripts/admin/controllers/admin-user-fields.js.es6 b/app/assets/javascripts/admin/controllers/admin-user-fields.js.es6 index 0d66804896b..6ccf0810cf4 100644 --- a/app/assets/javascripts/admin/controllers/admin-user-fields.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-user-fields.js.es6 @@ -3,6 +3,11 @@ import UserField from 'admin/models/user-field'; export default Ember.ArrayController.extend({ fieldTypes: null, createDisabled: Em.computed.gte('model.length', 3), + + userFieldsDescription: function() { + return I18n.t('admin.user_fields.description'); + }.property(), + userFieldsName: function() { return I18n.t('admin.user_fields.name'); }.property(), diff --git a/app/assets/javascripts/admin/templates/user-fields.hbs b/app/assets/javascripts/admin/templates/user-fields.hbs index 4be318ae86a..bb890d75fd8 100644 --- a/app/assets/javascripts/admin/templates/user-fields.hbs +++ b/app/assets/javascripts/admin/templates/user-fields.hbs @@ -1,28 +1,36 @@

{{i18n admin.user_fields.title}}

-

{{i18n admin.user_fields.description}}

+

{{i18n admin.user_fields.help}}

{{#if model}} {{#each f in model itemController="admin-user-field-item" itemView="admin-user-field-item"}} {{#if f.editing}} -
- {{input value=f.buffered.name class="user-field-name" placeholder=userFieldsName}} +
+
+ {{input value=f.buffered.name class="user-field-name" placeholder=userFieldsName}} +
+
+ {{combo-box content=fieldTypes valueAttribute="id" value=f.buffered.field_type}} +
+
+ +
+
+ + +
-
- {{combo-box content=fieldTypes valueAttribute="id" value=f.buffered.field_type}} -
-
- -
-
- - +
+
+ {{input value=f.buffered.description class="user-field-desc" placeholder=userFieldsDescription}} +
{{else}} -
{{f.name}}
+
+
{{f.name}}
{{f.fieldName}}
{{#if f.editable}} @@ -35,6 +43,11 @@
+
+
+ {{f.description}} +
+ {{/if}}
{{/each}} diff --git a/app/assets/javascripts/discourse/components/user-field.js.es6 b/app/assets/javascripts/discourse/components/user-field.js.es6 index ab345644e39..a1c6f56b4dd 100644 --- a/app/assets/javascripts/discourse/components/user-field.js.es6 +++ b/app/assets/javascripts/discourse/components/user-field.js.es6 @@ -1,5 +1,5 @@ export default Ember.Component.extend({ - classNameBindings: [':user-field'], + classNameBindings: [':user-field', 'field.field_type'], layoutName: function() { return "components/user-fields/" + this.get('field.field_type'); }.property('field.field_type') diff --git a/app/assets/javascripts/discourse/controllers/preferences.js.es6 b/app/assets/javascripts/discourse/controllers/preferences.js.es6 index b0bea6e09e4..98a5f9a3ba3 100644 --- a/app/assets/javascripts/discourse/controllers/preferences.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences.js.es6 @@ -22,7 +22,7 @@ export default ObjectController.extend(CanCheckEmails, { var siteUserFields = this.site.get('user_fields'); if (!Ember.empty(siteUserFields)) { var userFields = this.get('user_fields'); - return siteUserFields.filterProperty('editable', true).map(function(uf) { + return siteUserFields.filterProperty('editable', true).sortBy('field_type').map(function(uf) { var val = userFields ? userFields[uf.get('id').toString()] : null; return Ember.Object.create({value: val, field: uf}); }); diff --git a/app/assets/javascripts/discourse/templates/components/user-fields/confirm.hbs b/app/assets/javascripts/discourse/templates/components/user-fields/confirm.hbs index 3e300a3792f..05d919e689f 100644 --- a/app/assets/javascripts/discourse/templates/components/user-fields/confirm.hbs +++ b/app/assets/javascripts/discourse/templates/components/user-fields/confirm.hbs @@ -1,3 +1,3 @@ - +
+ +
diff --git a/app/assets/javascripts/discourse/templates/components/user-fields/text.hbs b/app/assets/javascripts/discourse/templates/components/user-fields/text.hbs index 6d7234bc6a7..17ab874fe0a 100644 --- a/app/assets/javascripts/discourse/templates/components/user-fields/text.hbs +++ b/app/assets/javascripts/discourse/templates/components/user-fields/text.hbs @@ -1,4 +1,5 @@ -