Add Parsley validator for email scheduling
[MAILPOET-3818]
This commit is contained in:
35
assets/js/src/parsley-validators.jsx
Normal file
35
assets/js/src/parsley-validators.jsx
Normal file
@@ -0,0 +1,35 @@
|
||||
import jQuery from 'jquery';
|
||||
import Parsley from 'parsleyjs';
|
||||
|
||||
jQuery(($) => {
|
||||
Parsley.addValidator('scheduledAt', {
|
||||
requirementType: 'string',
|
||||
validateString: (value, error) => {
|
||||
const maxYears = 5;
|
||||
const hoursInYear = 8760;
|
||||
const daysInYear = 365;
|
||||
const weeksInYear = 52;
|
||||
|
||||
const selectType = $('select[name="afterTimeType"],select#scheduling_time_interval');
|
||||
const afterTimeType = selectType.val();
|
||||
let isValid = true;
|
||||
if (afterTimeType === 'hours' && (hoursInYear * maxYears) < value) {
|
||||
isValid = false;
|
||||
}
|
||||
if (afterTimeType === 'days' && (daysInYear * maxYears) < value) {
|
||||
isValid = false;
|
||||
}
|
||||
if (afterTimeType === 'weeks' && (weeksInYear * maxYears) < value) {
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (!isValid) {
|
||||
return $.Deferred().reject(error);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
messages: {
|
||||
en: 'An email can only be scheduled up to 5 years in the future. Please choose a shorter period.',
|
||||
},
|
||||
});
|
||||
});
|
@@ -8,3 +8,4 @@ import 'mailpoet'; // side effect - assigns MailPoet to window
|
||||
import 'dismissible-notice.jsx'; // side effect - adds jQuery event
|
||||
import 'jquery.serialize_object'; // side effect - extends jQuery
|
||||
import 'parsleyjs'; // side effect - extends jQuery
|
||||
import 'parsley-validators.jsx';
|
||||
|
Reference in New Issue
Block a user