From fd2c13a2e303ddfe8973eb35e2b3762a619f58e0 Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Thu, 6 Feb 2020 14:05:23 +0100 Subject: [PATCH] Refactor block registering [MAILPOET-1798] --- lib/Config/Initializer.php | 3 +- lib/DI/ContainerConfigurator.php | 3 +- lib/PostEditorBlocks/PostEditorBlock.php | 66 +++++++++++++++++++ .../SubscriptionFormBlock.php} | 47 ++++--------- 4 files changed, 82 insertions(+), 37 deletions(-) create mode 100644 lib/PostEditorBlocks/PostEditorBlock.php rename lib/{Config/PostEditorBlock.php => PostEditorBlocks/SubscriptionFormBlock.php} (58%) diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php index 9c3e1eba9d..4b03ef3542 100644 --- a/lib/Config/Initializer.php +++ b/lib/Config/Initializer.php @@ -5,6 +5,7 @@ namespace MailPoet\Config; use MailPoet\API\JSON\API; use MailPoet\AutomaticEmails\AutomaticEmails; use MailPoet\Cron\CronTrigger; +use MailPoet\PostEditorBlocks\PostEditorBlock; use MailPoet\Router; use MailPoet\Settings\SettingsController; use MailPoet\Util\ConflictResolver; @@ -68,7 +69,7 @@ class Initializer { /** @var WooCommerceHelper */ private $wcHelper; - /** @var PostEditorBlock */ + /** @var \MailPoet\PostEditorBlocks\PostEditorBlock */ private $postEditorBlock; const INITIALIZED = 'MAILPOET_INITIALIZED'; diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 65bae3b8c8..9b0b94985a 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -101,7 +101,6 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Config\MP2Migrator::class); $container->autowire(\MailPoet\Config\RendererFactory::class)->setPublic(true); $container->autowire(\MailPoet\Config\ServicesChecker::class); - $container->autowire(\MailPoet\Config\PostEditorBlock::class); $container->autowire(\MailPoet\Config\Shortcodes::class) ->setShared(false); // Get a new instance each time $container->get() is called, needed for tests $container->register(\MailPoet\Config\Renderer::class) @@ -125,6 +124,8 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Doctrine\Validator\ValidatorFactory::class); $container->autowire(\MailPoetVendor\Symfony\Component\Validator\Validator\ValidatorInterface::class) ->setFactory([new Reference(\MailPoet\Doctrine\Validator\ValidatorFactory::class), 'createValidator']); + $container->autowire(\MailPoet\PostEditorBlocks\PostEditorBlock::class); + $container->autowire(\MailPoet\PostEditorBlocks\SubscriptionFormBlock::class); // Dynamic segments $container->autowire(\MailPoet\DynamicSegments\DynamicSegmentHooks::class); // Cron diff --git a/lib/PostEditorBlocks/PostEditorBlock.php b/lib/PostEditorBlocks/PostEditorBlock.php new file mode 100644 index 0000000000..50393bccb7 --- /dev/null +++ b/lib/PostEditorBlocks/PostEditorBlock.php @@ -0,0 +1,66 @@ +renderer = $renderer; + $this->wp = $wp; + $this->subscriptionFormBlock = $subscriptionFormBlock; + } + + public function init() { + // this has to be here until we drop support for WordPress < 5.0 + if (!function_exists('register_block_type')) return; + $this->subscriptionFormBlock->init(); + + if (is_admin()) { + $this->initAdmin(); + } else { + $this->initFrontend(); + } + } + + private function initAdmin() { + $this->wp->wpEnqueueScript( + 'mailpoet-block-form-block-js', + Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('post_editor_block.js'), + ['wp-blocks', 'wp-components', 'wp-server-side-render', 'wp-block-editor'], + Env::$version, + true + ); + + $this->wp->wpEnqueueStyle( + 'mailpoetblock-form-block-css', + Env::$assetsUrl . '/dist/css/' . $this->renderer->getCssAsset('post-editor-block.css'), + ['wp-edit-blocks'], + Env::$version + ); + + $this->subscriptionFormBlock->initAdmin(); + } + + private function initFrontend() { + $this->subscriptionFormBlock->initFrontend(); + } +} diff --git a/lib/Config/PostEditorBlock.php b/lib/PostEditorBlocks/SubscriptionFormBlock.php similarity index 58% rename from lib/Config/PostEditorBlock.php rename to lib/PostEditorBlocks/SubscriptionFormBlock.php index cf9d2ec803..9cdb670ee8 100644 --- a/lib/Config/PostEditorBlock.php +++ b/lib/PostEditorBlocks/SubscriptionFormBlock.php @@ -1,13 +1,15 @@ initAdmin(); - } else { - $this->initFrontend(); - } - - $this->wp->registerBlockType('mailpoet/form-block-render', [ + $this->wp->registerBlockType('mailpoet/subscription-form-block-render', [ 'attributes' => [ 'form' => [ 'type' => 'number', @@ -48,25 +41,10 @@ class PostEditorBlock { ]); } - private function initAdmin() { - $this->wp->wpEnqueueScript( - 'mailpoet-block-form-block-js', - Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('post_editor_block.js'), - ['wp-blocks', 'wp-components', 'wp-server-side-render', 'wp-block-editor'], - Env::$version, - true - ); - - $this->wp->wpEnqueueStyle( - 'mailpoetblock-form-block-css', - Env::$assetsUrl . '/dist/css/' . $this->renderer->getCssAsset('post-editor-block.css'), - ['wp-edit-blocks'], - Env::$version - ); - - $this->wp->registerBlockType('mailpoet/form-block', [ + public function initAdmin() { + $this->wp->registerBlockType('mailpoet/subscription-form-block', [ 'style' => 'mailpoetblock-form-block-css', - 'editor_script' => 'mailpoet/form-block', + 'editor_script' => 'mailpoet/subscription-form-block', ]); $this->wp->addAction('admin_head', function() { @@ -86,21 +64,20 @@ class PostEditorBlock { }); } - private function initFrontend() { - $this->wp->registerBlockType('mailpoet/form-block', [ + public function initFrontend() { + $this->wp->registerBlockType('mailpoet/subscription-form-block', [ 'render_callback' => [$this, 'renderForm'], ]); } public function renderForm(array $attributes = []): string { - if (!$attributes || !isset($attributes['form'])) { + if (!$attributes || !isset($attributes['formId'])) { return ''; } $basicForm = new Widget(); return $basicForm->widget([ - 'form' => (int)$attributes['form'], + 'form' => (int)$attributes['formId'], 'form_type' => 'html', ]); } - }