Add new modal for authorizing FROM address
[MAILPOET-2804]
This commit is contained in:
@@ -0,0 +1,15 @@
|
|||||||
|
#set-from-address-modal {
|
||||||
|
p:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mailpoet_set_from_address_modal_address {
|
||||||
|
display: block;
|
||||||
|
width: 230px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mailpoet_set_from_address_modal_save {
|
||||||
|
display: block;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
}
|
@@ -46,6 +46,7 @@
|
|||||||
@import 'components-plugin/newsletter-congratulate';
|
@import 'components-plugin/newsletter-congratulate';
|
||||||
@import 'components-plugin/discounts';
|
@import 'components-plugin/discounts';
|
||||||
@import 'components-plugin/review-request';
|
@import 'components-plugin/review-request';
|
||||||
|
@import 'components-plugin/set-from-address-modal';
|
||||||
@import 'components-plugin/stats';
|
@import 'components-plugin/stats';
|
||||||
@import 'components-plugin/import-export';
|
@import 'components-plugin/import-export';
|
||||||
@import 'components-plugin/toggle';
|
@import 'components-plugin/toggle';
|
||||||
|
47
assets/js/src/common/set_from_address_modal.tsx
Normal file
47
assets/js/src/common/set_from_address_modal.tsx
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ReactDOMServer from 'react-dom/server';
|
||||||
|
import ReactStringReplace from 'react-string-replace';
|
||||||
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
|
const showSetFromAddressModal = async () => {
|
||||||
|
MailPoet.Modal.popup({
|
||||||
|
title: MailPoet.I18n.t('setFromAddressModalTitle'),
|
||||||
|
template: ReactDOMServer.renderToString(
|
||||||
|
<div id="set-from-address-modal">
|
||||||
|
<p>
|
||||||
|
{
|
||||||
|
ReactStringReplace(
|
||||||
|
MailPoet.I18n.t('setFromAddressModalDescription'),
|
||||||
|
/\[link\](.*?)\[\/link\]/g,
|
||||||
|
(match) => (
|
||||||
|
<a
|
||||||
|
key="setFromAddressModalDescriptionLink"
|
||||||
|
href="https://account.mailpoet.com/authorization"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
{match}
|
||||||
|
</a>
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<input
|
||||||
|
id="mailpoet_set_from_address_modal_address"
|
||||||
|
type="text"
|
||||||
|
placeholder="from@mydomain.com"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<input
|
||||||
|
id="mailpoet_set_from_address_modal_save"
|
||||||
|
className="button button-primary"
|
||||||
|
type="submit"
|
||||||
|
value={MailPoet.I18n.t('setFromAddressModalSave')}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export default showSetFromAddressModal;
|
@@ -2,11 +2,18 @@ import PropTypes from 'prop-types';
|
|||||||
import React, { useMemo, useState } from 'react';
|
import React, { useMemo, useState } from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
import showSetFromAddressModal from 'common/set_from_address_modal.tsx';
|
||||||
import KeyMessages from 'old_settings/premium_tab/messages/key_messages.jsx';
|
import KeyMessages from 'old_settings/premium_tab/messages/key_messages.jsx';
|
||||||
import { MssStatus, MssMessages } from 'old_settings/premium_tab/messages/mss_messages.jsx';
|
import { MssStatus, MssMessages } from 'old_settings/premium_tab/messages/mss_messages.jsx';
|
||||||
import { PremiumStatus, PremiumMessages } from 'old_settings/premium_tab/messages/premium_messages.jsx';
|
import { PremiumStatus, PremiumMessages } from 'old_settings/premium_tab/messages/premium_messages.jsx';
|
||||||
import { PremiumInstallationStatus } from 'old_settings/premium_tab/messages/premium_installation_messages.jsx';
|
import { PremiumInstallationStatus } from 'old_settings/premium_tab/messages/premium_installation_messages.jsx';
|
||||||
|
|
||||||
|
const getSettings = async () => MailPoet.Ajax.post({
|
||||||
|
api_version: window.mailpoet_api_version,
|
||||||
|
endpoint: 'settings',
|
||||||
|
action: 'get',
|
||||||
|
});
|
||||||
|
|
||||||
const requestServicesApi = async (key, action) => MailPoet.Ajax.post({
|
const requestServicesApi = async (key, action) => MailPoet.Ajax.post({
|
||||||
api_version: window.mailpoet_api_version,
|
api_version: window.mailpoet_api_version,
|
||||||
endpoint: 'services',
|
endpoint: 'services',
|
||||||
@@ -183,6 +190,17 @@ const PremiumTab = (props) => {
|
|||||||
await verifyMailPoetSendingServiceKey(isUserTriggered);
|
await verifyMailPoetSendingServiceKey(isUserTriggered);
|
||||||
await verifyMailPoetPremiumKey();
|
await verifyMailPoetPremiumKey();
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
|
|
||||||
|
// show modal to set authorized FROM address, if needed
|
||||||
|
if (isUserTriggered) {
|
||||||
|
const settings = await getSettings();
|
||||||
|
const authorizedAddressNeeded = !settings.data.sender.address
|
||||||
|
|| settings.data.authorized_emails_addresses_check;
|
||||||
|
|
||||||
|
if (mssStatus === MssStatus.KEY_VALID_MSS_ACTIVE && authorizedAddressNeeded) {
|
||||||
|
showSetFromAddressModal();
|
||||||
|
}
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{MailPoet.I18n.t('premiumTabVerifyButton')}
|
{MailPoet.I18n.t('premiumTabVerifyButton')}
|
||||||
|
@@ -89,6 +89,10 @@ jQuery('.toplevel_page_mailpoet-newsletters.menu-top-last')
|
|||||||
'youNeedToUpgrade': __('You need to upgrade now to be able to continue using MailPoet.'),
|
'youNeedToUpgrade': __('You need to upgrade now to be able to continue using MailPoet.'),
|
||||||
'upgradeNow': __('Upgrade Now'),
|
'upgradeNow': __('Upgrade Now'),
|
||||||
'refreshMySubscribers': __('I’ve upgraded my subscription, refresh subscriber limit'),
|
'refreshMySubscribers': __('I’ve upgraded my subscription, refresh subscriber limit'),
|
||||||
|
|
||||||
|
'setFromAddressModalTitle': __('It’s time to set your default FROM address!', 'mailpoet'),
|
||||||
|
'setFromAddressModalDescription': __('Set one of [link]your authorized email addresses[/link] as the default FROM email for your MailPoet emails.', 'mailpoet'),
|
||||||
|
'setFromAddressModalSave': __('Save', 'mailpoet'),
|
||||||
}) %>
|
}) %>
|
||||||
<% block translations %><% endblock %>
|
<% block translations %><% endblock %>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user