Skip to content
This repository has been archived by the owner on Jan 21, 2020. It is now read-only.

Commit

Permalink
Merge pull request #2452 from vogdb/issue-2452
Browse files Browse the repository at this point in the history
Handle Required errors as separate Exception
  • Loading branch information
vogdb authored Dec 8, 2016
2 parents aeac9b4 + e98d6f7 commit 99af3a3
Showing 1 changed file with 12 additions and 40 deletions.
52 changes: 12 additions & 40 deletions library/CM/Form/Abstract.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
/** @type Object **/
_actions: {},

/** @type Boolean **/
_stopErrorPropagation: false,

initialize: function() {
CM_View_Abstract.prototype.initialize.call(this);

Expand Down Expand Up @@ -60,7 +57,7 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
field.success();
})
.catch(CM_Exception_FormFieldValidation, function(error) {
handler._handleValidationError(error, handler.autosave, true);
this._displayValidationError(error);
});
}
});
Expand Down Expand Up @@ -175,39 +172,33 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
},

/**
* @param {String} [actionName]
* @param {Object} [options]
* @param {String} actionName
* @return Promise
*/
submit: function(actionName, options) {
options = _.defaults(options || {}, {
handleErrors: true,
disableUI: true
});

submit: function(actionName) {
return this
.try(function() {
return this._submitOnly(actionName, options.disableUI);
return this._submitOnly(actionName, true);
})
.catch(CM_Exception_FormFieldValidation, function(error) {
this._handleValidationError(error, actionName, options.handleErrors);
this._displayValidationError(error);
});
},

/**
* @param {String} [actionName]
* @param {Boolean} [disableUI]
* @param {String} actionName
* @param {Boolean} disableUI
* @return Promise
*/
_submitOnly: function(actionName, disableUI) {
var action = this._getAction(actionName);
var data = this.getActionData(action.name);
var errorList = this._getErrorList(action.name, data);
var errorListRequired = this._getErrorListRequired(action.name, data);

this.resetErrors();
if (_.size(errorList)) {
if (_.size(errorListRequired)) {
var error = new CM_Exception_FormFieldValidation();
error.setErrorList(errorList);
error.setErrorList(errorListRequired);
return Promise.reject(error);
}

Expand All @@ -223,6 +214,7 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
if (response.errors) {
var error = new CM_Exception_FormFieldValidation();
error.setErrorList(response.errors);
this.trigger('error error.' + actionName, error);
throw error;
}

Expand All @@ -247,22 +239,6 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
});
},

/**
* @param {CM_Exception_FormFieldValidation} error
* @param {String} actionName
* @param {Boolean} displayErrors
*/
_handleValidationError: function(error, actionName, displayErrors) {
if (displayErrors) {
this._displayValidationError(error);
}
this._stopErrorPropagation = false;
this.trigger('error error.' + actionName, error.message, error.name, error.isPublic);
if (!this._stopErrorPropagation && !displayErrors) {
throw error;
}
},

/**
* @param {CM_Exception_FormFieldValidation} validationError
*/
Expand All @@ -277,10 +253,6 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
}
},

stopErrorPropagation: function() {
this._stopErrorPropagation = true;
},

reset: function() {
this.el.reset();
},
Expand Down Expand Up @@ -331,7 +303,7 @@ var CM_Form_Abstract = CM_View_Abstract.extend({
* @param {Object} data
* @returns {Array[]}
*/
_getErrorList: function(actionName, data) {
_getErrorListRequired: function(actionName, data) {
var action = this._getAction(actionName);
var errorList = [];

Expand Down

0 comments on commit 99af3a3

Please sign in to comment.