Add dummy email body renderer for new editor
[MAILPOET-5365]
This commit is contained in:
committed by
Aschepikov
parent
ba23b5f224
commit
fc2bbda9a2
@@ -309,6 +309,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true);
|
||||
// Email Editor
|
||||
$container->autowire(\MailPoet\EmailEditor\Core\EmailEditor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Core\Renderer\BodyRenderer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Integration\EmailEditor::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\EmailEditor\Integration\EmailApiController::class)->setPublic(true);
|
||||
// Features
|
||||
|
13
mailpoet/lib/EmailEditor/Core/Renderer/BodyRenderer.php
Normal file
13
mailpoet/lib/EmailEditor/Core/Renderer/BodyRenderer.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\EmailEditor\Core\Renderer;
|
||||
|
||||
class BodyRenderer {
|
||||
public function renderBody(\WP_Post $emailPost): string {
|
||||
// @todo Parse blocks \WP_Block_Parser
|
||||
// @todo We need to wrap top level blocks which are not in columns into a column
|
||||
// @todo Add rendering of columns (inspire by/reuse code from mailpoet/lib/Newsletter/Renderer/Columns/Renderer)
|
||||
// @todo Add rendering of blocks
|
||||
return $emailPost->post_content ?: ''; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
||||
}
|
||||
}
|
@@ -558,4 +558,16 @@ class NewsletterEntity {
|
||||
public function canBeSetSent(): bool {
|
||||
return in_array($this->getType(), [self::TYPE_NOTIFICATION_HISTORY, self::TYPE_STANDARD], true);
|
||||
}
|
||||
|
||||
/**
|
||||
* We don't use typehint for now because doctrine cache generator would fail as it doesn't know the class.
|
||||
* @return \WP_Post|null
|
||||
*/
|
||||
public function getWpPost() {
|
||||
if ($this->wpPostId === null) {
|
||||
return null;
|
||||
}
|
||||
$post = \WP_Post::get_instance($this->wpPostId);
|
||||
return $post ?: null;
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,9 @@ namespace MailPoet\Newsletter\Renderer;
|
||||
|
||||
use MailPoet\Config\Env;
|
||||
use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\EmailEditor\Core\Renderer\BodyRenderer as GuntenbergBodyRenderer;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Features\FeaturesController;
|
||||
use MailPoet\Logging\LoggerFactory;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Renderer\EscapeHelper as EHelper;
|
||||
@@ -22,6 +24,9 @@ class Renderer {
|
||||
/** @var BodyRenderer */
|
||||
private $bodyRenderer;
|
||||
|
||||
/** @var GuntenbergBodyRenderer */
|
||||
private $guntenbergBodyRenderer;
|
||||
|
||||
/** @var Preprocessor */
|
||||
private $preprocessor;
|
||||
|
||||
@@ -43,17 +48,23 @@ class Renderer {
|
||||
/*** @var SendingQueuesRepository */
|
||||
private $sendingQueuesRepository;
|
||||
|
||||
/** @var FeaturesController */
|
||||
private $featuresController;
|
||||
|
||||
public function __construct(
|
||||
BodyRenderer $bodyRenderer,
|
||||
GuntenbergBodyRenderer $guntenbergBodyRenderer,
|
||||
Preprocessor $preprocessor,
|
||||
\MailPoetVendor\CSS $cSSInliner,
|
||||
ServicesChecker $servicesChecker,
|
||||
WPFunctions $wp,
|
||||
LoggerFactory $loggerFactory,
|
||||
NewslettersRepository $newslettersRepository,
|
||||
SendingQueuesRepository $sendingQueuesRepository
|
||||
SendingQueuesRepository $sendingQueuesRepository,
|
||||
FeaturesController $featuresController
|
||||
) {
|
||||
$this->bodyRenderer = $bodyRenderer;
|
||||
$this->guntenbergBodyRenderer = $guntenbergBodyRenderer;
|
||||
$this->preprocessor = $preprocessor;
|
||||
$this->cSSInliner = $cSSInliner;
|
||||
$this->servicesChecker = $servicesChecker;
|
||||
@@ -61,6 +72,7 @@ class Renderer {
|
||||
$this->loggerFactory = $loggerFactory;
|
||||
$this->newslettersRepository = $newslettersRepository;
|
||||
$this->sendingQueuesRepository = $sendingQueuesRepository;
|
||||
$this->featuresController = $featuresController;
|
||||
}
|
||||
|
||||
public function render(NewsletterEntity $newsletter, SendingTask $sendingTask = null, $type = false) {
|
||||
@@ -93,7 +105,16 @@ class Renderer {
|
||||
$renderedBody = "";
|
||||
try {
|
||||
$content = $this->preprocessor->process($newsletter, $content, $preview, $sendingTask);
|
||||
$renderedBody = $this->bodyRenderer->renderBody($newsletter, $content);
|
||||
if ($this->featuresController->isSupported(FeaturesController::GUTENBERG_EMAIL_EDITOR) && $newsletter->getWpPostId()) {
|
||||
$post = $newsletter->getWpPost();
|
||||
if (!$post instanceof \WP_Post) {
|
||||
throw new NewsletterProcessingException('Missing email post object');
|
||||
}
|
||||
$renderedBody = $this->guntenbergBodyRenderer->renderBody($post);
|
||||
} else {
|
||||
$renderedBody = $this->bodyRenderer->renderBody($newsletter, $content);
|
||||
}
|
||||
|
||||
} catch (NewsletterProcessingException $e) {
|
||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_COUPONS)->error(
|
||||
$e->getMessage(),
|
||||
|
@@ -5,6 +5,7 @@ namespace MailPoet\Test\Newsletter;
|
||||
use Codeception\Util\Fixtures;
|
||||
use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Features\FeaturesController;
|
||||
use MailPoet\Logging\LoggerFactory;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Renderer\Blocks\Button;
|
||||
@@ -54,13 +55,15 @@ class RendererTest extends \MailPoetTest {
|
||||
$this->servicesChecker = $this->createMock(ServicesChecker::class);
|
||||
$this->renderer = new Renderer(
|
||||
$this->diContainer->get(BodyRenderer::class),
|
||||
$this->diContainer->get(\MailPoet\EmailEditor\Core\Renderer\BodyRenderer::class),
|
||||
$this->diContainer->get(Preprocessor::class),
|
||||
$this->diContainer->get(\MailPoetVendor\CSS::class),
|
||||
$this->servicesChecker,
|
||||
$this->diContainer->get(WPFunctions::class),
|
||||
$this->diContainer->get(LoggerFactory::class),
|
||||
$this->diContainer->get(NewslettersRepository::class),
|
||||
$this->diContainer->get(SendingQueuesRepository::class)
|
||||
$this->diContainer->get(SendingQueuesRepository::class),
|
||||
$this->diContainer->get(FeaturesController::class)
|
||||
);
|
||||
$this->columnRenderer = new ColumnRenderer();
|
||||
$this->dOMParser = new pQuery();
|
||||
|
@@ -5,6 +5,7 @@ namespace MailPoet\WooCommerce\TransactionalEmails;
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Features\FeaturesController;
|
||||
use MailPoet\Logging\LoggerFactory;
|
||||
use MailPoet\Newsletter\Editor\LayoutHelper as L;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
@@ -138,6 +139,7 @@ class RendererTest extends \MailPoetTest {
|
||||
));
|
||||
return new NewsletterRenderer(
|
||||
$this->diContainer->get(\MailPoet\Newsletter\Renderer\BodyRenderer::class),
|
||||
$this->diContainer->get(\MailPoet\EmailEditor\Core\Renderer\BodyRenderer::class),
|
||||
new Preprocessor(
|
||||
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\AbandonedCartContent::class),
|
||||
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\AutomatedLatestContentBlock::class),
|
||||
@@ -149,7 +151,8 @@ class RendererTest extends \MailPoetTest {
|
||||
$this->diContainer->get(WPFunctions::class),
|
||||
$this->diContainer->get(LoggerFactory::class),
|
||||
$this->diContainer->get(NewslettersRepository::class),
|
||||
$this->diContainer->get(SendingQueuesRepository::class)
|
||||
$this->diContainer->get(SendingQueuesRepository::class),
|
||||
$this->diContainer->get(FeaturesController::class)
|
||||
);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user