src/pyams_portal/zmi/portlet.py
changeset 289 fca4100c1733
parent 282 5c1cccd7fba8
equal deleted inserted replaced
288:390514bce78a 289:fca4100c1733
     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 
    12 
    13 __docformat__ = 'restructuredtext'
       
    14 
       
    15 
       
    16 # import standard library
       
    17 
       
    18 from pyramid.decorator import reify
    13 from pyramid.decorator import reify
    19 from z3c.form import field
    14 from z3c.form import field
    20 from z3c.form.interfaces import INPUT_MODE
    15 from z3c.form.interfaces import INPUT_MODE
    21 from zope.interface import implementer, Interface
    16 from zope.interface import Interface, implementer
    22 
    17 
    23 # import packages
       
    24 from pyams_form.form import ajax_config
    18 from pyams_form.form import ajax_config
    25 from pyams_form.help import FormHelp
    19 from pyams_form.help import FormHelp
    26 # import interfaces
    20 from pyams_form.interfaces.form import IFormHelp, IFormManager, IInnerTabForm
    27 from pyams_form.interfaces.form import IFormManager, IInnerTabForm, IFormHelp
       
    28 from pyams_pagelet.pagelet import pagelet_config
    21 from pyams_pagelet.pagelet import pagelet_config
    29 from pyams_portal import _
    22 from pyams_portal.interfaces import IPortalPage, IPortalTemplate, IPortlet, \
    30 from pyams_portal.interfaces import IPortlet, IPortalTemplate, IPortalPage, MANAGE_TEMPLATE_PERMISSION, \
    23     IPortletRendererSettings, IPortletSettings, LOCAL_TEMPLATE_NAME, MANAGE_TEMPLATE_PERMISSION
    31     IPortletSettings, IPortletRendererSettings, LOCAL_TEMPLATE_NAME
       
    32 from pyams_portal.zmi.widget import PortletRendererFieldWidget
    24 from pyams_portal.zmi.widget import PortletRendererFieldWidget
    33 from pyams_skin.event import get_json_widget_refresh_event
    25 from pyams_skin.event import get_json_widget_refresh_event
    34 from pyams_skin.layer import IPyAMSLayer
    26 from pyams_skin.layer import IPyAMSLayer
    35 from pyams_template.template import template_config
    27 from pyams_template.template import template_config
    36 from pyams_utils.adapter import adapter_config
    28 from pyams_utils.adapter import adapter_config
    38 from pyams_zmi.form import AdminDialogEditForm, InnerAdminEditForm
    30 from pyams_zmi.form import AdminDialogEditForm, InnerAdminEditForm
    39 from pyams_zmi.interfaces import IPropertiesEditForm
    31 from pyams_zmi.interfaces import IPropertiesEditForm
    40 from pyams_zmi.layer import IAdminLayer
    32 from pyams_zmi.layer import IAdminLayer
    41 
    33 
    42 
    34 
       
    35 __docformat__ = 'restructuredtext'
       
    36 
       
    37 from pyams_portal import _
       
    38 
       
    39 
    43 @template_config(template='templates/portlet.pt', layer=IPyAMSLayer)
    40 @template_config(template='templates/portlet.pt', layer=IPyAMSLayer)
    44 class PortletSettingsEditor(AdminDialogEditForm):
    41 class PortletSettingsEditor(AdminDialogEditForm):
    45     """Portlet settings edit form"""
    42     """Portlet settings edit form"""
    46 
    43 
    47     prefix = 'portlet.'
    44     prefix = 'portlet.'
    51         translate = self.request.localizer.translate
    48         translate = self.request.localizer.translate
    52         parent = self.configuration.__parent__
    49         parent = self.configuration.__parent__
    53         if not IPortalTemplate.providedBy(parent):
    50         if not IPortalTemplate.providedBy(parent):
    54             parent = IPortalPage(parent).template
    51             parent = IPortalPage(parent).template
    55         if parent.name == LOCAL_TEMPLATE_NAME:
    52         if parent.name == LOCAL_TEMPLATE_NAME:
    56             return translate(_("Local portal template - {0}")).format(translate(self.portlet.label))
    53             return translate(_("Local portal template - {0}")).format(
    57         else:
    54                 translate(self.portlet.label))
    58             return translate(_("« {0} »  portal template - {1}")).format(parent.name,
    55         else:
    59                                                                          translate(self.portlet.label))
    56             return translate(_("« {0} »  portal template - {1}")).format(
       
    57                 parent.name, translate(self.portlet.label))
    60 
    58 
    61     legend = _("Edit portlet settings")
    59     legend = _("Edit portlet settings")
    62     dialog_class = 'modal-large'
    60     dialog_class = 'modal-large'
    63 
    61 
    64     settings = None
    62     settings = None
   102         configuration = view.configuration
   100         configuration = view.configuration
   103         if (not configuration.can_inherit) or (view.mode != INPUT_MODE):
   101         if (not configuration.can_inherit) or (view.mode != INPUT_MODE):
   104             return None
   102             return None
   105         return FormHelp.__new__(cls)
   103         return FormHelp.__new__(cls)
   106 
   104 
   107     message = _("""WARNING: Portlet properties are saved automatically when changing inherit mode!!""")
   105     message = _("WARNING: Portlet properties are saved "
       
   106                 "automatically when changing inherit mode!!")
   108     message_format = 'rest'
   107     message_format = 'rest'
   109 
   108 
   110 
   109 
   111 @adapter_config(name='properties', context=(Interface, IPyAMSLayer, PortletSettingsEditor), provides=IInnerTabForm)
   110 @adapter_config(name='properties',
       
   111                 context=(Interface, IPyAMSLayer, PortletSettingsEditor),
       
   112                 provides=IInnerTabForm)
   112 class PortletSettingsPropertiesEditor(InnerAdminEditForm):
   113 class PortletSettingsPropertiesEditor(InnerAdminEditForm):
   113     """Portlet settings properties editor"""
   114     """Portlet settings properties editor"""
   114 
   115 
   115     prefix = 'portlet_properties.'
   116     prefix = 'portlet_properties.'
   116 
   117 
   147                (renderer.settings_interface is not None):
   148                (renderer.settings_interface is not None):
   148                 output.update({
   149                 output.update({
   149                     'close_form': False
   150                     'close_form': False
   150                 })
   151                 })
   151                 output.setdefault('events', []).append(
   152                 output.setdefault('events', []).append(
   152                     get_json_widget_refresh_event(self.context, self.request, get_form_factory, 'renderer'))
   153                     get_json_widget_refresh_event(self.context, self.request,
       
   154                                                   get_form_factory, 'renderer'))
   153                 output['smallbox'] = {
   155                 output['smallbox'] = {
   154                     'status': 'info',
   156                     'status': 'info',
   155                     'message': self.request.localizer.translate(_("You changed renderer selection. Don't omit to "
   157                     'message': self.request.localizer.translate(
   156                                                                   "update new renderer properties...")),
   158                         _("You changed renderer selection. "
       
   159                           "Don't omit to update new renderer properties...")),
   157                     'timeout': 5000
   160                     'timeout': 5000
   158                 }
   161                 }
   159         return output
   162         return output
   160 
   163 
   161 
   164 
   196 
   199 
   197     def update(self):
   200     def update(self):
   198         if self.manager is not None:
   201         if self.manager is not None:
   199             self.manager.update()
   202             self.manager.update()
   200         else:
   203         else:
   201             super(PortletRendererPropertiesEditForm, self).update()
   204             super().update()
   202 
   205 
   203     def updateWidgets(self, prefix=None):
   206     def updateWidgets(self, prefix=None):
   204         if self.manager is not None:
   207         if self.manager is not None:
   205             self.manager.updateWidgets(prefix)
   208             self.manager.updateWidgets(prefix)
   206         else:
   209         else:
   207             super(PortletRendererPropertiesEditForm, self).updateWidgets(prefix)
   210             super().updateWidgets(prefix)
   208 
   211 
   209     def updateActions(self):
   212     def updateActions(self):
   210         if self.manager is not None:
   213         if self.manager is not None:
   211             self.manager.updateActions()
   214             self.manager.updateActions()
   212         else:
   215         else:
   213             super(PortletRendererPropertiesEditForm, self).updateActions()
   216             super().updateActions()
   214 
   217 
   215     def updateGroups(self):
   218     def updateGroups(self):
   216         if self.manager is not None:
   219         if self.manager is not None:
   217             self.manager.updateGroups()
   220             self.manager.updateGroups()
   218         else:
   221         else:
   219             super(PortletRendererPropertiesEditForm, self).updateGroups()
   222             super().updateGroups()