Products.CMFPlone/robodoc: Fix test and add nasty tags to valid_elements in TinyMCE,

Peter Holzer <jenkins-z4DKO/[email protected]> Fri, 28 Jul 2017 05:39:10 -0700 (PDT)
Newsgroups gmane.comp.web.zope.plone.cvs
Message-ID <[email protected]>
Repository: Products.CMFPlone
Branch: refs/heads/robodoc
Date: 2017-07-28T12:36:55+02:00
Author: MrTango (MrTango) <md-r4/[email protected]>
Commit: https://github.com/plone/Products.CMFPlone/commit/6dd64f562576ecf47e067d0ed4a8564ab7e1c653

Fix test and add nasty tags to valid_elements in TinyMCE,
we want to drop the tags in the backenend, so TinyMCE shouldn't touch it.

Files changed:
M Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_filter.py
M Products/CMFPlone/patterns/tinymce.py
M Products/CMFPlone/tests/robot/test_controlpanel_filter.robot

diff --git a/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_filter.py b/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_filter.py
index 44c465517..5769032b9 100644
--- a/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_filter.py
+++ b/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_filter.py
@@ -86,6 +86,11 @@ def test_nasty_tags(self):
         self.browser.getControl(
             name='form.widgets.nasty_tags'
         ).value = 'div\r\na'
+        valid_tags = self.browser.getControl(
+            name='form.widgets.valid_tags').value
+        valid_tags = valid_tags.replace('a\r\n', '')
+        valid_tags = self.browser.getControl(
+            name='form.widgets.valid_tags').value = valid_tags
         self.browser.getControl('Save').click()
 
         # test that <a> is filtered
@@ -94,5 +99,5 @@ def test_nasty_tags(self):
         ds = datastream('dummy_name')
         self.assertEqual(
             str(self.safe_html.convert(good_html, ds)),
-            ''
+            '<p/>'
         )
diff --git a/Products/CMFPlone/patterns/tinymce.py b/Products/CMFPlone/patterns/tinymce.py
index b66f499c6..c7bdab7ba 100644
--- a/Products/CMFPlone/patterns/tinymce.py
+++ b/Products/CMFPlone/patterns/tinymce.py
@@ -207,6 +207,7 @@ def get_tiny_config(self):
         # add safe_html settings, which are useed in backend for filtering:
         if not self.filter_settings.disable_filtering:
             valid_tags = self.filter_settings.valid_tags
+            nasty_tags = self.filter_settings.nasty_tags
             custom_attributes = self.filter_settings.custom_attributes
             safe_attributes = [attr.decode() for attr in html.defs.safe_attrs]
             valid_attributes = safe_attributes + custom_attributes
@@ -215,6 +216,11 @@ def get_tiny_config(self):
             for tag in valid_tags:
                 tag_str = "%s[%s]" % (tag, "|".join(valid_attributes))
                 tiny_valid_elements.append(tag_str)
+            # We want to remove the nasty tag including the content in the
+            # backend, so TinyMCE should allow them here.
+            for tag in nasty_tags:
+                tag_str = "%s[%s]" % (tag, "|".join(valid_attributes))
+                tiny_valid_elements.append(tag_str)
             tiny_config['valid_elements'] = ",".join(tiny_valid_elements)
 
         if settings.other_settings:
diff --git a/Products/CMFPlone/tests/robot/test_controlpanel_filter.robot b/Products/CMFPlone/tests/robot/test_controlpanel_filter.robot
index b8698c6e1..26399060f 100644
--- a/Products/CMFPlone/tests/robot/test_controlpanel_filter.robot
+++ b/Products/CMFPlone/tests/robot/test_controlpanel_filter.robot
@@ -27,7 +27,7 @@ Test Teardown  Run keywords  Plone Test Teardown
 Scenario: Configure Filter Control Panel to filter out nasty tags
   Given a logged-in site administrator
     and the filter control panel
-   When I add 'h1' to the nasty tags list
+   When I add 'h1' to the nasty tags list and remove it from the valid tags list
    Then the 'h1' tag is filtered out when a document is saved
 
 Scenario: Configure Filter Control Panel to strip out tags
@@ -72,8 +72,9 @@ Input RichText
 
 # --- WHEN -------------------------------------------------------------------
 
-I add '${tag}' to the nasty tags list
+I add '${tag}' to the nasty tags list and remove it from the valid tags list
   Input Text  name=form.widgets.nasty_tags  ${tag}
+  Remove line from textarea  form.widgets.valid_tags  ${tag}
   Click Button  Save
   Wait until page contains  Changes saved
 



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot