src/pyams_portal/zmi/portlet.py
changeset 108 7dd8d5c7e206
parent 82 fb2eed8dc88e
child 109 1204c6c35575
equal deleted inserted replaced
107:563e611a329f 108:7dd8d5c7e206
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
       
    12 from pyams_form.form import ajax_config
       
    13 from pyams_pagelet.pagelet import pagelet_config
    12 
    14 
    13 __docformat__ = 'restructuredtext'
    15 __docformat__ = 'restructuredtext'
    14 
    16 
    15 
    17 
    16 # import standard library
    18 # import standard library
    17 
    19 
    18 # import interfaces
    20 # import interfaces
    19 from pyams_form.interfaces.form import IInnerTabForm
    21 from pyams_form.interfaces.form import IInnerTabForm
    20 from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION
    22 from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION, \
       
    23     IPortletSettings, IPortletRendererSettings
    21 from pyams_skin.layer import IPyAMSLayer
    24 from pyams_skin.layer import IPyAMSLayer
    22 
    25 
    23 # import packages
    26 # import packages
       
    27 from pyams_portal.zmi.widget import PortletRendererFieldWidget
    24 from pyams_template.template import template_config
    28 from pyams_template.template import template_config
    25 from pyams_utils.adapter import adapter_config
    29 from pyams_utils.adapter import adapter_config
    26 from pyams_utils.url import absolute_url
    30 from pyams_utils.url import absolute_url
    27 from pyams_zmi.form import AdminDialogEditForm, InnerAdminEditForm
    31 from pyams_zmi.form import AdminDialogEditForm, InnerAdminEditForm
    28 from pyramid.decorator import reify
    32 from pyramid.decorator import reify
    94 
    98 
    95     edit_permission = MANAGE_TEMPLATE_PERMISSION
    99     edit_permission = MANAGE_TEMPLATE_PERMISSION
    96 
   100 
    97     @property
   101     @property
    98     def fields(self):
   102     def fields(self):
    99         return field.Fields(self.parent_form.settings).omit('__name__')
   103         fields = field.Fields(self.parent_form.settings).omit('__name__', 'renderer') + \
       
   104                  field.Fields(self.parent_form.settings).select('renderer')
       
   105         fields['renderer'].widgetFactory = PortletRendererFieldWidget
       
   106         return fields
   100 
   107 
   101     weight = 10
   108     weight = 10
       
   109 
       
   110 
       
   111 #
       
   112 # Portlet renderer properties edit form
       
   113 #
       
   114 
       
   115 @pagelet_config(name='renderer-properties.html', context=IPortletSettings, layer=IPyAMSLayer,
       
   116                 permission=MANAGE_TEMPLATE_PERMISSION)
       
   117 @ajax_config(name='renderer-properties.json', context=IPortletSettings, layer=IPyAMSLayer)
       
   118 class PortletRendererPropertiesEditForm(AdminDialogEditForm):
       
   119     """Portlet renderer properties edit form"""
       
   120 
       
   121     prefix = 'portlet_renderer_properties.'
       
   122 
       
   123     legend = _("Edit renderer properties")
       
   124     icon_css_class = 'fa fa-fw fa-pencil-square-o'
       
   125 
       
   126     @property
       
   127     def fields(self):
       
   128         renderer = self.context.get_renderer(self.request)
       
   129         return field.Fields(renderer.settings_interface or Interface)
       
   130 
       
   131     edit_permission = MANAGE_TEMPLATE_PERMISSION
       
   132 
       
   133     def getContent(self):
       
   134         return IPortletRendererSettings(self.context)