From 5fe84ce77867d3be885f7a2736a42f686a280120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Matouillot?= Date: Sat, 14 Sep 2013 18:37:42 +0200 Subject: [PATCH] Support to have HTML in LabelField and LinkField --- tests/test_widgets.py | 26 ++++++++++++++++++++++++++ tw2/forms/templates/label_field.jinja | 2 +- tw2/forms/templates/label_field.mak | 8 +++++++- tw2/forms/templates/link_field.jinja | 2 +- tw2/forms/templates/link_field.mak | 8 +++++++- tw2/forms/widgets.py | 2 ++ 6 files changed, 44 insertions(+), 4 deletions(-) diff --git a/tests/test_widgets.py b/tests/test_widgets.py index 48030b2..57267ec 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -127,6 +127,19 @@ class TestLabelField(WidgetTest): value="info" name="hidden_name" id="hid"/>""" validate_params = [[None, {'hid': 'b'}, EmptyField]] + def test_escape(self): + attrs = {'value': 'line 1
line 2'} + expected = 'line 1<br />line 2' + for engine in self._get_all_possible_engines(): + yield (self._check_rendering_vs_expected, + engine, attrs, self.params, expected) + + attrs = {'value': 'line 1
line 2', 'escape': False} + expected = 'line 1
line 2
' + for engine in self._get_all_possible_engines(): + yield (self._check_rendering_vs_expected, + engine, attrs, self.params, expected) + class TestLinkField(WidgetTest): widget = LinkField @@ -134,6 +147,19 @@ class TestLinkField(WidgetTest): 'name': 'hidden_name', 'text': 'some $', 'link': '/some/$'} expected = """some info""" + def test_escape(self): + attrs = {'text': 'line 1
line 2'} + expected = 'line 1<br />line 2' + for engine in self._get_all_possible_engines(): + yield (self._check_rendering_vs_expected, + engine, attrs, self.params, expected) + + attrs = {'text': 'line 1
line 2', 'escape': False} + expected = 'line 1
line 2
' + for engine in self._get_all_possible_engines(): + yield (self._check_rendering_vs_expected, + engine, attrs, self.params, expected) + class TestButton(WidgetTest): widget = Button diff --git a/tw2/forms/templates/label_field.jinja b/tw2/forms/templates/label_field.jinja index 4f18ad9..c78f850 100644 --- a/tw2/forms/templates/label_field.jinja +++ b/tw2/forms/templates/label_field.jinja @@ -1 +1 @@ -{{ w.value|string }} \ No newline at end of file +{% if w.escape %}{{ w.value|string }}{% else %}{{ w.value|safe }}{% endif %} \ No newline at end of file diff --git a/tw2/forms/templates/label_field.mak b/tw2/forms/templates/label_field.mak index 4330907..c4166b9 100644 --- a/tw2/forms/templates/label_field.mak +++ b/tw2/forms/templates/label_field.mak @@ -1,2 +1,8 @@ <%namespace name="tw" module="tw2.core.mako_util"/>\ -${w.value or ''} +\ +% if w.escape: +${w.value or ''}\ +% else: +${w.value or '' | n}\ +% endif + diff --git a/tw2/forms/templates/link_field.jinja b/tw2/forms/templates/link_field.jinja index c8165d5..a59a6b3 100644 --- a/tw2/forms/templates/link_field.jinja +++ b/tw2/forms/templates/link_field.jinja @@ -1 +1 @@ -{{ w.text }} \ No newline at end of file +{% if w.escape %}{{ w.text }}{% else %}{{ w.text|safe }}{% endif %} \ No newline at end of file diff --git a/tw2/forms/templates/link_field.mak b/tw2/forms/templates/link_field.mak index 492718d..20d6b45 100644 --- a/tw2/forms/templates/link_field.mak +++ b/tw2/forms/templates/link_field.mak @@ -1,2 +1,8 @@ <%namespace name="tw" module="tw2.core.mako_util"/>\ -${w.text} \ No newline at end of file +\ +% if w.escape: +${w.text}\ +% else: +${w.text | n}\ +% endif + diff --git a/tw2/forms/widgets.py b/tw2/forms/widgets.py index 8ec7ee6..8304269 100755 --- a/tw2/forms/widgets.py +++ b/tw2/forms/widgets.py @@ -195,6 +195,7 @@ class LabelField(InputField): """ type = 'hidden' template = "tw2.forms.templates.label_field" + escape = twc.Param('Whether text shall be html-escaped or not', default=True) validator = twc.BlankValidator @@ -208,6 +209,7 @@ class LinkField(twc.Widget): link = twc.Param('Link target', default='') text = twc.Param('Link text', default='') value = twc.Param("Value to replace $ with in the link/text") + escape = twc.Param('Whether text shall be html-escaped or not', default=True) validator = twc.BlankValidator def prepare(self):