From e74eff4c203c545c4b89529911c0f1c5fdf22093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mauro=20Ferr=C3=A3o?= Date: Tue, 26 Sep 2023 09:41:07 +0100 Subject: [PATCH] API: extend class missing escape attribute used for elements FE (#2115) relates to xibosignageltd/xibo-private#494 --- lib/Widget/Render/WidgetHtmlRenderer.php | 2 ++ modules/src/player.js | 3 +++ modules/templates/global-elements.xml | 6 +++++- modules/widget-html-render.twig | 1 + ui/src/layout-editor/viewer.js | 3 +++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Widget/Render/WidgetHtmlRenderer.php b/lib/Widget/Render/WidgetHtmlRenderer.php index 90b3f72349..caa0114715 100644 --- a/lib/Widget/Render/WidgetHtmlRenderer.php +++ b/lib/Widget/Render/WidgetHtmlRenderer.php @@ -642,6 +642,7 @@ private function render( 'extends' => [ 'override' => $moduleTemplate->extends?->override, 'with' => $moduleTemplate->extends?->with, + 'escapeHtml' => $moduleTemplate->extends?->escapeHtml, ], ]; } else if ($extension !== null) { @@ -654,6 +655,7 @@ private function render( 'extends' => [ 'override' => $moduleTemplate->extends?->override, 'with' => $moduleTemplate->extends?->with, + 'escapeHtml' => $moduleTemplate->extends?->escapeHtml, ], ]; diff --git a/modules/src/player.js b/modules/src/player.js index 4c267532a4..6869e5afa5 100644 --- a/modules/src/player.js +++ b/modules/src/player.js @@ -575,6 +575,7 @@ $(function() { elementCopy.hbs = null; elementCopy.dataOverride = null; elementCopy.dataOverrideWith = null; + elementCopy.escapeHtml = null; // Compile the template if it exists if ($template && $template.length > 0) { @@ -582,6 +583,8 @@ $(function() { $template?.data('extends-override'); elementCopy.dataOverrideWith = $template?.data('extends-with'); + elementCopy.escapeHtml = + $template?.data('escape-html'); elementCopy.hbs = Handlebars.compile($template.html()); } diff --git a/modules/templates/global-elements.xml b/modules/templates/global-elements.xml index dafc43ae93..d76ea403f4 100644 --- a/modules/templates/global-elements.xml +++ b/modules/templates/global-elements.xml @@ -176,7 +176,11 @@ {{#if textShadow}}text-shadow: {{shadowX}}px {{shadowY}}px {{shadowBlur}}px {{textShadowColor}};{{/if}} width: 100%; height: 100%;" > -
{{{text}}}
+{{#if escapeHtml}} +
{{text}}
+{{else}} +
{{{text}}}
+{{/if}} ]]> diff --git a/modules/widget-html-render.twig b/modules/widget-html-render.twig index 2946b11d8d..55925e05a9 100644 --- a/modules/widget-html-render.twig +++ b/modules/widget-html-render.twig @@ -93,6 +93,7 @@ data-gap="{{ item.gapBetweenHbs }}" data-extends-override="{{ item.extends.override }}" data-extends-with="{{ item.extends.with }}" + data-escape-html="{{ item.extends.escapeHtml }}" >{{ item.content|raw }} {% endfor %} {% for widgetId, parser in onInitialize %} diff --git a/ui/src/layout-editor/viewer.js b/ui/src/layout-editor/viewer.js index ee08af1591..20ef23828a 100644 --- a/ui/src/layout-editor/viewer.js +++ b/ui/src/layout-editor/viewer.js @@ -1667,6 +1667,9 @@ Viewer.prototype.renderElementContent = function( } } + // Escape HTML + convertedProperties.escapeHtml = template?.extends?.escapeHtml; + // Compile hbs template with data let hbsHtml = hbsTemplate(convertedProperties);