src/pyams_portal/zmi/portlet.py
changeset 108 7dd8d5c7e206
parent 82 fb2eed8dc88e
child 109 1204c6c35575
--- 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)