Refactor initialization of the email editor
This changes how the editor is initialized. The integration initialization class doesn't get the engine class anymore, but integration is initialized via mailpoet_email_editor_initialized action triggered from the engine. This allows multiple integrations to hook into the engine. [MAILPOET-5540]
This commit is contained in:
committed by
Jan Lysý
parent
2517023ad0
commit
b70ad064c7
@@ -11,7 +11,8 @@ use MailPoet\Automation\Integrations\MailPoet\MailPoetIntegration;
|
|||||||
use MailPoet\Automation\Integrations\WooCommerce\WooCommerceIntegration;
|
use MailPoet\Automation\Integrations\WooCommerce\WooCommerceIntegration;
|
||||||
use MailPoet\Cron\CronTrigger;
|
use MailPoet\Cron\CronTrigger;
|
||||||
use MailPoet\Cron\DaemonActionSchedulerRunner;
|
use MailPoet\Cron\DaemonActionSchedulerRunner;
|
||||||
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor;
|
use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||||
|
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as MailpoetEmailEditorIntegration;
|
||||||
use MailPoet\InvalidStateException;
|
use MailPoet\InvalidStateException;
|
||||||
use MailPoet\Migrator\Cli as MigratorCli;
|
use MailPoet\Migrator\Cli as MigratorCli;
|
||||||
use MailPoet\PostEditorBlocks\PostEditorBlock;
|
use MailPoet\PostEditorBlocks\PostEditorBlock;
|
||||||
@@ -122,6 +123,9 @@ class Initializer {
|
|||||||
/** @var EmailEditor */
|
/** @var EmailEditor */
|
||||||
private $emailEditor;
|
private $emailEditor;
|
||||||
|
|
||||||
|
/** @var MailpoetEmailEditorIntegration */
|
||||||
|
private $mailpoetEmailEditorIntegration;
|
||||||
|
|
||||||
/** @var Url */
|
/** @var Url */
|
||||||
private $urlHelper;
|
private $urlHelper;
|
||||||
|
|
||||||
@@ -160,6 +164,7 @@ class Initializer {
|
|||||||
PersonalDataExporters $personalDataExporters,
|
PersonalDataExporters $personalDataExporters,
|
||||||
DaemonActionSchedulerRunner $actionSchedulerRunner,
|
DaemonActionSchedulerRunner $actionSchedulerRunner,
|
||||||
EmailEditor $emailEditor,
|
EmailEditor $emailEditor,
|
||||||
|
MailpoetEmailEditorIntegration $mailpoetEmailEditorIntegration,
|
||||||
Url $urlHelper
|
Url $urlHelper
|
||||||
) {
|
) {
|
||||||
$this->rendererFactory = $rendererFactory;
|
$this->rendererFactory = $rendererFactory;
|
||||||
@@ -192,6 +197,7 @@ class Initializer {
|
|||||||
$this->personalDataExporters = $personalDataExporters;
|
$this->personalDataExporters = $personalDataExporters;
|
||||||
$this->actionSchedulerRunner = $actionSchedulerRunner;
|
$this->actionSchedulerRunner = $actionSchedulerRunner;
|
||||||
$this->emailEditor = $emailEditor;
|
$this->emailEditor = $emailEditor;
|
||||||
|
$this->mailpoetEmailEditorIntegration = $mailpoetEmailEditorIntegration;
|
||||||
$this->urlHelper = $urlHelper;
|
$this->urlHelper = $urlHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,6 +279,11 @@ class Initializer {
|
|||||||
'multisiteDropTables',
|
'multisiteDropTables',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$this->wpFunctions->addFilter('mailpoet_email_editor_initialized', [
|
||||||
|
$this->mailpoetEmailEditorIntegration,
|
||||||
|
'initialize',
|
||||||
|
]);
|
||||||
|
|
||||||
WPFunctions::get()->addAction(AutomationHooks::INITIALIZE, [
|
WPFunctions::get()->addAction(AutomationHooks::INITIALIZE, [
|
||||||
$this->automationMailPoetIntegration,
|
$this->automationMailPoetIntegration,
|
||||||
'register',
|
'register',
|
||||||
|
@@ -22,10 +22,11 @@ class EmailEditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function initialize(): void {
|
public function initialize(): void {
|
||||||
$this->registerEmailPostTypes();
|
|
||||||
add_filter('allowed_block_types_all', [$this, 'setAllowedBlocksInEmails'], 100, 2);
|
add_filter('allowed_block_types_all', [$this, 'setAllowedBlocksInEmails'], 100, 2);
|
||||||
add_filter('enqueue_block_editor_assets', [$this, 'cleanupBlockEditorAssets'], ~PHP_INT_MAX);
|
add_filter('enqueue_block_editor_assets', [$this, 'cleanupBlockEditorAssets'], ~PHP_INT_MAX);
|
||||||
add_filter('block_editor_settings_all', [$this, 'updateBlockEditorSettings'], 100, 2);
|
add_filter('block_editor_settings_all', [$this, 'updateBlockEditorSettings'], 100, 2);
|
||||||
|
do_action('mailpoet_email_editor_initialized');
|
||||||
|
$this->registerEmailPostTypes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
namespace MailPoet\EmailEditor\Integrations\MailPoet;
|
namespace MailPoet\EmailEditor\Integrations\MailPoet;
|
||||||
|
|
||||||
use MailPoet\Config\Env;
|
use MailPoet\Config\Env;
|
||||||
use MailPoet\EmailEditor\Engine\EmailEditor as CoreEmailEditor;
|
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Features\FeaturesController;
|
use MailPoet\Features\FeaturesController;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
@@ -12,9 +11,6 @@ use MailPoet\WP\Functions as WPFunctions;
|
|||||||
class EmailEditor {
|
class EmailEditor {
|
||||||
const MAILPOET_EMAIL_POST_TYPE = 'mailpoet_email';
|
const MAILPOET_EMAIL_POST_TYPE = 'mailpoet_email';
|
||||||
|
|
||||||
/** @var \MailPoet\EmailEditor\Engine\EmailEditor */
|
|
||||||
private $coreEmailEditor;
|
|
||||||
|
|
||||||
/** @var WPFunctions */
|
/** @var WPFunctions */
|
||||||
private $wp;
|
private $wp;
|
||||||
|
|
||||||
@@ -28,13 +24,11 @@ class EmailEditor {
|
|||||||
private $emailApiController;
|
private $emailApiController;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
CoreEmailEditor $coreEmailEditor,
|
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
FeaturesController $featuresController,
|
FeaturesController $featuresController,
|
||||||
NewslettersRepository $newsletterRepository,
|
NewslettersRepository $newsletterRepository,
|
||||||
EmailApiController $emailApiController
|
EmailApiController $emailApiController
|
||||||
) {
|
) {
|
||||||
$this->coreEmailEditor = $coreEmailEditor;
|
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->featuresController = $featuresController;
|
$this->featuresController = $featuresController;
|
||||||
$this->newsletterRepository = $newsletterRepository;
|
$this->newsletterRepository = $newsletterRepository;
|
||||||
@@ -50,7 +44,6 @@ class EmailEditor {
|
|||||||
$this->wp->addFilter('save_post', [$this, 'onEmailSave'], 10, 2);
|
$this->wp->addFilter('save_post', [$this, 'onEmailSave'], 10, 2);
|
||||||
$this->wp->addAction('enqueue_block_editor_assets', [$this, 'enqueueAssets']);
|
$this->wp->addAction('enqueue_block_editor_assets', [$this, 'enqueueAssets']);
|
||||||
$this->extendEmailPostApi();
|
$this->extendEmailPostApi();
|
||||||
$this->coreEmailEditor->initialize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addEmailPostType(array $postTypes): array {
|
public function addEmailPostType(array $postTypes): array {
|
||||||
|
@@ -27,6 +27,7 @@ class EmailEditorTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItRegistersMailPoetEmailPostType() {
|
public function testItRegistersMailPoetEmailPostType() {
|
||||||
$this->emailEditor->initialize();
|
$this->emailEditor->initialize();
|
||||||
|
$this->diContainer->get(\MailPoet\EmailEditor\Engine\EmailEditor::class)->initialize();
|
||||||
$postTypes = get_post_types();
|
$postTypes = get_post_types();
|
||||||
$this->assertArrayHasKey('mailpoet_email', $postTypes);
|
$this->assertArrayHasKey('mailpoet_email', $postTypes);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user