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