Render raw html in checkbox label

[MAILPOET-2803]
This commit is contained in:
Pavel Dohnal
2020-04-30 13:03:40 +02:00
committed by Veljko V
parent 17545f1b79
commit 71106cc90e
3 changed files with 6 additions and 15 deletions

View File

@@ -1,3 +1,4 @@
/* eslint-disable react/no-danger */
import React from 'react'; import React from 'react';
import { import {
Panel, Panel,
@@ -109,6 +110,7 @@ const CustomCheckboxEdit = ({ attributes, setAttributes, clientId }) => {
if (attributes.mandatory) { if (attributes.mandatory) {
checkboxLabel += ' *'; checkboxLabel += ' *';
} }
return ( return (
<ParagraphEdit className={attributes.className}> <ParagraphEdit className={attributes.className}>
{inspectorControls} {inspectorControls}
@@ -121,7 +123,7 @@ const CustomCheckboxEdit = ({ attributes, setAttributes, clientId }) => {
checked={isChecked()} checked={isChecked()}
className="mailpoet_checkbox" className="mailpoet_checkbox"
/> />
{checkboxLabel} <span dangerouslySetInnerHTML={{ __html: checkboxLabel }} />
</label> </label>
</div> </div>
</ParagraphEdit> </ParagraphEdit>

View File

@@ -3,7 +3,6 @@
namespace MailPoet\Form\Block; namespace MailPoet\Form\Block;
use MailPoet\Form\BlockWrapperRenderer; use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\WP\Functions as WPFunctions;
class Checkbox { class Checkbox {
@@ -13,13 +12,9 @@ class Checkbox {
/** @var BlockWrapperRenderer */ /** @var BlockWrapperRenderer */
private $wrapper; private $wrapper;
/** @var WPFunctions */ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper) {
private $wp;
public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) {
$this->rendererHelper = $rendererHelper; $this->rendererHelper = $rendererHelper;
$this->wrapper = $wrapper; $this->wrapper = $wrapper;
$this->wp = $wp;
} }
public function render(array $block, array $formSettings): string { public function render(array $block, array $formSettings): string {
@@ -56,7 +51,7 @@ class Checkbox {
$html .= $fieldValidation; $html .= $fieldValidation;
$html .= ' /> ' . $this->wp->escAttr($option['value']); $html .= ' /> ' . $option['value'];
$html .= '</label>'; $html .= '</label>';
} }

View File

@@ -6,7 +6,6 @@ use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Checkbox; use MailPoet\Form\Block\Checkbox;
use MailPoet\Form\BlockWrapperRenderer; use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Test\Form\HtmlParser; use MailPoet\Test\Form\HtmlParser;
use MailPoet\WP\Functions as WPFunctions;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
require_once __DIR__ . '/../HtmlParser.php'; require_once __DIR__ . '/../HtmlParser.php';
@@ -15,9 +14,6 @@ class CheckboxTest extends \MailPoetUnitTest {
/** @var Checkbox */ /** @var Checkbox */
private $checkbox; private $checkbox;
/** @var MockObject & WPFunctions */
private $wpMock;
/** @var MockObject & BlockRendererHelper */ /** @var MockObject & BlockRendererHelper */
private $rendererHelperMock; private $rendererHelperMock;
@@ -47,12 +43,10 @@ class CheckboxTest extends \MailPoetUnitTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->wpMock = $this->createMock(WPFunctions::class);
$this->wpMock->method('escAttr')->will($this->returnArgument(0));
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class); $this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
$this->wrapperMock = $this->createMock(BlockWrapperRenderer::class); $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
$this->wrapperMock->method('render')->will($this->returnArgument(1)); $this->wrapperMock->method('render')->will($this->returnArgument(1));
$this->checkbox = new Checkbox($this->rendererHelperMock, $this->wrapperMock, $this->wpMock); $this->checkbox = new Checkbox($this->rendererHelperMock, $this->wrapperMock);
$this->htmlParser = new HtmlParser(); $this->htmlParser = new HtmlParser();
} }