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 |