--- 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"""