From f4ce1efcfea671f0de59a025524a3f0fdeb0553f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ja=CC=81n=20Mikla=CC=81s=CC=8C?= Date: Thu, 23 May 2019 09:53:39 +0200 Subject: [PATCH] Show error message when from address is not authorized [MAILPOET-1985] --- assets/js/src/newsletters/send.jsx | 37 ++++++++++++++++++++++++++++++ views/newsletters.html | 2 ++ 2 files changed, 39 insertions(+) diff --git a/assets/js/src/newsletters/send.jsx b/assets/js/src/newsletters/send.jsx index 0befe685f3..cf9307eb3e 100644 --- a/assets/js/src/newsletters/send.jsx +++ b/assets/js/src/newsletters/send.jsx @@ -74,6 +74,38 @@ const NewsletterSend = createReactClass({ // eslint-disable-line react/prefer-es return jQuery('#mailpoet_newsletter').parsley().isValid(); }, + isValidFromAddress: function isValidFromAddress() { + const fromAddress = jQuery('#field_sender_address').val(); + if (window.mailpoet_mta_method !== 'MailPoet') { + return true; + } + return this.state.authorizedEmailAddresses.indexOf(fromAddress) !== -1; + }, + + showInvalidFromAddressError: function showInvalidFromAddressError() { + const errorMessage = MailPoet.I18n.t('newsletterInvalidFromAddress') + .replace('%$1s', jQuery('#field_sender_address').val()) + .replace('[i]', '') + .replace('[/i]', '') + .replace('[link]', '') + .replace('[/link]', ''); + jQuery('#field_sender_address') + .parsley() + .addError( + 'invalidFromAddress', + { message: errorMessage, updateClass: true } + ); + }, + + removeInvalidFromAddressError: function removeInvalidFromAddressError() { + jQuery('#field_sender_address') + .parsley() + .removeError( + 'invalidFromAddress', + { updateClass: true } + ); + }, + loadItem: function loadItem(id) { this.setState({ loading: true }); @@ -141,11 +173,16 @@ const NewsletterSend = createReactClass({ // eslint-disable-line react/prefer-es handleSend: function handleSend(e) { e.preventDefault(); + this.removeInvalidFromAddressError(); if (!this.isValid()) { return jQuery('#mailpoet_newsletter').parsley().validate(); } + if (!this.isValidFromAddress()) { + return this.showInvalidFromAddressError(); + } + MailPoet.Modal.loading(true); return this.saveNewsletter(e).done(() => { diff --git a/views/newsletters.html b/views/newsletters.html index 4dbb1c8755..c1cc3c0f8b 100644 --- a/views/newsletters.html +++ b/views/newsletters.html @@ -38,6 +38,7 @@ var mailpoet_installed_at = '<%= settings.installed_at %>'; var mailpoet_mss_active = <%= json_encode(mss_active) %>; var mailpoet_free_plan_announcement_seen = !!+'<%= settings.free_plan_announcement_seen %>'; + var mailpoet_mta_method = '<%= settings.mta.method %>'; <% endautoescape %> <% endblock %> @@ -265,6 +266,7 @@ 'newsletterBeingSent': __('The newsletter is being sent...'), 'newsletterHasBeenScheduled': __('The newsletter has been scheduled.'), 'newsletterSendingHasBeenResumed': __('The newsletter sending has been resumed.'), + 'newsletterInvalidFromAddress': _x('You need to authorize the email address [i]%$1s[/i] to be able to send with it. [link]Authorize my email address[/link]', 'Users need to confirm that they own the email address they want to use to send their newsletter'), 'welcomeEmailActivated': __('Your Welcome Email is now activated!'), 'welcomeEmailActivationFailed': __('Your Welcome Email could not be activated, please check the settings.'), 'postNotificationActivated': __('Your post notification is now active!'),