Create the WC transactional email only when it's first invoked [MAILPOET-2514]

This commit is contained in:
wxa
2019-11-06 18:19:59 +03:00
committed by Jack Kitterhing
parent eef0610e00
commit a38d08eb7c
6 changed files with 21 additions and 21 deletions

View File

@ -98,9 +98,10 @@ class NewsletterTypes extends React.Component {
'MailPoet Free version': window.mailpoet_version, 'MailPoet Free version': window.mailpoet_version,
'Email type': 'wc_transactional', 'Email type': 'wc_transactional',
}); });
let emailId = window.mailpoet_woocommerce_transactional_email_id;
if (!window.mailpoet_woocommerce_customizer_enabled) { if (!window.mailpoet_woocommerce_customizer_enabled) {
try { try {
await MailPoet.Ajax.post({ const response = await MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'settings', endpoint: 'settings',
action: 'set', action: 'set',
@ -108,12 +109,13 @@ class NewsletterTypes extends React.Component {
'woocommerce.use_mailpoet_editor': 1, 'woocommerce.use_mailpoet_editor': 1,
}, },
}); });
emailId = response.data.woocommerce.transactional_email_id;
} catch (response) { } catch (response) {
MailPoet.Notice.showApiErrorNotice(response, { scroll: true }); MailPoet.Notice.showApiErrorNotice(response, { scroll: true });
return; return;
} }
} }
window.location.href = `?page=mailpoet-newsletter-editor&id=${window.mailpoet_woocommerce_transactional_email_id}`; window.location.href = `?page=mailpoet-newsletter-editor&id=${emailId}`;
}; };
createNewsletter = (type) => { createNewsletter = (type) => {

View File

@ -13,6 +13,7 @@ use MailPoet\Models\ScheduledTask;
use MailPoet\Services\AuthorizedEmailsController; use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class Settings extends APIEndpoint { class Settings extends APIEndpoint {
@ -26,6 +27,9 @@ class Settings extends APIEndpoint {
/** @var AuthorizedEmailsController */ /** @var AuthorizedEmailsController */
private $authorized_emails_controller; private $authorized_emails_controller;
/** @var TransactionalEmails */
private $wc_transactional_emails;
public $permissions = [ public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_SETTINGS, 'global' => AccessControl::PERMISSION_MANAGE_SETTINGS,
]; ];
@ -34,11 +38,13 @@ class Settings extends APIEndpoint {
public function __construct( public function __construct(
SettingsController $settings, SettingsController $settings,
Bridge $bridge, Bridge $bridge,
AuthorizedEmailsController $authorized_emails_controller AuthorizedEmailsController $authorized_emails_controller,
TransactionalEmails $wc_transactional_emails
) { ) {
$this->settings = $settings; $this->settings = $settings;
$this->bridge = $bridge; $this->bridge = $bridge;
$this->authorized_emails_controller = $authorized_emails_controller; $this->authorized_emails_controller = $authorized_emails_controller;
$this->wc_transactional_emails = $wc_transactional_emails;
} }
function get() { function get() {
@ -88,6 +94,10 @@ class Settings extends APIEndpoint {
if ($old_subscribe_old_woocommerce_customers !== $new_subscribe_old_woocommerce_customers) { if ($old_subscribe_old_woocommerce_customers !== $new_subscribe_old_woocommerce_customers) {
$this->onSubscribeOldWoocommerceCustomersChange(); $this->onSubscribeOldWoocommerceCustomersChange();
} }
if (!empty($new_settings['woocommerce']['use_mailpoet_editor'])) {
$this->wc_transactional_emails->init();
}
} }
private function onSubscribeOldWoocommerceCustomersChange() { private function onSubscribeOldWoocommerceCustomersChange() {

View File

@ -50,7 +50,7 @@ class NewsletterEditor {
function render() { function render() {
$newsletter_id = (isset($_GET['id']) ? (int)$_GET['id'] : 0); $newsletter_id = (isset($_GET['id']) ? (int)$_GET['id'] : 0);
$woocommerce_template_id = (int)$this->settings->get('woocommerce.transactional_email_id', null); $woocommerce_template_id = (int)$this->settings->get(TransactionalEmails::SETTING_EMAIL_ID, null);
if ( if (
$woocommerce_template_id $woocommerce_template_id
&& $newsletter_id === $woocommerce_template_id && $newsletter_id === $woocommerce_template_id

View File

@ -16,6 +16,7 @@ use MailPoet\Settings\UserFlagsController;
use MailPoet\Util\Installation; use MailPoet\Util\Installation;
use MailPoet\Util\License\License; use MailPoet\Util\License\License;
use MailPoet\WooCommerce\Helper as WooCommerceHelper; use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\DateTime; use MailPoet\WP\DateTime;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@ -162,7 +163,7 @@ class Newsletters {
$data['is_new_user'] = $this->installation->isNewInstallation(); $data['is_new_user'] = $this->installation->isNewInstallation();
$data['sent_newsletters_count'] = (int)Newsletter::where('status', Newsletter::STATUS_SENT)->count(); $data['sent_newsletters_count'] = (int)Newsletter::where('status', Newsletter::STATUS_SENT)->count();
$data['woocommerce_customizer_enabled'] = (bool)$this->settings->get('woocommerce.use_mailpoet_editor'); $data['woocommerce_customizer_enabled'] = (bool)$this->settings->get('woocommerce.use_mailpoet_editor');
$data['woocommerce_transactional_email_id'] = $this->settings->get('woocommerce.transactional_email_id'); $data['woocommerce_transactional_email_id'] = $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID);
$this->wp->wpEnqueueScript('jquery-ui'); $this->wp->wpEnqueueScript('jquery-ui');
$this->wp->wpEnqueueScript('jquery-ui-datepicker'); $this->wp->wpEnqueueScript('jquery-ui-datepicker');

View File

@ -31,7 +31,6 @@ use MailPoet\Subscribers\NewSubscriberNotificationMailer;
use MailPoet\Subscribers\Source; use MailPoet\Subscribers\Source;
use MailPoet\Subscription\Captcha; use MailPoet\Subscription\Captcha;
use MailPoet\Util\Helpers; use MailPoet\Util\Helpers;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class Populator { class Populator {
@ -50,16 +49,12 @@ class Populator {
/** @var FeaturesController */ /** @var FeaturesController */
private $flags_controller; private $flags_controller;
/** @var TransactionalEmails */
private $wc_transactional_emails;
function __construct( function __construct(
SettingsController $settings, SettingsController $settings,
WPFunctions $wp, WPFunctions $wp,
Captcha $captcha, Captcha $captcha,
ReferralDetector $referralDetector, ReferralDetector $referralDetector,
FeaturesController $flags_controller, FeaturesController $flags_controller
TransactionalEmails $wc_transactional_emails
) { ) {
$this->settings = $settings; $this->settings = $settings;
$this->wp = $wp; $this->wp = $wp;
@ -147,7 +142,6 @@ class Populator {
'FarmersMarket', 'FarmersMarket',
]; ];
$this->flags_controller = $flags_controller; $this->flags_controller = $flags_controller;
$this->wc_transactional_emails = $wc_transactional_emails;
} }
function up() { function up() {
@ -173,7 +167,6 @@ class Populator {
$this->scheduleSubscriberLinkTokens(); $this->scheduleSubscriberLinkTokens();
$this->detectReferral(); $this->detectReferral();
$this->updateFormsSuccessMessages(); $this->updateFormsSuccessMessages();
$this->initWooCommerceTransactionalEmails();
$this->moveGoogleAnalyticsFromPremium(); $this->moveGoogleAnalyticsFromPremium();
} }
@ -724,11 +717,4 @@ class Populator {
private function detectReferral() { private function detectReferral() {
$this->referralDetector->detect(); $this->referralDetector->detect();
} }
private function initWooCommerceTransactionalEmails() {
$feature_enabled = $this->flags_controller->isSupported(FeaturesController::WC_TRANSACTIONAL_EMAILS_CUSTOMIZER);
if ($feature_enabled) {
$this->wc_transactional_emails->init();
}
}
} }

View File

@ -5,6 +5,7 @@ namespace MailPoet\WooCommerce;
use MailPoet\Config\Renderer; use MailPoet\Config\Renderer;
use MailPoet\Features\FeaturesController; use MailPoet\Features\FeaturesController;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\TransactionalEmails;
class Settings { class Settings {
@ -43,7 +44,7 @@ class Settings {
} }
echo $this->renderer->render('woocommerce/settings_overlay.html', [ echo $this->renderer->render('woocommerce/settings_overlay.html', [
'woocommerce_template_id' => $this->settings->get('woocommerce.transactional_email_id'), 'woocommerce_template_id' => $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID),
]); ]);
} }
} }