Update sender warning message

[MAILPOET-1890]
This commit is contained in:
Pavel Dohnal
2019-03-18 16:01:52 +01:00
committed by M. Shull
parent ff4d5be38a
commit 6fc68bb979
12 changed files with 136 additions and 34 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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 = {

View File

@@ -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
}

View File

@@ -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();

View File

@@ -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 cant 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 %>

View File

@@ -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 %>

View File

@@ -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 %>

View File

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