src/pyams_portal/zmi/portlet.py
changeset 122 4fcb3a5afa91
parent 118 15e0ccc31b91
child 127 294f1c0162cc
equal deleted inserted replaced
121:a7c7efdc532b 122:4fcb3a5afa91
     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 z3c.form.interfaces import INPUT_MODE
       
    13 
       
    14 from pyams_form.help import FormHelp
       
    15 from pyams_zmi.layer import IAdminLayer
    12 
    16 
    13 __docformat__ = 'restructuredtext'
    17 __docformat__ = 'restructuredtext'
    14 
    18 
    15 
    19 
    16 # import standard library
    20 # import standard library
    17 
    21 
    18 # import interfaces
    22 # import interfaces
    19 from pyams_form.interfaces.form import IInnerTabForm
    23 from pyams_form.interfaces.form import IInnerTabForm, IFormHelp
    20 from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION, \
    24 from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION, \
    21     IPortletSettings, IPortletRendererSettings
    25     IPortletSettings, IPortletRendererSettings
    22 from pyams_skin.layer import IPyAMSLayer
    26 from pyams_skin.layer import IPyAMSLayer
    23 from pyams_zmi.interfaces import IPropertiesEditForm
    27 from pyams_zmi.interfaces import IPropertiesEditForm
    24 
    28 
    62 
    66 
    63     @reify
    67     @reify
    64     def configuration(self):
    68     def configuration(self):
    65         return self.context.configuration
    69         return self.context.configuration
    66 
    70 
       
    71     @reify
       
    72     def portlet(self):
       
    73         registry = self.request.registry
       
    74         return registry.queryUtility(IPortlet, name=self.configuration.portlet_name)
       
    75 
    67     @property
    76     @property
    68     def override_label(self):
    77     def override_label(self):
    69         translate = self.request.localizer.translate
    78         translate = self.request.localizer.translate
    70         parent = self.configuration.__parent__
    79         parent = self.configuration.__parent__
    71         if IPortalTemplate.providedBy(parent):
    80         if IPortalTemplate.providedBy(parent):
    81         return absolute_url(self.configuration.__parent__, self.request, self.request.view_name)
    90         return absolute_url(self.configuration.__parent__, self.request, self.request.view_name)
    82 
    91 
    83     def get_ajax_handler(self):
    92     def get_ajax_handler(self):
    84         return absolute_url(self.configuration.__parent__, self.request, self.ajax_handler)
    93         return absolute_url(self.configuration.__parent__, self.request, self.ajax_handler)
    85 
    94 
    86     @reify
    95 
    87     def portlet(self):
    96 @adapter_config(context=(Interface, IAdminLayer, PortletSettingsEditor), provides=IFormHelp)
    88         registry = self.request.registry
    97 class PortletSettingsEditorFormHelpAdapter(FormHelp):
    89         return registry.queryUtility(IPortlet, name=self.configuration.portlet_name)
    98     """Portlet settings editor form help adapter"""
       
    99 
       
   100     def __new__(cls, context, request, view):
       
   101         configuration = view.configuration
       
   102         if (not configuration.can_inherit) or (view.mode != INPUT_MODE):
       
   103             return None
       
   104         return FormHelp.__new__(cls)
       
   105 
       
   106     message = _("""WARNING: Portlet properties are saved automatically when changing inherit mode!!""")
       
   107     message_format = 'rest'
    90 
   108 
    91 
   109 
    92 @adapter_config(name='properties', context=(Interface, IPyAMSLayer, PortletSettingsEditor), provides=IInnerTabForm)
   110 @adapter_config(name='properties', context=(Interface, IPyAMSLayer, PortletSettingsEditor), provides=IInnerTabForm)
    93 class PortletSettingsPropertiesEditor(InnerAdminEditForm):
   111 class PortletSettingsPropertiesEditor(InnerAdminEditForm):
    94     """Portlet settings properties editor"""
   112     """Portlet settings properties editor"""
   100 
   118 
   101     edit_permission = MANAGE_TEMPLATE_PERMISSION
   119     edit_permission = MANAGE_TEMPLATE_PERMISSION
   102 
   120 
   103     @property
   121     @property
   104     def fields(self):
   122     def fields(self):
   105         fields = field.Fields(self.parent_form.settings).omit('__name__', 'renderer') + \
   123         settings = self.parent_form.settings
   106                  field.Fields(self.parent_form.settings).select('renderer')
   124         fields = field.Fields(settings).omit('__name__', 'renderer') + \
       
   125                  field.Fields(settings).select('renderer')
   107         fields['renderer'].widgetFactory = PortletRendererFieldWidget
   126         fields['renderer'].widgetFactory = PortletRendererFieldWidget
   108         return fields
   127         return fields
   109 
   128 
   110     weight = 10
   129     weight = 10
   111 
   130