Update sender warning message
[MAILPOET-1890]
This commit is contained in:
@@ -1,43 +1,103 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
import moment from 'moment';
|
||||||
import ReactStringReplace from 'react-string-replace';
|
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();
|
const emailAddressDomain = emailAddress.split('@').pop().toLowerCase();
|
||||||
if (window.mailpoet_free_domains.indexOf(emailAddressDomain) > -1) {
|
if (window.mailpoet_free_domains.indexOf(emailAddressDomain) > -1) {
|
||||||
const userHostDomain = window.location.hostname.replace('www.', '');
|
if (mssActive && moment(pluginInstalledAt).isAfter('2019-03-05')) {
|
||||||
return (
|
return <NewInstallationWithMSSWarning emailAddress={emailAddress} />;
|
||||||
<React.Fragment>
|
}
|
||||||
<p className="sender_email_address_warning">{MailPoet.I18n.t('senderEmailAddressWarning1')}</p>
|
return <OldInstallationWarning emailAddress={emailAddress} />;
|
||||||
<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>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
SenderEmailAddressWarning.propTypes = {
|
SenderEmailAddressWarning.propTypes = {
|
||||||
emailAddress: PropTypes.string.isRequired,
|
emailAddress: PropTypes.string.isRequired,
|
||||||
|
mssActive: PropTypes.bool.isRequired,
|
||||||
|
pluginInstalledAt: PropTypes.string.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default SenderEmailAddressWarning;
|
export default SenderEmailAddressWarning;
|
||||||
|
@@ -25,7 +25,11 @@ class SenderField extends React.Component {
|
|||||||
onValueChange={this.onChange}
|
onValueChange={this.onChange}
|
||||||
/>
|
/>
|
||||||
<div className="regular-text">
|
<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>
|
</div>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
|
@@ -66,7 +66,11 @@ class DefaultSender extends React.Component {
|
|||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
<div className="regular-text">
|
<div className="regular-text">
|
||||||
<SenderEmailAddressWarning emailAddress={this.state.senderAddress} />
|
<SenderEmailAddressWarning
|
||||||
|
emailAddress={this.state.senderAddress}
|
||||||
|
mssActive={this.props.mssActive}
|
||||||
|
pluginInstalledAt={this.props.pluginInstalledAt}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
@@ -78,6 +82,8 @@ DefaultSender.propTypes = {
|
|||||||
senderName: PropTypes.string.isRequired,
|
senderName: PropTypes.string.isRequired,
|
||||||
replyToAddress: PropTypes.string.isRequired,
|
replyToAddress: PropTypes.string.isRequired,
|
||||||
replyToName: PropTypes.string.isRequired,
|
replyToName: PropTypes.string.isRequired,
|
||||||
|
mssActive: PropTypes.bool.isRequired,
|
||||||
|
pluginInstalledAt: PropTypes.string.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default DefaultSender;
|
export default DefaultSender;
|
||||||
|
@@ -12,6 +12,8 @@ if (settingsSenderContainer) {
|
|||||||
senderName: window.mailpoet_settings_sender_name,
|
senderName: window.mailpoet_settings_sender_name,
|
||||||
replyToAddress: window.mailpoet_settings_reply_to_address,
|
replyToAddress: window.mailpoet_settings_reply_to_address,
|
||||||
replyToName: window.mailpoet_settings_reply_to_name,
|
replyToName: window.mailpoet_settings_reply_to_name,
|
||||||
|
pluginInstalledAt: window.mailpoet_installed_at,
|
||||||
|
mssActive: window.mailpoet_mss_active,
|
||||||
}),
|
}),
|
||||||
settingsSenderContainer
|
settingsSenderContainer
|
||||||
);
|
);
|
||||||
@@ -24,6 +26,8 @@ if (settingsSignupConfirmationSenderContainer) {
|
|||||||
React.createElement(SignupConfirmationSender, {
|
React.createElement(SignupConfirmationSender, {
|
||||||
senderAddress: window.mailpoet_settings_sender_adddress,
|
senderAddress: window.mailpoet_settings_sender_adddress,
|
||||||
senderName: window.mailpoet_settings_sender_name,
|
senderName: window.mailpoet_settings_sender_name,
|
||||||
|
pluginInstalledAt: window.mailpoet_installed_at,
|
||||||
|
mssActive: window.mailpoet_mss_active,
|
||||||
}),
|
}),
|
||||||
settingsSignupConfirmationSenderContainer
|
settingsSignupConfirmationSenderContainer
|
||||||
);
|
);
|
||||||
|
@@ -49,7 +49,11 @@ class SignupConfirmationSender extends React.Component {
|
|||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
<div className="regular-text">
|
<div className="regular-text">
|
||||||
<SenderEmailAddressWarning emailAddress={this.state.senderAddress} />
|
<SenderEmailAddressWarning
|
||||||
|
emailAddress={this.state.senderAddress}
|
||||||
|
mssActive={this.props.mssActive}
|
||||||
|
pluginInstalledAt={this.props.pluginInstalledAt}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</>
|
</>
|
||||||
@@ -60,6 +64,8 @@ class SignupConfirmationSender extends React.Component {
|
|||||||
SignupConfirmationSender.propTypes = {
|
SignupConfirmationSender.propTypes = {
|
||||||
senderAddress: PropTypes.string.isRequired,
|
senderAddress: PropTypes.string.isRequired,
|
||||||
senderName: PropTypes.string.isRequired,
|
senderName: PropTypes.string.isRequired,
|
||||||
|
mssActive: PropTypes.bool.isRequired,
|
||||||
|
pluginInstalledAt: PropTypes.string.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default SignupConfirmationSender;
|
export default SignupConfirmationSender;
|
||||||
|
@@ -22,7 +22,7 @@ const WelcomeWizardSenderStep = props => (
|
|||||||
>
|
>
|
||||||
<label htmlFor="senderName">
|
<label htmlFor="senderName">
|
||||||
{MailPoet.I18n.t('senderName')}
|
{MailPoet.I18n.t('senderName')}
|
||||||
:
|
:
|
||||||
<input
|
<input
|
||||||
name="senderName"
|
name="senderName"
|
||||||
type="text"
|
type="text"
|
||||||
@@ -34,7 +34,7 @@ const WelcomeWizardSenderStep = props => (
|
|||||||
</label>
|
</label>
|
||||||
<label htmlFor="senderAddress">
|
<label htmlFor="senderAddress">
|
||||||
{MailPoet.I18n.t('senderAddress')}
|
{MailPoet.I18n.t('senderAddress')}
|
||||||
:
|
:
|
||||||
<input
|
<input
|
||||||
name="senderAddress"
|
name="senderAddress"
|
||||||
type="text"
|
type="text"
|
||||||
@@ -47,7 +47,7 @@ const WelcomeWizardSenderStep = props => (
|
|||||||
</label>
|
</label>
|
||||||
<label htmlFor="replyToAddress">
|
<label htmlFor="replyToAddress">
|
||||||
{MailPoet.I18n.t('replyToAddress')}
|
{MailPoet.I18n.t('replyToAddress')}
|
||||||
:
|
:
|
||||||
<input
|
<input
|
||||||
name="replyToAddress"
|
name="replyToAddress"
|
||||||
type="text"
|
type="text"
|
||||||
@@ -58,7 +58,11 @@ const WelcomeWizardSenderStep = props => (
|
|||||||
onChange={e => props.update_reply_to({ address: e.target.value })}
|
onChange={e => props.update_reply_to({ address: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</label>
|
</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')} />
|
<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>
|
<a onClick={props.finish} href="#finish" className="sender_form_small">{MailPoet.I18n.t('noThanksSkip')}</a>
|
||||||
</form>
|
</form>
|
||||||
@@ -78,6 +82,8 @@ WelcomeWizardSenderStep.propTypes = {
|
|||||||
reply_to: PropTypes.shape({
|
reply_to: PropTypes.shape({
|
||||||
address: PropTypes.string,
|
address: PropTypes.string,
|
||||||
}),
|
}),
|
||||||
|
mssActive: PropTypes.bool.isRequired,
|
||||||
|
pluginInstalledAt: PropTypes.string.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
WelcomeWizardSenderStep.defaultProps = {
|
WelcomeWizardSenderStep.defaultProps = {
|
||||||
|
@@ -91,6 +91,8 @@ const WelcomeWizardStepsController = (props) => {
|
|||||||
loading={loading}
|
loading={loading}
|
||||||
sender={sender}
|
sender={sender}
|
||||||
reply_to={replyTo}
|
reply_to={replyTo}
|
||||||
|
pluginInstalledAt={window.mailpoet_installed_at}
|
||||||
|
mssActive={window.mailpoet_mss_active}
|
||||||
/>
|
/>
|
||||||
) : null
|
) : null
|
||||||
}
|
}
|
||||||
|
@@ -390,6 +390,8 @@ class Menu {
|
|||||||
'finish_wizard_url' => WPFunctions::get()->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
'finish_wizard_url' => WPFunctions::get()->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
||||||
'sender' => $this->settings->get('sender'),
|
'sender' => $this->settings->get('sender'),
|
||||||
'reply_to' => $this->settings->get('reply_to'),
|
'reply_to' => $this->settings->get('reply_to'),
|
||||||
|
'installed_at' => $this->settings->get('installed_at'),
|
||||||
|
'mss_active' => Bridge::isMPSendingServiceEnabled(),
|
||||||
];
|
];
|
||||||
$this->displayPage('welcome_wizard.html', $data);
|
$this->displayPage('welcome_wizard.html', $data);
|
||||||
}
|
}
|
||||||
@@ -611,6 +613,7 @@ class Menu {
|
|||||||
});
|
});
|
||||||
$data['segments'] = $segments;
|
$data['segments'] = $segments;
|
||||||
$data['settings'] = $this->settings->getAll();
|
$data['settings'] = $this->settings->getAll();
|
||||||
|
$data['mss_active'] = Bridge::isMPSendingServiceEnabled();
|
||||||
$data['current_wp_user'] = WPFunctions::get()->wpGetCurrentUser()->to_array();
|
$data['current_wp_user'] = WPFunctions::get()->wpGetCurrentUser()->to_array();
|
||||||
$data['current_wp_user_firstname'] = WPFunctions::get()->wpGetCurrentUser()->user_firstname;
|
$data['current_wp_user_firstname'] = WPFunctions::get()->wpGetCurrentUser()->user_firstname;
|
||||||
$data['site_url'] = WPFunctions::get()->siteUrl();
|
$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'),
|
'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'),
|
'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.'),
|
'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 %>
|
<% block translations %><% endblock %>
|
||||||
|
|
||||||
|
@@ -32,6 +32,8 @@
|
|||||||
var mailpoet_review_request_illustration_url = '<%= cdn_url('review-request/review-request-illustration.20181207-1345.png') %>';
|
var mailpoet_review_request_illustration_url = '<%= cdn_url('review-request/review-request-illustration.20181207-1345.png') %>';
|
||||||
<% set newUser = (is_new_user == true) ? 'true' : 'false' %>
|
<% set newUser = (is_new_user == true) ? 'true' : 'false' %>
|
||||||
var mailpoet_is_new_user = <%= newUser %>;
|
var mailpoet_is_new_user = <%= newUser %>;
|
||||||
|
var mailpoet_installed_at = '<%= settings.installed_at %>';
|
||||||
|
var mailpoet_mss_active = <%= json_encode(mss_active) %>;
|
||||||
</script>
|
</script>
|
||||||
<% endblock %>
|
<% endblock %>
|
||||||
|
|
||||||
|
@@ -231,6 +231,8 @@
|
|||||||
var mailpoet_settings_sender_adddress = "<%= settings.sender.address %>";
|
var mailpoet_settings_sender_adddress = "<%= settings.sender.address %>";
|
||||||
var mailpoet_settings_reply_to_name = "<%= settings.reply_to.name %>";
|
var mailpoet_settings_reply_to_name = "<%= settings.reply_to.name %>";
|
||||||
var mailpoet_settings_reply_to_address = "<%= settings.reply_to.address %>";
|
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>
|
</script>
|
||||||
<% endblock %>
|
<% endblock %>
|
||||||
<% block translations %>
|
<% block translations %>
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
var finish_wizard_url = '<%= finish_wizard_url %>';
|
var finish_wizard_url = '<%= finish_wizard_url %>';
|
||||||
var sender_data = <%= json_encode(sender) %>;
|
var sender_data = <%= json_encode(sender) %>;
|
||||||
var reply_to_data = <%= json_encode(reply_to) %>;
|
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>
|
</script>
|
||||||
|
|
||||||
<div id="welcome_wizard_container"></div>
|
<div id="welcome_wizard_container"></div>
|
||||||
|
Reference in New Issue
Block a user