Register default patterns to the email editor via hooks

[MAILPOET-6243]
This commit is contained in:
Rostislav Wolny
2024-11-14 16:49:59 +01:00
committed by Oluwaseun Olorunsola
parent 2409b5c8a1
commit a3f292f74e
3 changed files with 50 additions and 2 deletions

View File

@ -366,6 +366,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\EmailEditorPreviewEmail::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\EmailEditorPreviewEmail::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypes\PoweredByMailpoet::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypes\PoweredByMailpoet::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Patterns\PatternsController::class)->setPublic(true);
// Features // Features
$container->autowire(\MailPoet\Features\FeaturesController::class)->setPublic(true); $container->autowire(\MailPoet\Features\FeaturesController::class)->setPublic(true);
$container->autowire(\MailPoet\Features\FeatureFlagsController::class)->setPublic(true); $container->autowire(\MailPoet\Features\FeatureFlagsController::class)->setPublic(true);

View File

@ -2,6 +2,7 @@
namespace MailPoet\EmailEditor\Integrations\MailPoet; namespace MailPoet\EmailEditor\Integrations\MailPoet;
use MailPoet\EmailEditor\Integrations\MailPoet\Patterns\PatternsController;
use MailPoet\Features\FeaturesController; use MailPoet\Features\FeaturesController;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@ -16,6 +17,8 @@ class EmailEditor {
private EditorPageRenderer $editorPageRenderer; private EditorPageRenderer $editorPageRenderer;
private PatternsController $patternsController;
private Cli $cli; private Cli $cli;
private EmailEditorPreviewEmail $emailEditorPreviewEmail; private EmailEditorPreviewEmail $emailEditorPreviewEmail;
@ -25,13 +28,15 @@ class EmailEditor {
FeaturesController $featuresController, FeaturesController $featuresController,
EmailApiController $emailApiController, EmailApiController $emailApiController,
EditorPageRenderer $editorPageRenderer, EditorPageRenderer $editorPageRenderer,
Cli $cli, EmailEditorPreviewEmail $emailEditorPreviewEmail,
EmailEditorPreviewEmail $emailEditorPreviewEmail PatternsController $patternsController,
Cli $cli
) { ) {
$this->wp = $wp; $this->wp = $wp;
$this->featuresController = $featuresController; $this->featuresController = $featuresController;
$this->emailApiController = $emailApiController; $this->emailApiController = $emailApiController;
$this->editorPageRenderer = $editorPageRenderer; $this->editorPageRenderer = $editorPageRenderer;
$this->patternsController = $patternsController;
$this->cli = $cli; $this->cli = $cli;
$this->emailEditorPreviewEmail = $emailEditorPreviewEmail; $this->emailEditorPreviewEmail = $emailEditorPreviewEmail;
} }
@ -41,6 +46,7 @@ class EmailEditor {
return; return;
} }
$this->cli->initialize(); $this->cli->initialize();
$this->patternsController->initialize();
$this->wp->addFilter('mailpoet_email_editor_post_types', [$this, 'addEmailPostType']); $this->wp->addFilter('mailpoet_email_editor_post_types', [$this, 'addEmailPostType']);
$this->wp->addAction('rest_delete_mailpoet_email', [$this->emailApiController, 'trashEmail'], 10, 1); $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('mailpoet_is_email_editor_page', [$this, 'isEditorPage'], 10, 1);

View File

@ -0,0 +1,41 @@
<?php declare(strict_types = 1);
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
) {
$this->cdnAssetUrl = $cdnAssetUrl;
$this->wp = $wpFunctions;
}
public function initialize(): void {
$this->wp->addFilter('mailpoet_block_pattern_categories', [$this, 'registerCategories']);
$this->wp->addFilter('mailpoet_block_patterns', [$this, 'registerPatterns']);
}
public function registerCategories(array $categories): array {
$categories[] = [
'name' => 'mailpoet',
'label' => _x('MailPoet', 'Block pattern category', 'mailpoet'),
'description' => __('A collection of email template layouts.', 'mailpoet'),
];
return $categories;
}
public function registerPatterns($patterns): array {
$patterns[] = new DefaultContentFull($this->cdnAssetUrl);
$patterns[] = new DefaultContent($this->cdnAssetUrl);
return $patterns;
}
}