From 2a9359aa5e54958fa03c9d30640da13bc3b9cf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 14 Nov 2018 13:50:50 +0100 Subject: [PATCH] fields: ~always use ckeditor for comment fields (#27988) --- tests/test_admin_pages.py | 11 ++++++++++- wcs/fields.py | 17 +++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/tests/test_admin_pages.py b/tests/test_admin_pages.py index 2c2440d39..6705c4faa 100644 --- a/tests/test_admin_pages.py +++ b/tests/test_admin_pages.py @@ -1338,7 +1338,9 @@ def test_form_edit_comment_field(pub): label='a comment field\n\na second line')] formdef.store() resp = app.get('/backoffice/forms/1/fields/1/') - assert not 'WysiwygTextWidget' in resp.body + assert 'WysiwygTextWidget' in resp.body + resp = resp.form.submit('submit') + assert FormDef.get(formdef.id).fields[0].label == '

a comment field

\n

a second line

' # starting with a < formdef.fields = [fields.CommentField(id='1', type='comment', @@ -1347,6 +1349,13 @@ def test_form_edit_comment_field(pub): resp = app.get('/backoffice/forms/1/fields/1/') assert 'WysiwygTextWidget' in resp.body + # legacy, ezt syntax in a non-html field will be presented as a textarea + formdef.fields = [fields.CommentField(id='1', type='comment', + label='[if-any toto]hello world[end]')] + formdef.store() + resp = app.get('/backoffice/forms/1/fields/1/') + assert 'WysiwygTextWidget' not in resp.body + def test_form_edit_map_field(pub): create_superuser(pub) create_role() diff --git a/wcs/fields.py b/wcs/fields.py index 4c04f6b27..e17f323c3 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -604,10 +604,7 @@ class CommentField(Field): tag_attributes = 'data-field-id="%s" class="comment-field %s"' % ( self.id, self.extra_css_class or '') - if '\n\n' in self.label: - label = '

' + re.sub('\n\n+', '

\n

', self.label) + '

' - else: - label = self.label + label = self.get_html_content() import wcs.workflows label = wcs.workflows.template_on_html_string(label) @@ -626,14 +623,18 @@ class CommentField(Field): def add_to_view_form(self, *args): pass + def get_html_content(self): + if self.label and '\n\n' in self.label and self.label[0] != '<': + return '

' + re.sub('\n\n+', '

\n

', self.label) + '

' + return self.label + def fill_admin_form(self, form): - if self.label and (not self.label.startswith('<') and ( - '\n\n' in self.label or '[end]' in self.label)): + if self.label and (self.label[0] != '<' and '[end]' in self.label): form.add(TextWidget, 'label', title=_('Label'), value=self.label, required=True, cols=70, rows=3, render_br=False) else: - form.add(WysiwygTextWidget, 'label', title=_('Label'), value=self.label, - required=True) + form.add(WysiwygTextWidget, 'label', title=_('Label'), + value=self.get_html_content(), required=True) form.add(StringWidget, 'extra_css_class', title = _('Extra classes for CSS styling'), value=self.extra_css_class, size=30, advanced=(not self.extra_css_class)) form.add(ConditionWidget, 'condition', title=_('Display Condition'), value=self.condition, -- 2.19.1