Ghost/core/client/app/validators/user.js
Austin Burdine d0c151be70 adds inline errors to validation
closes #5336
- creates gh-form-group component to handle form group status
- refactors current validation methods to work on a per-property basis
- adds gh-error-message component to render error message
- removes (comments out) tests that pertain to the old notifications until the new inline validation is added
2015-07-05 14:02:06 -04:00

72 lines
2.1 KiB
JavaScript

import BaseValidator from './base';
import Ember from 'ember';
var UserValidator = BaseValidator.create({
properties: ['name', 'bio', 'email', 'location', 'website', 'roles'],
isActive: function (model) {
return (model.get('status') === 'active');
},
name: function (model) {
var name = model.get('name');
if (this.isActive(model)) {
if (!validator.isLength(name, 0, 150)) {
model.get('errors').add('name', 'Name is too long');
this.invalidate();
}
}
},
bio: function (model) {
var bio = model.get('bio');
if (this.isActive(model)) {
if (!validator.isLength(bio, 0, 200)) {
model.get('errors').add('bio', 'Bio is too long');
this.invalidate();
}
}
},
email: function (model) {
var email = model.get('email');
if (!validator.isEmail(email)) {
model.get('errors').add('email', 'Please supply a valid email address');
this.invalidate();
}
},
location: function (model) {
var location = model.get('location');
if (this.isActive(model)) {
if (!validator.isLength(location, 0, 150)) {
model.get('errors').add('location', 'Location is too long');
this.invalidate();
}
}
},
website: function (model) {
var website = model.get('website');
if (this.isActive(model)) {
if (!Ember.isEmpty(website) &&
(!validator.isURL(website, {require_protocol: false}) ||
!validator.isLength(website, 0, 2000))) {
model.get('errors').add('website', 'Website is not a valid url');
this.invalidate();
}
}
},
roles: function (model) {
if (!this.isActive(model)) {
var roles = model.get('roles');
if (roles.length < 1) {
model.get('errors').add('role', 'Please select a role');
this.invalidate();
}
}
}
});
export default UserValidator;