mirror of
https://github.com/ascribe/onion.git
synced 2024-12-22 09:23:13 +01:00
Add global notification to form validation
This commit is contained in:
parent
ad17a9d6f3
commit
41df6fe837
@ -178,20 +178,20 @@ let Form = React.createClass({
|
|||||||
let formData = this.getFormData();
|
let formData = this.getFormData();
|
||||||
|
|
||||||
// sentry shouldn't post the user's password
|
// sentry shouldn't post the user's password
|
||||||
if(formData.password) {
|
if (formData.password) {
|
||||||
delete formData.password;
|
delete formData.password;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.logGlobal(err, formData);
|
console.logGlobal(err, formData);
|
||||||
|
|
||||||
if(this.props.isInline) {
|
if (this.props.isInline) {
|
||||||
let notification = new GlobalNotificationModel(getLangText('Something went wrong, please try again later'), 'danger');
|
let notification = new GlobalNotificationModel(getLangText('Something went wrong, please try again later'), 'danger');
|
||||||
GlobalNotificationActions.appendGlobalNotification(notification);
|
GlobalNotificationActions.appendGlobalNotification(notification);
|
||||||
} else {
|
} else {
|
||||||
this.setState({errors: [getLangText('Something went wrong, please try again later')]});
|
this.setState({errors: [getLangText('Something went wrong, please try again later')]});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({submitted: false});
|
this.setState({submitted: false});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import requests from '../../../../../../utils/requests';
|
|||||||
|
|
||||||
import { getErrorNotificationMessage } from '../../../../../../utils/error_utils';
|
import { getErrorNotificationMessage } from '../../../../../../utils/error_utils';
|
||||||
import { setCookie } from '../../../../../../utils/fetch_api_utils';
|
import { setCookie } from '../../../../../../utils/fetch_api_utils';
|
||||||
|
import { validateForms } from '../../../../../../utils/form_utils';
|
||||||
import { getLangText } from '../../../../../../utils/lang_utils';
|
import { getLangText } from '../../../../../../utils/lang_utils';
|
||||||
import { formSubmissionValidation } from '../../../../../ascribe_uploader/react_s3_fine_uploader_utils';
|
import { formSubmissionValidation } from '../../../../../ascribe_uploader/react_s3_fine_uploader_utils';
|
||||||
|
|
||||||
@ -55,7 +56,7 @@ const PRRegisterPieceForm = React.createClass({
|
|||||||
* second adding all the additional details
|
* second adding all the additional details
|
||||||
*/
|
*/
|
||||||
submit() {
|
submit() {
|
||||||
if(!this.validateForms()) {
|
if (!this.validateForms()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,11 +128,7 @@ const PRRegisterPieceForm = React.createClass({
|
|||||||
additionalDataForm,
|
additionalDataForm,
|
||||||
uploadersForm } = this.refs;
|
uploadersForm } = this.refs;
|
||||||
|
|
||||||
const registerPieceFormValidation = registerPieceForm.validate();
|
return validateForms([registerPieceForm, additionalDataForm, uploadersForm], true);
|
||||||
const additionalDataFormValidation = additionalDataForm.validate();
|
|
||||||
const uploaderFormValidation = uploadersForm.validate();
|
|
||||||
|
|
||||||
return registerPieceFormValidation && additionalDataFormValidation && uploaderFormValidation;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getCreateBlobRoutine() {
|
getCreateBlobRoutine() {
|
||||||
|
@ -2,8 +2,34 @@
|
|||||||
|
|
||||||
import { getLangText } from './lang_utils';
|
import { getLangText } from './lang_utils';
|
||||||
|
|
||||||
|
import GlobalNotificationActions from '../actions/global_notification_actions';
|
||||||
|
import GlobalNotificationModel from '../models/global_notification_model';
|
||||||
|
|
||||||
import AppConstants from '../constants/application_constants';
|
import AppConstants from '../constants/application_constants';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates a given list of forms
|
||||||
|
* @param {Form} forms List of forms, each of which should have a `validate` method available
|
||||||
|
* @param {boolean} showFailureNotification Show global notification if there are validation failures
|
||||||
|
* @return {boolean} True if validation did *NOT* catch any errors
|
||||||
|
*/
|
||||||
|
export function validateForms(forms, showFailureNotification) {
|
||||||
|
const validationSuccessful = forms.reduce((result, form) => {
|
||||||
|
if (form && typeof form.validate === 'function') {
|
||||||
|
return form.validate() && result;
|
||||||
|
} else {
|
||||||
|
throw new Error('Form given for validation does not have a `validate` method');
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
|
||||||
|
if (!validationSuccessful && showFailureNotification) {
|
||||||
|
const notification = new GlobalNotificationModel(getLangText('Oops, there may be missing or invalid fields. Please check your inputs again.'), 'danger');
|
||||||
|
GlobalNotificationActions.appendGlobalNotification(notification);
|
||||||
|
}
|
||||||
|
|
||||||
|
return validationSuccessful;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the data ids of the given piece or editions.
|
* Get the data ids of the given piece or editions.
|
||||||
* @param {boolean} isPiece Is the given entities parameter a piece? (False: array of editions)
|
* @param {boolean} isPiece Is the given entities parameter a piece? (False: array of editions)
|
||||||
|
Loading…
Reference in New Issue
Block a user