mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
35 lines
1 KiB
JavaScript
35 lines
1 KiB
JavaScript
import InputValidation from 'discourse/models/input-validation';
|
|
import { on, default as computed } from 'ember-addons/ember-computed-decorators';
|
|
|
|
export default Ember.Mixin.create({
|
|
|
|
@on('init')
|
|
_createUserFields() {
|
|
if (!this.site) { return; }
|
|
|
|
let userFields = this.site.get('user_fields');
|
|
if (userFields) {
|
|
userFields = _.sortBy(userFields, 'position').map(function(f) {
|
|
return Ember.Object.create({ value: null, field: f });
|
|
});
|
|
}
|
|
this.set('userFields', userFields);
|
|
},
|
|
|
|
// Validate required fields
|
|
@computed('userFields.@each.value')
|
|
userFieldsValidation() {
|
|
let userFields = this.get('userFields');
|
|
if (userFields) { userFields = userFields.filterBy('field.required'); }
|
|
if (!Ember.isEmpty(userFields)) {
|
|
const anyEmpty = userFields.any(uf => {
|
|
const val = uf.get('value');
|
|
return !val || Ember.isEmpty(val);
|
|
});
|
|
if (anyEmpty) {
|
|
return InputValidation.create({ failed: true });
|
|
}
|
|
}
|
|
return InputValidation.create({ ok: true });
|
|
}
|
|
});
|