src/pyams_content/component/paragraph/zmi/html.py
changeset 407 0ef5de2d5674
parent 406 5527bc086216
child 415 43f42d74cdb8
--- a/src/pyams_content/component/paragraph/zmi/html.py	Thu Feb 22 12:00:05 2018 +0100
+++ b/src/pyams_content/component/paragraph/zmi/html.py	Thu Feb 22 15:58:28 2018 +0100
@@ -19,9 +19,10 @@
 from pyams_content.component.association.interfaces import IAssociationTarget
 from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm
 from pyams_content.component.illustration.interfaces import IIllustration
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
-    IParagraphPreview
-from pyams_content.component.paragraph.interfaces.html import IHTMLParagraph, IRawParagraph
+from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphFactorySettings, \
+    IParagraphContainer, IParagraphPreview
+from pyams_content.component.paragraph.interfaces.html import IHTMLParagraph, IRawParagraph, RAW_PARAGRAPH_TYPE, \
+    HTML_PARAGRAPH_TYPE
 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView
 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
 from pyams_form.interfaces.form import IInnerForm, IEditFormButtons
@@ -39,6 +40,7 @@
 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \
     ParagraphTitleToolbarViewletManager
 from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.viewlet.menu import MenuDivider
 from pyams_template.template import template_config
 from pyams_utils.adapter import adapter_config
 from pyams_utils.traversing import get_parent
@@ -55,6 +57,18 @@
 # Raw HTML paragraph
 #
 
+@viewlet_config(name='add-raw-paragraph.divider', context=IParagraphContainerTarget, view=IParagraphContainerView,
+                layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=990)
+class RawParagraphAddMenuDivider(MenuDivider):
+    """Raw paragraph add menu divider"""
+
+    def __new__(cls, context, request, view, manager):
+        settings = get_parent(context, IParagraphFactorySettings)
+        if (settings is not None) and (RawParagraphAddMenu.paragraph_type not in (settings.allowed_paragraphs or ())):
+            return None
+        return MenuDivider.__new__(cls)
+
+
 @viewlet_config(name='add-raw-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView,
                 layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=999)
 class RawParagraphAddMenu(BaseParagraphAddMenu):
@@ -63,7 +77,7 @@
     label = _("Add raw HTML paragraph...")
     label_css_class = 'fa fa-fw fa-code'
     url = 'add-raw-paragraph.html'
-    paragraph_type = 'raw'
+    paragraph_type = RAW_PARAGRAPH_TYPE
 
 
 @pagelet_config(name='add-raw-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,
@@ -178,7 +192,7 @@
     label = _("Add rich text paragraph...")
     label_css_class = 'fa fa-fw fa-html5'
     url = 'add-html-paragraph.html'
-    paragraph_type = 'HTML'
+    paragraph_type = HTML_PARAGRAPH_TYPE
 
 
 @pagelet_config(name='add-html-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,