diff --git a/assets/js/src/newsletters/types.jsx b/assets/js/src/newsletters/types.jsx index 6e93e125df..322cc1cc9a 100644 --- a/assets/js/src/newsletters/types.jsx +++ b/assets/js/src/newsletters/types.jsx @@ -98,9 +98,10 @@ class NewsletterTypes extends React.Component { 'MailPoet Free version': window.mailpoet_version, 'Email type': 'wc_transactional', }); + let emailId = window.mailpoet_woocommerce_transactional_email_id; if (!window.mailpoet_woocommerce_customizer_enabled) { try { - await MailPoet.Ajax.post({ + const response = await MailPoet.Ajax.post({ api_version: window.mailpoet_api_version, endpoint: 'settings', action: 'set', @@ -108,12 +109,13 @@ class NewsletterTypes extends React.Component { 'woocommerce.use_mailpoet_editor': 1, }, }); + emailId = response.data.woocommerce.transactional_email_id; } catch (response) { MailPoet.Notice.showApiErrorNotice(response, { scroll: true }); 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) => { diff --git a/lib/API/JSON/v1/Settings.php b/lib/API/JSON/v1/Settings.php index 84da31c7e1..83b7aa03f5 100644 --- a/lib/API/JSON/v1/Settings.php +++ b/lib/API/JSON/v1/Settings.php @@ -13,6 +13,7 @@ use MailPoet\Models\ScheduledTask; use MailPoet\Services\AuthorizedEmailsController; use MailPoet\Services\Bridge; use MailPoet\Settings\SettingsController; +use MailPoet\WooCommerce\TransactionalEmails; use MailPoet\WP\Functions as WPFunctions; class Settings extends APIEndpoint { @@ -26,6 +27,9 @@ class Settings extends APIEndpoint { /** @var AuthorizedEmailsController */ private $authorized_emails_controller; + /** @var TransactionalEmails */ + private $wc_transactional_emails; + public $permissions = [ 'global' => AccessControl::PERMISSION_MANAGE_SETTINGS, ]; @@ -34,11 +38,13 @@ class Settings extends APIEndpoint { public function __construct( SettingsController $settings, Bridge $bridge, - AuthorizedEmailsController $authorized_emails_controller + AuthorizedEmailsController $authorized_emails_controller, + TransactionalEmails $wc_transactional_emails ) { $this->settings = $settings; $this->bridge = $bridge; $this->authorized_emails_controller = $authorized_emails_controller; + $this->wc_transactional_emails = $wc_transactional_emails; } function get() { @@ -88,6 +94,10 @@ class Settings extends APIEndpoint { if ($old_subscribe_old_woocommerce_customers !== $new_subscribe_old_woocommerce_customers) { $this->onSubscribeOldWoocommerceCustomersChange(); } + + if (!empty($new_settings['woocommerce']['use_mailpoet_editor'])) { + $this->wc_transactional_emails->init(); + } } private function onSubscribeOldWoocommerceCustomersChange() { diff --git a/lib/AdminPages/Pages/NewsletterEditor.php b/lib/AdminPages/Pages/NewsletterEditor.php index ad3c9a84ef..5310b86050 100644 --- a/lib/AdminPages/Pages/NewsletterEditor.php +++ b/lib/AdminPages/Pages/NewsletterEditor.php @@ -50,7 +50,7 @@ class NewsletterEditor { function render() { $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 ( $woocommerce_template_id && $newsletter_id === $woocommerce_template_id diff --git a/lib/AdminPages/Pages/Newsletters.php b/lib/AdminPages/Pages/Newsletters.php index 5bef59c5f7..a7649843ec 100644 --- a/lib/AdminPages/Pages/Newsletters.php +++ b/lib/AdminPages/Pages/Newsletters.php @@ -16,6 +16,7 @@ use MailPoet\Settings\UserFlagsController; use MailPoet\Util\Installation; use MailPoet\Util\License\License; use MailPoet\WooCommerce\Helper as WooCommerceHelper; +use MailPoet\WooCommerce\TransactionalEmails; use MailPoet\WP\DateTime; use MailPoet\WP\Functions as WPFunctions; @@ -162,7 +163,7 @@ class Newsletters { $data['is_new_user'] = $this->installation->isNewInstallation(); $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_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-datepicker'); diff --git a/lib/Config/Populator.php b/lib/Config/Populator.php index 5b10380473..555af24214 100644 --- a/lib/Config/Populator.php +++ b/lib/Config/Populator.php @@ -31,7 +31,6 @@ use MailPoet\Subscribers\NewSubscriberNotificationMailer; use MailPoet\Subscribers\Source; use MailPoet\Subscription\Captcha; use MailPoet\Util\Helpers; -use MailPoet\WooCommerce\TransactionalEmails; use MailPoet\WP\Functions as WPFunctions; class Populator { @@ -50,16 +49,12 @@ class Populator { /** @var FeaturesController */ private $flags_controller; - /** @var TransactionalEmails */ - private $wc_transactional_emails; - function __construct( SettingsController $settings, WPFunctions $wp, Captcha $captcha, ReferralDetector $referralDetector, - FeaturesController $flags_controller, - TransactionalEmails $wc_transactional_emails + FeaturesController $flags_controller ) { $this->settings = $settings; $this->wp = $wp; @@ -147,7 +142,6 @@ class Populator { 'FarmersMarket', ]; $this->flags_controller = $flags_controller; - $this->wc_transactional_emails = $wc_transactional_emails; } function up() { @@ -173,7 +167,6 @@ class Populator { $this->scheduleSubscriberLinkTokens(); $this->detectReferral(); $this->updateFormsSuccessMessages(); - $this->initWooCommerceTransactionalEmails(); $this->moveGoogleAnalyticsFromPremium(); } @@ -724,11 +717,4 @@ class Populator { private function detectReferral() { $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(); - } - } } diff --git a/lib/WooCommerce/Settings.php b/lib/WooCommerce/Settings.php index 91a033875a..2209ef30e9 100644 --- a/lib/WooCommerce/Settings.php +++ b/lib/WooCommerce/Settings.php @@ -5,6 +5,7 @@ namespace MailPoet\WooCommerce; use MailPoet\Config\Renderer; use MailPoet\Features\FeaturesController; use MailPoet\Settings\SettingsController; +use MailPoet\WooCommerce\TransactionalEmails; class Settings { @@ -43,7 +44,7 @@ class Settings { } 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), ]); } }