Add Parsley validator for email scheduling

[MAILPOET-3818]
This commit is contained in:
Jan Lysý
2021-10-20 13:23:26 +02:00
committed by Veljko V
parent 6a6dad5e67
commit 024f04750a
2 changed files with 36 additions and 0 deletions

View 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.',
},
});
});

View File

@@ -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';