diff --git a/lib/Newsletter/Editor/LayoutHelper.php b/lib/Newsletter/Editor/LayoutHelper.php
index ef84020c46..3f25e4cdd2 100644
--- a/lib/Newsletter/Editor/LayoutHelper.php
+++ b/lib/Newsletter/Editor/LayoutHelper.php
@@ -3,28 +3,26 @@
namespace MailPoet\Newsletter\Editor;
class LayoutHelper {
- static function row($blocks) {
+ static function row($blocks, $styles = []) {
+ if (empty($styles['backgroundColor'])) {
+ $styles['backgroundColor'] = 'transparent';
+ }
return [
'type' => 'container',
'orientation' => 'horizontal',
- 'styles' => [
- 'block' => [
- 'backgroundColor' => 'transparent',
- ],
- ],
+ 'styles' => ['block' => $styles],
'blocks' => $blocks,
];
}
- static function col($blocks) {
+ static function col($blocks, $styles = []) {
+ if (empty($styles['backgroundColor'])) {
+ $styles['backgroundColor'] = 'transparent';
+ }
return [
'type' => 'container',
'orientation' => 'vertical',
- 'styles' => [
- 'block' => [
- 'backgroundColor' => 'transparent',
- ],
- ],
+ 'styles' => ['block' => $styles],
'blocks' => $blocks,
];
}
diff --git a/lib/Newsletter/Renderer/Preprocessor.php b/lib/Newsletter/Renderer/Preprocessor.php
index 931fce245a..5fb913041f 100644
--- a/lib/Newsletter/Renderer/Preprocessor.php
+++ b/lib/Newsletter/Renderer/Preprocessor.php
@@ -4,6 +4,7 @@ namespace MailPoet\Newsletter\Renderer;
use MailPoet\Newsletter\Editor\LayoutHelper;
use MailPoet\Newsletter\Renderer\Blocks\Renderer as BlocksRenderer;
+use MailPoet\WP\Functions as WPFunctions;
class Preprocessor {
const WC_HEADING_PLACEHOLDER = '[mailpet_woocommerce_heading_placeholder]';
@@ -12,8 +13,12 @@ class Preprocessor {
/** @var BlocksRenderer */
private $blocks_renderer;
- public function __construct(BlocksRenderer $blocks_renderer) {
+ /** @var WPFunctions */
+ private $wp;
+
+ public function __construct(BlocksRenderer $blocks_renderer, WPFunctions $wp) {
$this->blocks_renderer = $blocks_renderer;
+ $this->wp = $wp;
}
/**
@@ -41,7 +46,10 @@ class Preprocessor {
case 'automatedLatestContentLayout':
return $this->blocks_renderer->automatedLatestContentTransformedPosts($block);
case 'woocommerceHeading':
- return $this->placeholder(self::WC_HEADING_PLACEHOLDER);
+ $base_color = $this->wp->getOption('woocommerce_email_base_color');
+ $text_color = $this->wp->getOption('woocommerce_email_text_color');
+ $content = '
' . self::WC_HEADING_PLACEHOLDER . '
';
+ return $this->placeholder($content, ['backgroundColor' => $base_color]);
case 'woocommerceContent':
return $this->placeholder(self::WC_CONTENT_PLACEHOLDER);
}
@@ -49,17 +57,17 @@ class Preprocessor {
}
/**
- * @param array $block
+ * @param string $text
* @return array
*/
- private function placeholder($text) {
+ private function placeholder($text, $styles = []) {
return [
LayoutHelper::row([
LayoutHelper::col([[
'type' => 'text',
'text' => $text,
]]),
- ]),
+ ], $styles),
];
}
}
\ No newline at end of file
diff --git a/lib/Newsletter/Renderer/Renderer.php b/lib/Newsletter/Renderer/Renderer.php
index 17df35db30..319180a6fd 100644
--- a/lib/Newsletter/Renderer/Renderer.php
+++ b/lib/Newsletter/Renderer/Renderer.php
@@ -31,7 +31,7 @@ class Renderer {
$this->preview = $preview;
$this->blocks_renderer = new Blocks\Renderer($this->newsletter);
$this->columns_renderer = new Columns\Renderer();
- $this->preprocessor = new Preprocessor($this->blocks_renderer);
+ $this->preprocessor = new Preprocessor($this->blocks_renderer, WPFunctions::get());
$this->CSS_inliner = new \MailPoet\Util\CSS();
$this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE);
$this->premium_activated = License::getLicense();
diff --git a/tasks/phpstan/woocommerce.php b/tasks/phpstan/woocommerce.php
index 180cee8e66..04f08ce850 100644
--- a/tasks/phpstan/woocommerce.php
+++ b/tasks/phpstan/woocommerce.php
@@ -2,6 +2,8 @@
// phpcs:ignore
class WooCommerce {
+ function mailer() {
+ }
}
/**
diff --git a/tests/unit/Newsletter/Renderer/PreprocessorTest.php b/tests/unit/Newsletter/Renderer/PreprocessorTest.php
new file mode 100644
index 0000000000..33816a2d3f
--- /dev/null
+++ b/tests/unit/Newsletter/Renderer/PreprocessorTest.php
@@ -0,0 +1,70 @@
+ function($name) {
+ if ($name === 'woocommerce_email_base_color')
+ return '{base_color}';
+ if ($name === 'woocommerce_email_text_color')
+ return '{text_color}';
+ },
+ ]);
+ $preprocessor = new Preprocessor($renderer, $wp);
+ expect($preprocessor->processBlock(['type' => 'woocommerceHeading']))->equals([[
+ 'type' => 'container',
+ 'orientation' => 'horizontal',
+ 'styles' => [
+ 'block' => ['backgroundColor' => '{base_color}'],
+ ],
+ 'blocks' => [
+ [
+ 'type' => 'container',
+ 'orientation' => 'vertical',
+ 'styles' => ['block' => ['backgroundColor' => 'transparent']],
+ 'blocks' => [
+ [
+ 'type' => 'text',
+ 'text' => '[mailpet_woocommerce_heading_placeholder]
',
+ ],
+ ],
+ ],
+ ],
+ ]]);
+ }
+
+ function testProcessWooCommerceContentBlock() {
+ $renderer = Stub::make(Renderer::class);
+ $preprocessor = new Preprocessor($renderer, new Functions);
+ expect($preprocessor->processBlock(['type' => 'woocommerceContent']))->equals([[
+ 'type' => 'container',
+ 'orientation' => 'horizontal',
+ 'styles' => [
+ 'block' => ['backgroundColor' => 'transparent'],
+ ],
+ 'blocks' => [
+ [
+ 'type' => 'container',
+ 'orientation' => 'vertical',
+ 'styles' => ['block' => ['backgroundColor' => 'transparent']],
+ 'blocks' => [
+ [
+ 'type' => 'text',
+ 'text' => '[mailpet_woocommerce_content_placeholder]',
+ ],
+ ],
+ ],
+ ],
+ ]]);
+ }
+
+}
\ No newline at end of file