Use Text renderer also for paragraph block
[MAILPOET-5798]
This commit is contained in:
committed by
Rostislav Wolný
parent
d49f3e8988
commit
fd04141141
@@ -16,7 +16,7 @@ class Initializer {
|
||||
* Register core blocks email renderers when the blocks renderer is initialized.
|
||||
*/
|
||||
public function registerCoreBlocksRenderers(BlocksRegistry $blocksRegistry): void {
|
||||
$blocksRegistry->addBlockRenderer('core/paragraph', new Renderer\Blocks\Paragraph());
|
||||
$blocksRegistry->addBlockRenderer('core/paragraph', new Renderer\Blocks\Text());
|
||||
$blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Text());
|
||||
$blocksRegistry->addBlockRenderer('core/column', new Renderer\Blocks\Column());
|
||||
$blocksRegistry->addBlockRenderer('core/columns', new Renderer\Blocks\Columns());
|
||||
|
@@ -18,7 +18,6 @@ class Paragraph extends AbstractBlockRenderer {
|
||||
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
$themeData = $settingsController->getTheme()->get_data();
|
||||
$classes = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('p', 'class') ?? '';
|
||||
|
||||
$align = $parsedBlock['attrs']['align'] ?? 'left';
|
||||
$styles = [
|
||||
'text-align' => $align,
|
||||
|
@@ -3,7 +3,6 @@
|
||||
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
|
||||
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
|
||||
/**
|
||||
* This renderer covers both core/paragraph and core/heading blocks
|
||||
@@ -11,15 +10,18 @@ use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
|
||||
class Text extends AbstractBlockRenderer {
|
||||
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
$blockContent = $this->adjustStyleAttribute($blockContent);
|
||||
return str_replace('{heading_content}', $blockContent, $this->getBlockWrapper($blockContent, $parsedBlock, $settingsController));
|
||||
return str_replace('{heading_content}', $blockContent, $this->getBlockWrapper($blockContent, $parsedBlock));
|
||||
}
|
||||
|
||||
/**
|
||||
* Based on MJML <mj-text>
|
||||
*/
|
||||
private function getBlockWrapper($blockContent, array $parsedBlock, SettingsController $settingsController): string {
|
||||
$level = $parsedBlock['attrs']['level'] ?? 2; // default level is 2
|
||||
$classes = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName("h$level", 'class') ?? '';
|
||||
private function getBlockWrapper($blockContent, array $parsedBlock): string {
|
||||
$html = new \WP_HTML_Tag_Processor($blockContent);
|
||||
$classes = '';
|
||||
if ($html->next_tag()) {
|
||||
$classes = $html->get_attribute('class') ?? '';
|
||||
}
|
||||
|
||||
$blockStyles = $this->getStylesFromBlock([
|
||||
'color' => $parsedBlock['attrs']['style']['color'] ?? [],
|
||||
@@ -31,11 +33,14 @@ class Text extends AbstractBlockRenderer {
|
||||
'min-width' => '100%', // prevent Gmail App from shrinking the table on mobile devices
|
||||
];
|
||||
|
||||
$styles['text-align'] = 'left';
|
||||
if (isset($parsedBlock['attrs']['textAlign'])) {
|
||||
$styles['text-align'] = $parsedBlock['attrs']['textAlign'];
|
||||
} elseif (in_array($parsedBlock['attrs']['align'] ?? null, ['left', 'center', 'right'])) {
|
||||
$styles['text-align'] = $parsedBlock['attrs']['align'];
|
||||
}
|
||||
|
||||
$styles = $this->compileCss($blockStyles['declarations'], $styles);
|
||||
$compiledStyles = $this->compileCss($blockStyles['declarations'], $styles);
|
||||
|
||||
return '
|
||||
<!--[if mso | IE]><table align="left" role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td><![endif]-->
|
||||
@@ -48,7 +53,7 @@ class Text extends AbstractBlockRenderer {
|
||||
width="100%"
|
||||
>
|
||||
<tr>
|
||||
<td class="' . esc_attr($classes) . '" style="' . esc_attr($styles) . '">
|
||||
<td class="' . esc_attr($classes) . '" style="' . esc_attr($compiledStyles) . '" align="' . esc_attr($styles['text-align'] ?? 'left') . '">
|
||||
{heading_content}
|
||||
</td>
|
||||
</tr>
|
||||
|
@@ -26,7 +26,6 @@ class HeadingTest extends \MailPoetTest {
|
||||
],
|
||||
'email_attrs' => [
|
||||
'width' => '640px',
|
||||
'font-size' => '24px',
|
||||
],
|
||||
'innerBlocks' => [],
|
||||
'innerHTML' => '<h1 class="has-pale-cyan-blue-color has-vivid-red-background-color has-text-color has-background">This is Heading 1</h1>',
|
||||
|
@@ -6,14 +6,18 @@ use MailPoet\EmailEditor\Engine\EmailEditor;
|
||||
use MailPoet\EmailEditor\Engine\SettingsController;
|
||||
|
||||
class ParagraphTest extends \MailPoetTest {
|
||||
/** @var Paragraph */
|
||||
/** @var Text */
|
||||
private $paragraphRenderer;
|
||||
|
||||
/** @var array */
|
||||
private $parsedParagraph = [
|
||||
'blockName' => 'core/paragraph',
|
||||
'email_attrs' => [
|
||||
'font-size' => '16px',
|
||||
'attrs' => [
|
||||
'style' => [
|
||||
'typography' => [
|
||||
'fontSize' => '16px',
|
||||
],
|
||||
],
|
||||
],
|
||||
'innerBlocks' => [],
|
||||
'innerHTML' => '<p>Lorem Ipsum</p>',
|
||||
@@ -27,7 +31,7 @@ class ParagraphTest extends \MailPoetTest {
|
||||
|
||||
public function _before() {
|
||||
$this->diContainer->get(EmailEditor::class)->initialize();
|
||||
$this->paragraphRenderer = new Paragraph();
|
||||
$this->paragraphRenderer = new Text();
|
||||
$this->settingsController = $this->diContainer->get(SettingsController::class);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user