src/pyams_content/component/paragraph/zmi/__init__.py
changeset 192 8a16d2f507d7
parent 148 e4b89f5fb5ea
child 213 fd2f6aaa2478
--- a/src/pyams_content/component/paragraph/zmi/__init__.py	Mon Oct 02 15:24:08 2017 +0200
+++ b/src/pyams_content/component/paragraph/zmi/__init__.py	Mon Oct 02 17:03:26 2017 +0200
@@ -27,9 +27,12 @@
 # import packages
 from pyams_form.form import AJAXEditForm, AJAXAddForm
 from pyams_form.help import FormHelp
+from pyams_form.security import ProtectedFormObjectMixin
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.viewlet.menu import MenuItem
+from pyams_skin.viewlet.toolbar import ToolbarMenuItem
 from pyams_utils.adapter import adapter_config
+from pyams_utils.traversing import get_parent
 from pyams_viewlet.viewlet import viewlet_config
 from pyams_zmi.form import AdminDialogEditForm
 from pyramid.view import view_config
@@ -47,7 +50,7 @@
 class DefaultParagraphsSettingsMenu(MenuItem):
     """Default paragraphs settings menu"""
 
-    label = _("Default paragraphs...")
+    label = _("Paragraphs types...")
     icon_class = 'fa-paragraph'
     url = 'default-paragraphs.html'
     modal_target = True
@@ -58,7 +61,7 @@
 class DefaultParagraphsEditForm(AdminDialogEditForm):
     """Default paragraphs edit form"""
 
-    legend = _("Default paragraphs")
+    legend = _("Paragraphs types")
 
     fields = field.Fields(IParagraphFactorySettings)
     ajax_handler = 'default-paragraphs.json'
@@ -75,7 +78,9 @@
 class DefaultParagraphsEditFormHelp(FormHelp):
     """Default paragraphs edit form help"""
 
-    message = _("These paragraphs will be added automatically to any new created content.")
+    message = _("You can define which types of paragraphs are allowed in this container.\n\n"
+                "Default paragraphs will be added automatically (in selected order) to any new created content.\n\n"
+                "NOTICE: removing types from allowed types list will have no effect on already created contents!")
     message_format = 'rest'
 
 
@@ -83,6 +88,19 @@
 # Base paragraph forms
 #
 
+class BaseParagraphAddMenu(ProtectedFormObjectMixin, ToolbarMenuItem):
+    """Base paragraph add menu"""
+
+    paragraph_type = None
+    modal_target = True
+
+    def __new__(cls, context, request, view, manager):
+        settings = get_parent(context, IParagraphFactorySettings)
+        if (settings is not None) and (cls.paragraph_type not in settings.allowed_paragraphs):
+            return None
+        return ToolbarMenuItem.__new__(cls)
+
+
 class BaseParagraphAJAXAddForm(AJAXAddForm):
     """Base paragraph AJAX add form"""