Update sender warning message
[MAILPOET-1890]
This commit is contained in:
@@ -1,43 +1,103 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import MailPoet from 'mailpoet';
|
||||
import moment from 'moment';
|
||||
import ReactStringReplace from 'react-string-replace';
|
||||
|
||||
const SenderEmailAddressWarning = ({ emailAddress }) => {
|
||||
const userHostDomain = window.location.hostname.replace('www.', '');
|
||||
const suggestedEmailAddress = `contact@${userHostDomain}`;
|
||||
|
||||
const NewInstallationWithMSSWarning = ({ emailAddress }) => (
|
||||
<React.Fragment>
|
||||
<p className="sender_email_address_warning">
|
||||
{ReactStringReplace(
|
||||
MailPoet.I18n.t('senderEmailAddressNewInstallWarning1'),
|
||||
/<em>%originalSender<\/em>/,
|
||||
() => <em key="reply-to">{ emailAddress }</em>
|
||||
)}
|
||||
</p>
|
||||
<p className="sender_email_address_warning">
|
||||
{ReactStringReplace(
|
||||
MailPoet.I18n.t('senderEmailAddressNewInstallWarning2'),
|
||||
/(<em>%suggested<\/em>|<em>%originalSender<\/em>)/,
|
||||
(match) => {
|
||||
if (match === '<em>%suggested</em>') return <em key="suggested-email">{ suggestedEmailAddress }</em>;
|
||||
return <em key="sender-email">{ emailAddress }</em>;
|
||||
}
|
||||
)}
|
||||
</p>
|
||||
<p className="sender_email_address_warning">
|
||||
{MailPoet.I18n.t('senderEmailAddressNewInstallWarning3')}
|
||||
{' '}
|
||||
<a
|
||||
href="https://account.mailpoet.com/authorization"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
{MailPoet.I18n.t('senderEmailAddressNewInstallWarning4')}
|
||||
</a>
|
||||
</p>
|
||||
<p className="sender_email_address_warning">
|
||||
<a
|
||||
href="https://kb.mailpoet.com/article/263-how-to-add-an-authorized-email-address"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
{MailPoet.I18n.t('senderEmailAddressWarning3')}
|
||||
</a>
|
||||
</p>
|
||||
</React.Fragment>
|
||||
);
|
||||
|
||||
NewInstallationWithMSSWarning.propTypes = {
|
||||
emailAddress: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
const OldInstallationWarning = ({ emailAddress }) => (
|
||||
<React.Fragment>
|
||||
<p className="sender_email_address_warning">{MailPoet.I18n.t('senderEmailAddressWarning1')}</p>
|
||||
<p className="sender_email_address_warning">
|
||||
{ReactStringReplace(
|
||||
MailPoet.I18n.t('senderEmailAddressWarning2'),
|
||||
/(%suggested|%originalSender|<em>.*<\/em>)/,
|
||||
(match) => {
|
||||
if (match === '%suggested') return suggestedEmailAddress;
|
||||
if (match === '%originalSender') return <em key="sender-email">{ emailAddress }</em>;
|
||||
return <em key="reply-to">{match.replace(/<\/?em>/g, '')}</em>;
|
||||
}
|
||||
)}
|
||||
</p>
|
||||
<p className="sender_email_address_warning">
|
||||
<a
|
||||
href="https://kb.mailpoet.com/article/259-your-from-address-cannot-be-yahoo-com-gmail-com-outlook-com"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
{MailPoet.I18n.t('senderEmailAddressWarning3')}
|
||||
</a>
|
||||
</p>
|
||||
</React.Fragment>
|
||||
);
|
||||
|
||||
OldInstallationWarning.propTypes = {
|
||||
emailAddress: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
const SenderEmailAddressWarning = ({ emailAddress, mssActive, pluginInstalledAt }) => {
|
||||
const emailAddressDomain = emailAddress.split('@').pop().toLowerCase();
|
||||
if (window.mailpoet_free_domains.indexOf(emailAddressDomain) > -1) {
|
||||
const userHostDomain = window.location.hostname.replace('www.', '');
|
||||
return (
|
||||
<React.Fragment>
|
||||
<p className="sender_email_address_warning">{MailPoet.I18n.t('senderEmailAddressWarning1')}</p>
|
||||
<p className="sender_email_address_warning">
|
||||
{ReactStringReplace(
|
||||
MailPoet.I18n.t('senderEmailAddressWarning2'),
|
||||
/(%suggested|%originalSender|<em>.*<\/em>)/,
|
||||
(match) => {
|
||||
if (match === '%suggested') return `info@${userHostDomain}`;
|
||||
if (match === '%originalSender') return <em key="sender-email">{ emailAddress }</em>;
|
||||
return <em key="reply-to">{match.replace(/<\/?em>/g, '')}</em>;
|
||||
}
|
||||
)}
|
||||
</p>
|
||||
<p className="sender_email_address_warning">
|
||||
<a
|
||||
href="https://kb.mailpoet.com/article/259-your-from-address-cannot-be-yahoo-com-gmail-com-outlook-com"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
{MailPoet.I18n.t('senderEmailAddressWarning3')}
|
||||
</a>
|
||||
</p>
|
||||
</React.Fragment>
|
||||
);
|
||||
if (mssActive && moment(pluginInstalledAt).isAfter('2019-03-05')) {
|
||||
return <NewInstallationWithMSSWarning emailAddress={emailAddress} />;
|
||||
}
|
||||
return <OldInstallationWarning emailAddress={emailAddress} />;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
SenderEmailAddressWarning.propTypes = {
|
||||
emailAddress: PropTypes.string.isRequired,
|
||||
mssActive: PropTypes.bool.isRequired,
|
||||
pluginInstalledAt: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default SenderEmailAddressWarning;
|
||||
|
@@ -25,7 +25,11 @@ class SenderField extends React.Component {
|
||||
onValueChange={this.onChange}
|
||||
/>
|
||||
<div className="regular-text">
|
||||
<SenderEmailAddressWarning emailAddress={this.state.emailAddress} />
|
||||
<SenderEmailAddressWarning
|
||||
emailAddress={this.state.emailAddress}
|
||||
mssActive={window.mailpoet_mss_active}
|
||||
pluginInstalledAt={window.mailpoet_installed_at}
|
||||
/>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
|
@@ -66,7 +66,11 @@ class DefaultSender extends React.Component {
|
||||
/>
|
||||
</p>
|
||||
<div className="regular-text">
|
||||
<SenderEmailAddressWarning emailAddress={this.state.senderAddress} />
|
||||
<SenderEmailAddressWarning
|
||||
emailAddress={this.state.senderAddress}
|
||||
mssActive={this.props.mssActive}
|
||||
pluginInstalledAt={this.props.pluginInstalledAt}
|
||||
/>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
@@ -78,6 +82,8 @@ DefaultSender.propTypes = {
|
||||
senderName: PropTypes.string.isRequired,
|
||||
replyToAddress: PropTypes.string.isRequired,
|
||||
replyToName: PropTypes.string.isRequired,
|
||||
mssActive: PropTypes.bool.isRequired,
|
||||
pluginInstalledAt: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default DefaultSender;
|
||||
|
@@ -12,6 +12,8 @@ if (settingsSenderContainer) {
|
||||
senderName: window.mailpoet_settings_sender_name,
|
||||
replyToAddress: window.mailpoet_settings_reply_to_address,
|
||||
replyToName: window.mailpoet_settings_reply_to_name,
|
||||
pluginInstalledAt: window.mailpoet_installed_at,
|
||||
mssActive: window.mailpoet_mss_active,
|
||||
}),
|
||||
settingsSenderContainer
|
||||
);
|
||||
@@ -24,6 +26,8 @@ if (settingsSignupConfirmationSenderContainer) {
|
||||
React.createElement(SignupConfirmationSender, {
|
||||
senderAddress: window.mailpoet_settings_sender_adddress,
|
||||
senderName: window.mailpoet_settings_sender_name,
|
||||
pluginInstalledAt: window.mailpoet_installed_at,
|
||||
mssActive: window.mailpoet_mss_active,
|
||||
}),
|
||||
settingsSignupConfirmationSenderContainer
|
||||
);
|
||||
|
@@ -49,7 +49,11 @@ class SignupConfirmationSender extends React.Component {
|
||||
/>
|
||||
</p>
|
||||
<div className="regular-text">
|
||||
<SenderEmailAddressWarning emailAddress={this.state.senderAddress} />
|
||||
<SenderEmailAddressWarning
|
||||
emailAddress={this.state.senderAddress}
|
||||
mssActive={this.props.mssActive}
|
||||
pluginInstalledAt={this.props.pluginInstalledAt}
|
||||
/>
|
||||
</div>
|
||||
</td>
|
||||
</>
|
||||
@@ -60,6 +64,8 @@ class SignupConfirmationSender extends React.Component {
|
||||
SignupConfirmationSender.propTypes = {
|
||||
senderAddress: PropTypes.string.isRequired,
|
||||
senderName: PropTypes.string.isRequired,
|
||||
mssActive: PropTypes.bool.isRequired,
|
||||
pluginInstalledAt: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default SignupConfirmationSender;
|
||||
|
@@ -22,7 +22,7 @@ const WelcomeWizardSenderStep = props => (
|
||||
>
|
||||
<label htmlFor="senderName">
|
||||
{MailPoet.I18n.t('senderName')}
|
||||
:
|
||||
:
|
||||
<input
|
||||
name="senderName"
|
||||
type="text"
|
||||
@@ -34,7 +34,7 @@ const WelcomeWizardSenderStep = props => (
|
||||
</label>
|
||||
<label htmlFor="senderAddress">
|
||||
{MailPoet.I18n.t('senderAddress')}
|
||||
:
|
||||
:
|
||||
<input
|
||||
name="senderAddress"
|
||||
type="text"
|
||||
@@ -47,7 +47,7 @@ const WelcomeWizardSenderStep = props => (
|
||||
</label>
|
||||
<label htmlFor="replyToAddress">
|
||||
{MailPoet.I18n.t('replyToAddress')}
|
||||
:
|
||||
:
|
||||
<input
|
||||
name="replyToAddress"
|
||||
type="text"
|
||||
@@ -58,7 +58,11 @@ const WelcomeWizardSenderStep = props => (
|
||||
onChange={e => props.update_reply_to({ address: e.target.value })}
|
||||
/>
|
||||
</label>
|
||||
<SenderEmailAddressWarning emailAddress={props.sender.address} />
|
||||
<SenderEmailAddressWarning
|
||||
emailAddress={props.sender.address}
|
||||
mssActive={props.mssActive}
|
||||
pluginInstalledAt={props.pluginInstalledAt}
|
||||
/>
|
||||
<input className="button button-primary" type="submit" value={MailPoet.I18n.t('next')} />
|
||||
<a onClick={props.finish} href="#finish" className="sender_form_small">{MailPoet.I18n.t('noThanksSkip')}</a>
|
||||
</form>
|
||||
@@ -78,6 +82,8 @@ WelcomeWizardSenderStep.propTypes = {
|
||||
reply_to: PropTypes.shape({
|
||||
address: PropTypes.string,
|
||||
}),
|
||||
mssActive: PropTypes.bool.isRequired,
|
||||
pluginInstalledAt: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
WelcomeWizardSenderStep.defaultProps = {
|
||||
|
@@ -91,6 +91,8 @@ const WelcomeWizardStepsController = (props) => {
|
||||
loading={loading}
|
||||
sender={sender}
|
||||
reply_to={replyTo}
|
||||
pluginInstalledAt={window.mailpoet_installed_at}
|
||||
mssActive={window.mailpoet_mss_active}
|
||||
/>
|
||||
) : null
|
||||
}
|
||||
|
@@ -390,6 +390,8 @@ class Menu {
|
||||
'finish_wizard_url' => WPFunctions::get()->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
||||
'sender' => $this->settings->get('sender'),
|
||||
'reply_to' => $this->settings->get('reply_to'),
|
||||
'installed_at' => $this->settings->get('installed_at'),
|
||||
'mss_active' => Bridge::isMPSendingServiceEnabled(),
|
||||
];
|
||||
$this->displayPage('welcome_wizard.html', $data);
|
||||
}
|
||||
@@ -611,6 +613,7 @@ class Menu {
|
||||
});
|
||||
$data['segments'] = $segments;
|
||||
$data['settings'] = $this->settings->getAll();
|
||||
$data['mss_active'] = Bridge::isMPSendingServiceEnabled();
|
||||
$data['current_wp_user'] = WPFunctions::get()->wpGetCurrentUser()->to_array();
|
||||
$data['current_wp_user_firstname'] = WPFunctions::get()->wpGetCurrentUser()->user_firstname;
|
||||
$data['site_url'] = WPFunctions::get()->siteUrl();
|
||||
|
@@ -69,6 +69,11 @@ jQuery('.toplevel_page_mailpoet-newsletters.menu-top-last')
|
||||
'senderEmailAddressWarning1': _x('You might not reach the inbox of your subscribers if you use this email address.', 'In the last step, before sending a newsletter. URL: ?page=mailpoet-newsletters#/send/2'),
|
||||
'senderEmailAddressWarning2': _x('Use an address like %suggested for the Sender and put %originalSender in the <em>Reply-to</em> field below.', 'In the last step, before sending a newsletter. URL: ?page=mailpoet-newsletters#/send/2'),
|
||||
'senderEmailAddressWarning3': _x('Read more.'),
|
||||
|
||||
'senderEmailAddressNewInstallWarning1': __('The MailPoet Sending Service can’t send email with the email address <em>%originalSender</em>.'),
|
||||
'senderEmailAddressNewInstallWarning2': __('You have to use an address like <em>%suggested</em> and put <em>%originalSender</em> in the Reply-to field below.'),
|
||||
'senderEmailAddressNewInstallWarning3': __('This new email address has to be authorized first in your account.'),
|
||||
'senderEmailAddressNewInstallWarning4': __('Authorize your email.'),
|
||||
}) %>
|
||||
<% block translations %><% endblock %>
|
||||
|
||||
|
@@ -32,6 +32,8 @@
|
||||
var mailpoet_review_request_illustration_url = '<%= cdn_url('review-request/review-request-illustration.20181207-1345.png') %>';
|
||||
<% set newUser = (is_new_user == true) ? 'true' : 'false' %>
|
||||
var mailpoet_is_new_user = <%= newUser %>;
|
||||
var mailpoet_installed_at = '<%= settings.installed_at %>';
|
||||
var mailpoet_mss_active = <%= json_encode(mss_active) %>;
|
||||
</script>
|
||||
<% endblock %>
|
||||
|
||||
|
@@ -231,6 +231,8 @@
|
||||
var mailpoet_settings_sender_adddress = "<%= settings.sender.address %>";
|
||||
var mailpoet_settings_reply_to_name = "<%= settings.reply_to.name %>";
|
||||
var mailpoet_settings_reply_to_address = "<%= settings.reply_to.address %>";
|
||||
var mailpoet_installed_at = '<%= settings.installed_at %>';
|
||||
var mailpoet_mss_active = <%= json_encode(settings.mta_group == 'mailpoet') %>;
|
||||
</script>
|
||||
<% endblock %>
|
||||
<% block translations %>
|
||||
|
@@ -10,6 +10,8 @@
|
||||
var finish_wizard_url = '<%= finish_wizard_url %>';
|
||||
var sender_data = <%= json_encode(sender) %>;
|
||||
var reply_to_data = <%= json_encode(reply_to) %>;
|
||||
var mailpoet_installed_at = <%= json_encode(installed_at) %>;
|
||||
var mailpoet_mss_active = <%= json_encode(mss_active) %>;
|
||||
</script>
|
||||
|
||||
<div id="welcome_wizard_container"></div>
|
||||
|
Reference in New Issue
Block a user