20 IParagraphRenderer |
20 IParagraphRenderer |
21 from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE |
21 from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE |
22 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView |
22 from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView |
23 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
23 from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION |
24 from pyams_form.interfaces.form import IInnerForm, IEditFormButtons |
24 from pyams_form.interfaces.form import IInnerForm, IEditFormButtons |
25 from pyams_i18n.interfaces import II18n |
|
26 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu |
25 from pyams_skin.interfaces.viewlet import IToolbarAddingMenu |
27 from pyams_skin.layer import IPyAMSLayer |
26 from pyams_skin.layer import IPyAMSLayer |
28 from z3c.form.interfaces import INPUT_MODE |
27 from z3c.form.interfaces import INPUT_MODE |
29 |
28 |
30 # import packages |
29 # import packages |
31 from pyams_content.component.paragraph.header import HeaderParagraph |
30 from pyams_content.component.paragraph.header import HeaderParagraph |
32 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ |
31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ |
33 BaseParagraphAddMenu, BaseParagraphPropertiesEditForm |
32 BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_refresh_event |
34 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer |
33 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer |
35 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
34 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
36 from pyams_pagelet.pagelet import pagelet_config |
35 from pyams_pagelet.pagelet import pagelet_config |
|
36 from pyams_skin.event import get_json_widget_refresh_event |
37 from pyams_utils.adapter import adapter_config |
37 from pyams_utils.adapter import adapter_config |
38 from pyams_viewlet.viewlet import viewlet_config |
38 from pyams_viewlet.viewlet import viewlet_config |
39 from pyams_zmi.form import AdminDialogAddForm |
39 from pyams_zmi.form import AdminDialogAddForm |
40 from pyramid.view import view_config |
40 from pyramid.view import view_config |
41 from z3c.form import field, button |
41 from z3c.form import field, button |
88 @pagelet_config(name='properties.html', context=IHeaderParagraph, layer=IPyAMSLayer, |
88 @pagelet_config(name='properties.html', context=IHeaderParagraph, layer=IPyAMSLayer, |
89 permission=MANAGE_CONTENT_PERMISSION) |
89 permission=MANAGE_CONTENT_PERMISSION) |
90 class HeaderParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
90 class HeaderParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
91 """Header paragraph properties edit form""" |
91 """Header paragraph properties edit form""" |
92 |
92 |
|
93 prefix = 'header_properties.' |
|
94 |
93 legend = _("Edit header paragraph properties") |
95 legend = _("Edit header paragraph properties") |
94 icon_css_class = 'fa fa-fw fa-header' |
96 icon_css_class = 'fa fa-fw fa-header' |
95 |
97 |
96 fields = field.Fields(IHeaderParagraph).select('header', 'renderer') |
98 fields = field.Fields(IHeaderParagraph).select('header', 'renderer') |
97 fields['renderer'].widgetFactory = RendererFieldWidget |
99 fields['renderer'].widgetFactory = RendererFieldWidget |
111 """Header paragraph properties edit form, JSON renderer""" |
113 """Header paragraph properties edit form, JSON renderer""" |
112 |
114 |
113 def get_ajax_output(self, changes): |
115 def get_ajax_output(self, changes): |
114 output = super(HeaderParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes) |
116 output = super(HeaderParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes) |
115 if 'header' in changes.get(IHeaderParagraph, ()): |
117 if 'header' in changes.get(IHeaderParagraph, ()): |
116 output.setdefault('events', []).append({ |
118 output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request)) |
117 'event': 'myams.refresh', |
|
118 'options': { |
|
119 'handler': 'PyAMS_content.paragraphs.refreshParagraph', |
|
120 'object_name': self.context.__name__, |
|
121 'title': II18n(self.context).query_attribute('title', request=self.request), |
|
122 'visible': self.context.visible |
|
123 } |
|
124 }) |
|
125 return output |
119 return output |
126 |
120 |
127 |
121 |
128 @adapter_config(context=(IHeaderParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) |
122 @adapter_config(context=(IHeaderParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) |
129 @implementer(IInnerForm) |
123 @implementer(IInnerForm) |
150 """Header paragraph inner edit form, JSON renderer""" |
144 """Header paragraph inner edit form, JSON renderer""" |
151 |
145 |
152 def get_ajax_output(self, changes): |
146 def get_ajax_output(self, changes): |
153 output = super(HeaderParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
147 output = super(HeaderParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
154 updated = changes.get(IHeaderParagraph, ()) |
148 updated = changes.get(IHeaderParagraph, ()) |
|
149 if 'header' in updated: |
|
150 output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request)) |
155 if 'renderer' in updated: |
151 if 'renderer' in updated: |
156 form = HeaderParagraphInnerEditForm(self.context, self.request) |
152 output.setdefault('events', []).append(get_json_widget_refresh_event(self.context, self.request, |
157 form.update() |
153 HeaderParagraphInnerEditForm, 'renderer')) |
158 output.setdefault('events', []).append({ |
|
159 'event': 'myams.refresh', |
|
160 'options': { |
|
161 'handler': 'MyAMS.skin.refreshWidget', |
|
162 'parent_id': '{0}_{1}_{2}'.format( |
|
163 self.context.__class__.__name__, |
|
164 getattr(form.getContent(), '__name__', 'noname').replace('++', ''), |
|
165 form.id), |
|
166 'widget_name': form.widgets['renderer'].name, |
|
167 'content': form.widgets['renderer'].render() |
|
168 } |
|
169 }) |
|
170 return output |
154 return output |
171 |
155 |
172 |
156 |
173 # |
157 # |
174 # Header paragraph renderer |
158 # Header paragraph renderer |