mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-28 21:33:24 +03:00
Enable validation for settings/general screen
Closes #3036 Refs #3012 -Enable validation for settings/general -Turn on functional tests for the validations -Move notification closeAll calls so that notifications are cleared on attempted saves instead of just on successful saves
This commit is contained in:
parent
61f4d90428
commit
f4de1199d1
@ -30,13 +30,18 @@ var SettingsGeneralController = Ember.ObjectController.extend({
|
|||||||
save: function () {
|
save: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
// @TODO This should call closePassive() to only close passive notifications
|
||||||
|
self.notifications.closeAll();
|
||||||
|
|
||||||
return this.get('model').save().then(function (model) {
|
return this.get('model').save().then(function (model) {
|
||||||
// @TODO This should call closePassive() to only close passive notifications
|
|
||||||
self.notifications.closeAll();
|
|
||||||
|
|
||||||
self.notifications.showSuccess('Settings successfully saved.');
|
self.notifications.showSuccess('Settings successfully saved.');
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
}).catch(this.notifications.showErrors);
|
}).catch(function (errors) {
|
||||||
|
self.notifications.showErrors(errors);
|
||||||
|
|
||||||
|
return Ember.RSVP.reject(errors);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -23,13 +23,14 @@ var SettingsUserController = Ember.Controller.extend({
|
|||||||
save: function () {
|
save: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
// @TODO This should call closePassive() to only close passive notifications
|
||||||
|
self.notifications.closeAll();
|
||||||
|
|
||||||
alert('@TODO: Saving user...');
|
alert('@TODO: Saving user...');
|
||||||
|
|
||||||
if (this.user.validate().get('isValid')) {
|
if (this.user.validate().get('isValid')) {
|
||||||
this.user.save().then(function (response) {
|
this.user.save().then(function (response) {
|
||||||
|
|
||||||
// @TODO This should call closePassive() to only close passive notifications
|
|
||||||
self.notifications.closeAll();
|
|
||||||
alert('Done saving' + JSON.stringify(response));
|
alert('Done saving' + JSON.stringify(response));
|
||||||
}, function () {
|
}, function () {
|
||||||
alert('Error saving.');
|
alert('Error saving.');
|
||||||
|
@ -124,6 +124,9 @@ var EditorControllerMixin = Ember.Mixin.create(MarkerManager, {
|
|||||||
isNew = this.get('isNew'),
|
isNew = this.get('isNew'),
|
||||||
self = this;
|
self = this;
|
||||||
|
|
||||||
|
// @TODO This should call closePassive() to only close passive notifications
|
||||||
|
self.notifications.closeAll();
|
||||||
|
|
||||||
// ensure an incomplete tag is finalised before save
|
// ensure an incomplete tag is finalised before save
|
||||||
this.get('controllers.post-tags-input').send('addNewTag');
|
this.get('controllers.post-tags-input').send('addNewTag');
|
||||||
|
|
||||||
@ -137,9 +140,6 @@ var EditorControllerMixin = Ember.Mixin.create(MarkerManager, {
|
|||||||
// for a saved model it would otherwise be false.
|
// for a saved model it would otherwise be false.
|
||||||
self.set('isDirty', false);
|
self.set('isDirty', false);
|
||||||
|
|
||||||
// @TODO This should call closePassive() to only close passive notifications
|
|
||||||
self.notifications.closeAll();
|
|
||||||
|
|
||||||
self.notifications.showSuccess('Post status saved as <strong>' +
|
self.notifications.showSuccess('Post status saved as <strong>' +
|
||||||
model.get('status') + '</strong>.', isNew ? true : false);
|
model.get('status') + '</strong>.', isNew ? true : false);
|
||||||
return model;
|
return model;
|
||||||
|
@ -5,6 +5,7 @@ import PostValidator from 'ghost/validators/post';
|
|||||||
import SignupValidator from 'ghost/validators/signup';
|
import SignupValidator from 'ghost/validators/signup';
|
||||||
import SigninValidator from 'ghost/validators/signin';
|
import SigninValidator from 'ghost/validators/signin';
|
||||||
import ForgotValidator from 'ghost/validators/forgotten';
|
import ForgotValidator from 'ghost/validators/forgotten';
|
||||||
|
import SettingValidator from 'ghost/validators/setting';
|
||||||
|
|
||||||
ValidatorExtensions.init();
|
ValidatorExtensions.init();
|
||||||
|
|
||||||
@ -13,7 +14,8 @@ var ValidationEngine = Ember.Mixin.create({
|
|||||||
post: PostValidator,
|
post: PostValidator,
|
||||||
signup: SignupValidator,
|
signup: SignupValidator,
|
||||||
signin: SigninValidator,
|
signin: SigninValidator,
|
||||||
forgotten: ForgotValidator
|
forgotten: ForgotValidator,
|
||||||
|
setting: SettingValidator
|
||||||
},
|
},
|
||||||
|
|
||||||
validate: function (opts) {
|
validate: function (opts) {
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
var Setting = DS.Model.extend({
|
import ValidationEngine from 'ghost/mixins/validation-engine';
|
||||||
|
|
||||||
|
var Setting = DS.Model.extend(ValidationEngine, {
|
||||||
|
validationType: 'setting',
|
||||||
|
|
||||||
title: DS.attr('string'),
|
title: DS.attr('string'),
|
||||||
description: DS.attr('string'),
|
description: DS.attr('string'),
|
||||||
email: DS.attr('string'),
|
email: DS.attr('string'),
|
||||||
|
33
ghost/admin/validators/setting.js
Normal file
33
ghost/admin/validators/setting.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
var SettingValidator = Ember.Object.create({
|
||||||
|
validate: function (model) {
|
||||||
|
var validationErrors = [],
|
||||||
|
title = model.get('title'),
|
||||||
|
description = model.get('description'),
|
||||||
|
email = model.get('email'),
|
||||||
|
postsPerPage = model.get('postsPerPage');
|
||||||
|
|
||||||
|
if (!validator.isLength(title, 0, 150)) {
|
||||||
|
validationErrors.push({ message: 'Title is too long' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validator.isLength(description, 0, 200)) {
|
||||||
|
validationErrors.push({ message: 'Description is too long' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validator.isEmail(email) || !validator.isLength(email, 0, 254)) {
|
||||||
|
validationErrors.push({ message: 'Please supply a valid email address' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validator.isInt(postsPerPage) || postsPerPage > 1000) {
|
||||||
|
validationErrors.push({ message: 'Please use a number less than 1000' });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validator.isInt(postsPerPage) || postsPerPage < 0) {
|
||||||
|
validationErrors.push({ message: 'Please use a number greater than 0' });
|
||||||
|
}
|
||||||
|
|
||||||
|
return validationErrors;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default SettingValidator;
|
Loading…
Reference in New Issue
Block a user