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