From 060a6839c76b8a2bc983b4f942b94f8959fbacd5 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Thu, 12 Mar 2020 16:27:59 +0100 Subject: [PATCH] Render form block custom classes on frontend [MAILPOET-2746] --- lib/Form/Block/Divider.php | 5 +++-- lib/Form/Block/Html.php | 3 ++- lib/Form/BlockWrapperRenderer.php | 5 ++--- lib/Form/BlocksRenderer.php | 2 +- tests/unit/Form/Block/DividerTest.php | 18 +++++++++++++++++- tests/unit/Form/Block/HtmlTest.php | 13 ++++++++++--- tests/unit/Form/BlockWrapperRendererTest.php | 8 ++++++++ 7 files changed, 43 insertions(+), 11 deletions(-) diff --git a/lib/Form/Block/Divider.php b/lib/Form/Block/Divider.php index 617dfe79d6..0b8d9ff150 100644 --- a/lib/Form/Block/Divider.php +++ b/lib/Form/Block/Divider.php @@ -3,7 +3,8 @@ namespace MailPoet\Form\Block; class Divider { - public function render(): string { - return '
'; + public function render($block): string { + $classes = isset($block['params']['class_name']) ? " " . $block['params']['class_name'] : ''; + return '
'; } } diff --git a/lib/Form/Block/Html.php b/lib/Form/Block/Html.php index 200668cac3..6bfb2ca08d 100644 --- a/lib/Form/Block/Html.php +++ b/lib/Form/Block/Html.php @@ -22,7 +22,8 @@ class Html { $text = nl2br($text); } - $html .= '
rendererHelper->renderFontStyle($formSettings) . '>'; + $classes = isset($block['params']['class_name']) ? " " . $block['params']['class_name'] : ''; + $html .= '
rendererHelper->renderFontStyle($formSettings) . '>'; $html .= $text; $html .= '
'; diff --git a/lib/Form/BlockWrapperRenderer.php b/lib/Form/BlockWrapperRenderer.php index fc593fc9b3..c7bb5e4741 100644 --- a/lib/Form/BlockWrapperRenderer.php +++ b/lib/Form/BlockWrapperRenderer.php @@ -2,10 +2,9 @@ namespace MailPoet\Form; -use MailPoet\Models\Form; - class BlockWrapperRenderer { public function render(array $block, string $blockContent): string { - return '
' . $blockContent . '
'; + $classes = isset($block['params']['class_name']) ? " " . $block['params']['class_name'] : ''; + return '
' . $blockContent . '
'; } } diff --git a/lib/Form/BlocksRenderer.php b/lib/Form/BlocksRenderer.php index 598ffbbc5e..fd8a6c3743 100644 --- a/lib/Form/BlocksRenderer.php +++ b/lib/Form/BlocksRenderer.php @@ -98,7 +98,7 @@ class BlocksRenderer { break; case 'divider': - $html .= $this->divider->render(); + $html .= $this->divider->render($block); break; case 'checkbox': diff --git a/tests/unit/Form/Block/DividerTest.php b/tests/unit/Form/Block/DividerTest.php index 3d9a4095be..048b1cbe9a 100644 --- a/tests/unit/Form/Block/DividerTest.php +++ b/tests/unit/Form/Block/DividerTest.php @@ -8,13 +8,29 @@ class DividerTest extends \MailPoetUnitTest { /** @var Divider */ private $divider; + private $block = [ + 'type' => 'divider', + 'name' => 'Divider', + 'id' => 'divider', + 'unique' => '1', + 'static' => '0', + 'params' => [], + 'position' => '1', + ]; + public function _before() { parent::_before(); $this->divider = new Divider(); } public function testItShouldRenderDivider() { - $html = $this->divider->render(); + $html = $this->divider->render($this->block); expect($html)->equals('
'); } + + public function testItShouldRenderCustomClass() { + $this->block['params']['class_name'] = 'my_class'; + $html = $this->divider->render($this->block); + expect($html)->equals('
'); + } } diff --git a/tests/unit/Form/Block/HtmlTest.php b/tests/unit/Form/Block/HtmlTest.php index e67d5e29b1..a64e1bb984 100644 --- a/tests/unit/Form/Block/HtmlTest.php +++ b/tests/unit/Form/Block/HtmlTest.php @@ -10,9 +10,9 @@ class HtmlTest extends \MailPoetUnitTest { private $html; private $block = [ - 'type' => 'divider', - 'name' => 'Divider', - 'id' => 'divider', + 'type' => 'html', + 'name' => 'Html', + 'id' => 'html', 'unique' => '1', 'static' => '0', 'params' => [ @@ -32,6 +32,13 @@ class HtmlTest extends \MailPoetUnitTest { expect($html)->equals("
line1
\nline2
"); } + public function testItShouldRenderCustomClass() { + $block = $this->block; + $block['params']['class_name'] = 'my_class'; + $html = $this->html->render($block, []); + expect($html)->equals("
line1
\nline2
"); + } + public function testItShouldRenderCustomHtmlWithoutAutomaticBrs() { $block = $this->block; $block['params']['nl2br'] = ''; diff --git a/tests/unit/Form/BlockWrapperRendererTest.php b/tests/unit/Form/BlockWrapperRendererTest.php index 55132ea9de..86d570cdd4 100644 --- a/tests/unit/Form/BlockWrapperRendererTest.php +++ b/tests/unit/Form/BlockWrapperRendererTest.php @@ -12,4 +12,12 @@ class BlockWrapperRendererTest extends \MailPoetUnitTest { $result = $renderer->render($block, 'content'); expect($result)->equals('
content
'); } + + public function testItShouldWrapRenderCustomClasses() { + $renderer = new BlockWrapperRenderer(); + $block = Fixtures::get('simple_form_body')[0]; + $block['params']['class_name'] = 'class1 class2'; + $result = $renderer->render($block, 'content'); + expect($result)->equals('
content
'); + } }