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 'dismissible-notice.jsx'; // side effect - adds jQuery event
|
||||||
import 'jquery.serialize_object'; // side effect - extends jQuery
|
import 'jquery.serialize_object'; // side effect - extends jQuery
|
||||||
import 'parsleyjs'; // side effect - extends jQuery
|
import 'parsleyjs'; // side effect - extends jQuery
|
||||||
|
import 'parsley-validators.jsx';
|
||||||
|
Reference in New Issue
Block a user