diff -r 563e611a329f -r 7dd8d5c7e206 src/pyams_portal/zmi/portlet.py --- a/src/pyams_portal/zmi/portlet.py Thu Jun 14 17:30:40 2018 +0200 +++ b/src/pyams_portal/zmi/portlet.py Thu Jun 14 17:33:55 2018 +0200 @@ -9,6 +9,8 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from pyams_form.form import ajax_config +from pyams_pagelet.pagelet import pagelet_config __docformat__ = 'restructuredtext' @@ -17,10 +19,12 @@ # import interfaces from pyams_form.interfaces.form import IInnerTabForm -from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION +from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION, \ + IPortletSettings, IPortletRendererSettings from pyams_skin.layer import IPyAMSLayer # import packages +from pyams_portal.zmi.widget import PortletRendererFieldWidget from pyams_template.template import template_config from pyams_utils.adapter import adapter_config from pyams_utils.url import absolute_url @@ -96,6 +100,35 @@ @property def fields(self): - return field.Fields(self.parent_form.settings).omit('__name__') + fields = field.Fields(self.parent_form.settings).omit('__name__', 'renderer') + \ + field.Fields(self.parent_form.settings).select('renderer') + fields['renderer'].widgetFactory = PortletRendererFieldWidget + return fields weight = 10 + + +# +# Portlet renderer properties edit form +# + +@pagelet_config(name='renderer-properties.html', context=IPortletSettings, layer=IPyAMSLayer, + permission=MANAGE_TEMPLATE_PERMISSION) +@ajax_config(name='renderer-properties.json', context=IPortletSettings, layer=IPyAMSLayer) +class PortletRendererPropertiesEditForm(AdminDialogEditForm): + """Portlet renderer properties edit form""" + + prefix = 'portlet_renderer_properties.' + + legend = _("Edit renderer properties") + icon_css_class = 'fa fa-fw fa-pencil-square-o' + + @property + def fields(self): + renderer = self.context.get_renderer(self.request) + return field.Fields(renderer.settings_interface or Interface) + + edit_permission = MANAGE_TEMPLATE_PERMISSION + + def getContent(self): + return IPortletRendererSettings(self.context)