Respect layout content size set in theme.json in the renderer

[MAILPOET-6249]
This commit is contained in:
Rostislav Wolny
2024-10-18 16:17:55 +02:00
committed by Jan Lysý
parent 06067b36f6
commit a40eb3e554
3 changed files with 10 additions and 1 deletions

View File

@@ -47,6 +47,7 @@ class Renderer {
$emailStyles = $this->themeController->getStyles($post, $template, true); $emailStyles = $this->themeController->getStyles($post, $template, true);
$templateHtml = $this->contentRenderer->render($post, $template); $templateHtml = $this->contentRenderer->render($post, $template);
$layout = $this->themeController->getLayoutSettings();
ob_start(); ob_start();
include self::TEMPLATE_FILE; include self::TEMPLATE_FILE;

View File

@@ -4,6 +4,13 @@
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
/** /**
* Template file to render the current 'wp_template', specifcally for emails. * Template file to render the current 'wp_template', specifcally for emails.
*
* Variables passed to this template:
* @var $subject string
* @var $preHeader string
* @var $templateHtml string
* @var $metaRobots string
* @var $layout array{contentSize: string}
*/ */
?><!DOCTYPE html> ?><!DOCTYPE html>
<html <?php language_attributes(); ?>> <html <?php language_attributes(); ?>>
@@ -18,7 +25,7 @@
<!-- Forced Styles --> <!-- Forced Styles -->
</head> </head>
<body> <body>
<div class="email_layout_wrapper"> <div class="email_layout_wrapper" style="max-width: <?php echo esc_attr($layout['contentSize']); ?>">
<table width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tbody> <tbody>
<tr> <tr>

View File

@@ -40,6 +40,7 @@ class RendererTest extends \MailPoetTest {
$themeControllerMock = $this->createMock(ThemeController::class); $themeControllerMock = $this->createMock(ThemeController::class);
$themeControllerMock->method('getTheme')->willReturn($themeJsonMock); $themeControllerMock->method('getTheme')->willReturn($themeJsonMock);
$themeControllerMock->method('getStyles')->willReturn($styles); $themeControllerMock->method('getStyles')->willReturn($styles);
$themeControllerMock->method('getLayoutSettings')->willReturn(['contentSize' => '660px']);
$this->renderer = $this->getServiceWithOverrides(Renderer::class, [ $this->renderer = $this->getServiceWithOverrides(Renderer::class, [
'settingsController' => $settingsControllerMock, 'settingsController' => $settingsControllerMock,