# HG changeset patch # User Thierry Florac # Date 1529496350 -7200 # Node ID 4fcb3a5afa918c5e0b2ff135c2a42a6871e76382 # Parent a7c7efdc532b082b7e3afa5aab17c850d8dddd72 Added form help diff -r a7c7efdc532b -r 4fcb3a5afa91 src/pyams_portal/zmi/portlet.py --- a/src/pyams_portal/zmi/portlet.py Wed Jun 20 14:04:53 2018 +0200 +++ b/src/pyams_portal/zmi/portlet.py Wed Jun 20 14:05:50 2018 +0200 @@ -9,6 +9,10 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from z3c.form.interfaces import INPUT_MODE + +from pyams_form.help import FormHelp +from pyams_zmi.layer import IAdminLayer __docformat__ = 'restructuredtext' @@ -16,7 +20,7 @@ # import standard library # import interfaces -from pyams_form.interfaces.form import IInnerTabForm +from pyams_form.interfaces.form import IInnerTabForm, IFormHelp from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION, \ IPortletSettings, IPortletRendererSettings from pyams_skin.layer import IPyAMSLayer @@ -64,6 +68,11 @@ def configuration(self): return self.context.configuration + @reify + def portlet(self): + registry = self.request.registry + return registry.queryUtility(IPortlet, name=self.configuration.portlet_name) + @property def override_label(self): translate = self.request.localizer.translate @@ -83,10 +92,19 @@ def get_ajax_handler(self): return absolute_url(self.configuration.__parent__, self.request, self.ajax_handler) - @reify - def portlet(self): - registry = self.request.registry - return registry.queryUtility(IPortlet, name=self.configuration.portlet_name) + +@adapter_config(context=(Interface, IAdminLayer, PortletSettingsEditor), provides=IFormHelp) +class PortletSettingsEditorFormHelpAdapter(FormHelp): + """Portlet settings editor form help adapter""" + + def __new__(cls, context, request, view): + configuration = view.configuration + if (not configuration.can_inherit) or (view.mode != INPUT_MODE): + return None + return FormHelp.__new__(cls) + + message = _("""WARNING: Portlet properties are saved automatically when changing inherit mode!!""") + message_format = 'rest' @adapter_config(name='properties', context=(Interface, IPyAMSLayer, PortletSettingsEditor), provides=IInnerTabForm) @@ -102,8 +120,9 @@ @property def fields(self): - fields = field.Fields(self.parent_form.settings).omit('__name__', 'renderer') + \ - field.Fields(self.parent_form.settings).select('renderer') + settings = self.parent_form.settings + fields = field.Fields(settings).omit('__name__', 'renderer') + \ + field.Fields(settings).select('renderer') fields['renderer'].widgetFactory = PortletRendererFieldWidget return fields