diff --git a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php index 3cab8b6802..d70a84532c 100644 --- a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php +++ b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php @@ -46,12 +46,12 @@ class EmailEditor { return; } $this->cli->initialize(); - $this->patternsController->initialize(); $this->wp->addFilter('mailpoet_email_editor_post_types', [$this, 'addEmailPostType']); $this->wp->addAction('rest_delete_mailpoet_email', [$this->emailApiController, 'trashEmail'], 10, 1); $this->wp->addFilter('mailpoet_is_email_editor_page', [$this, 'isEditorPage'], 10, 1); $this->wp->addFilter('replace_editor', [$this, 'replaceEditor'], 10, 2); $this->wp->addFilter('mailpoet_email_editor_send_preview_email', [$this->emailEditorPreviewEmail, 'sendPreviewEmail'], 10, 1); + $this->patternsController->registerPatterns(); $this->extendEmailPostApi(); } diff --git a/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/Library/DefaultContent.php b/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/Library/DefaultContent.php index 6dee1c4d2e..83a115c22c 100644 --- a/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/Library/DefaultContent.php +++ b/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/Library/DefaultContent.php @@ -32,6 +32,6 @@ class DefaultContent extends Pattern { } protected function get_title(): string { // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps - return __('Default Email Content with Header and Footer', 'mailpoet'); + return __('Default Email Content', 'mailpoet'); } } diff --git a/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/PatternsController.php b/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/PatternsController.php index a7ab05dd41..91c7284a06 100644 --- a/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/PatternsController.php +++ b/mailpoet/lib/EmailEditor/Integrations/MailPoet/Patterns/PatternsController.php @@ -5,27 +5,22 @@ namespace MailPoet\EmailEditor\Integrations\MailPoet\Patterns; use MailPoet\EmailEditor\Integrations\MailPoet\Patterns\Library\DefaultContent; use MailPoet\EmailEditor\Integrations\MailPoet\Patterns\Library\DefaultContentFull; use MailPoet\Util\CdnAssetUrl; -use MailPoet\WP\Functions as WPFunctions; class PatternsController { private CdnAssetUrl $cdnAssetUrl; - private WPFunctions $wp; public function __construct( - CdnAssetUrl $cdnAssetUrl, - WPFunctions $wpFunctions + CdnAssetUrl $cdnAssetUrl ) { $this->cdnAssetUrl = $cdnAssetUrl; - $this->wp = $wpFunctions; } - public function initialize(): void { - $this->wp->addFilter('mailpoet_email_editor_block_patterns', [$this, 'registerPatterns']); - } - - public function registerPatterns($patterns): array { + public function registerPatterns(): void { + $patterns = []; $patterns[] = new DefaultContentFull($this->cdnAssetUrl); $patterns[] = new DefaultContent($this->cdnAssetUrl); - return $patterns; + foreach ($patterns as $pattern) { + register_block_pattern($pattern->get_namespace() . '/' . $pattern->get_name(), $pattern->get_properties()); + } } } diff --git a/mailpoet/tests/integration/EmailEditor/Integrations/MailPoet/Patterns/PatternsControllerTest.php b/mailpoet/tests/integration/EmailEditor/Integrations/MailPoet/Patterns/PatternsControllerTest.php new file mode 100644 index 0000000000..0db60dd609 --- /dev/null +++ b/mailpoet/tests/integration/EmailEditor/Integrations/MailPoet/Patterns/PatternsControllerTest.php @@ -0,0 +1,48 @@ +patterns = $this->diContainer->get(PatternsController::class); + $this->cleanupPatterns(); + } + + public function testItRegistersPatterns(): void { + $this->patterns->registerPatterns(); + $blockPatterns = \WP_Block_Patterns_Registry::get_instance()->get_all_registered(); + + $blockPatternContent = array_pop($blockPatterns); + $this->assertIsArray($blockPatternContent); + $this->assertArrayHasKey('name', $blockPatternContent); + $this->assertArrayHasKey('content', $blockPatternContent); + $this->assertArrayHasKey('title', $blockPatternContent); + $this->assertArrayHasKey('categories', $blockPatternContent); + $this->assertEquals('mailpoet/default-content', $blockPatternContent['name']); + $this->assertStringContainsString('A one-column layout is great for simplified and concise content', $blockPatternContent['content']); + $this->assertEquals('Default Email Content', $blockPatternContent['title']); + $this->assertEquals(['email-contents'], $blockPatternContent['categories']); + + $blockPatternContentFull = array_pop($blockPatterns); + $this->assertIsArray($blockPatternContentFull); + $this->assertArrayHasKey('name', $blockPatternContentFull); + $this->assertArrayHasKey('content', $blockPatternContentFull); + $this->assertArrayHasKey('title', $blockPatternContentFull); + $this->assertArrayHasKey('categories', $blockPatternContentFull); + $this->assertEquals('mailpoet/default-content-full', $blockPatternContentFull['name']); + $this->assertStringContainsString('A one-column layout is great for simplified and concise content', $blockPatternContentFull['content']); + $this->assertEquals('Default Email Content with Header and Footer', $blockPatternContentFull['title']); + $this->assertEquals(['email-contents'], $blockPatternContentFull['categories']); + } + + private function cleanupPatterns() { + $registry = \WP_Block_Patterns_Registry::get_instance(); + $blockPatterns = $registry->get_all_registered(); + foreach ($blockPatterns as $pattern) { + $registry->unregister($pattern['name']); + } + } +} diff --git a/packages/php/email-editor/src/Engine/Patterns/class-patterns.php b/packages/php/email-editor/src/Engine/Patterns/class-patterns.php index 723ee06a6a..e03f95526a 100644 --- a/packages/php/email-editor/src/Engine/Patterns/class-patterns.php +++ b/packages/php/email-editor/src/Engine/Patterns/class-patterns.php @@ -19,7 +19,6 @@ class Patterns { */ public function initialize(): void { $this->register_block_pattern_categories(); - $this->register_patterns(); } /** @@ -45,18 +44,4 @@ class Patterns { ); } } - /** - * Register block patterns. - * - * @return void - */ - private function register_patterns() { - $patterns = apply_filters( 'mailpoet_email_editor_block_patterns', array() ); - foreach ( $patterns as $pattern ) { - if ( ! $pattern instanceof Abstract_Pattern ) { - continue; - } - register_block_pattern( $pattern->get_namespace() . '/' . $pattern->get_name(), $pattern->get_properties() ); - } - } } diff --git a/packages/php/email-editor/tests/integration/Engine/Patterns/Dummy_Test_Pattern.php b/packages/php/email-editor/tests/integration/Engine/Patterns/Dummy_Test_Pattern.php deleted file mode 100644 index 09dc0f2ccd..0000000000 --- a/packages/php/email-editor/tests/integration/Engine/Patterns/Dummy_Test_Pattern.php +++ /dev/null @@ -1,43 +0,0 @@ -
Test pattern
'; - } - /** - * Get the pattern title - * - * @return string - */ - public function get_title(): string { - return 'Test pattern title'; - } -} diff --git a/packages/php/email-editor/tests/integration/Engine/Patterns/Patterns_Test.php b/packages/php/email-editor/tests/integration/Engine/Patterns/Patterns_Test.php index c02398d34d..4210cf181d 100644 --- a/packages/php/email-editor/tests/integration/Engine/Patterns/Patterns_Test.php +++ b/packages/php/email-editor/tests/integration/Engine/Patterns/Patterns_Test.php @@ -8,8 +8,6 @@ declare(strict_types = 1); namespace MailPoet\EmailEditor\Engine\Patterns; -require_once 'Dummy_Test_Pattern.php'; - /** * Integration test for Patterns class */ @@ -41,36 +39,10 @@ class Patterns_Test extends \MailPoetTest { $this->assertEquals( 'A collection of email content layouts.', $category['description'] ); } - /** - * Test that the patterns added via filter are registered in WP_Block_Patterns_Registry - */ - public function testItRegistersPatterns() { - $pattern = new Dummy_Test_Pattern(); - add_filter( - 'mailpoet_email_editor_block_patterns', - function ( $patterns ) use ( $pattern ) { - $patterns[] = $pattern; - return $patterns; - } - ); - $this->patterns->initialize(); - $block_patterns = \WP_Block_Patterns_Registry::get_instance()->get_all_registered(); - $block_pattern = array_pop( $block_patterns ); - $this->assertEquals( 'dummy/dummy-test-pattern', $block_pattern['name'] ); - $this->assertEquals( $pattern->get_content(), $block_pattern['content'] ); - $this->assertEquals( $pattern->get_title(), $block_pattern['title'] ); - } - /** * Clean registered patterns and categories */ private function cleanup_patterns() { - $registry = \WP_Block_Patterns_Registry::get_instance(); - $block_patterns = $registry->get_all_registered(); - foreach ( $block_patterns as $pattern ) { - $registry->unregister( $pattern['name'] ); - } - $categories_registry = \WP_Block_Pattern_Categories_Registry::get_instance(); $categories = $categories_registry->get_all_registered(); foreach ( $categories as $category ) {