32 |
32 |
33 # import packages |
33 # import packages |
34 from pyams_content.component.association.zmi import AssociationsTable |
34 from pyams_content.component.association.zmi import AssociationsTable |
35 from pyams_content.component.paragraph.frame import FrameParagraph |
35 from pyams_content.component.paragraph.frame import FrameParagraph |
36 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ |
36 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ |
37 BaseParagraphAddMenu, BaseParagraphPropertiesEditForm |
37 BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_toolbar_refresh_event |
38 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \ |
38 from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \ |
39 ParagraphTitleToolbarViewletManager |
39 ParagraphTitleToolbarViewletManager |
40 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer |
40 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer |
41 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
41 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
42 from pyams_pagelet.pagelet import pagelet_config |
42 from pyams_pagelet.pagelet import pagelet_config |
|
43 from pyams_skin.event import get_json_switched_table_refresh_event, get_json_widget_refresh_event |
43 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
44 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
44 from pyams_utils.traversing import get_parent |
45 from pyams_utils.traversing import get_parent |
45 from pyams_viewlet.viewlet import viewlet_config |
46 from pyams_viewlet.viewlet import viewlet_config |
46 from pyams_zmi.form import AdminDialogAddForm |
47 from pyams_zmi.form import AdminDialogAddForm |
47 from pyramid.view import view_config |
48 from pyramid.view import view_config |
124 @pagelet_config(name='properties.html', context=IFrameParagraph, layer=IPyAMSLayer, |
125 @pagelet_config(name='properties.html', context=IFrameParagraph, layer=IPyAMSLayer, |
125 permission=MANAGE_CONTENT_PERMISSION) |
126 permission=MANAGE_CONTENT_PERMISSION) |
126 @implementer(IFrameParagraphForm) |
127 @implementer(IFrameParagraphForm) |
127 class FrameParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
128 class FrameParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
128 """Framed text paragraph properties edit form""" |
129 """Framed text paragraph properties edit form""" |
|
130 |
|
131 prefix = 'frame_properties.' |
129 |
132 |
130 legend = _("Edit framed text paragraph properties") |
133 legend = _("Edit framed text paragraph properties") |
131 dialog_class = 'modal-large' |
134 dialog_class = 'modal-large' |
132 icon_css_class = 'fa fa-fw fa-list-alt' |
135 icon_css_class = 'fa fa-fw fa-list-alt' |
133 label_css_class = 'control-label col-md-2' |
136 label_css_class = 'control-label col-md-2' |
157 def get_ajax_output(self, changes): |
160 def get_ajax_output(self, changes): |
158 output = super(FrameParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes) |
161 output = super(FrameParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes) |
159 if 'body' in changes.get(IFrameParagraph, ()): |
162 if 'body' in changes.get(IFrameParagraph, ()): |
160 # refresh associations count markers |
163 # refresh associations count markers |
161 parent = get_parent(self.context, IAssociationTarget) |
164 parent = get_parent(self.context, IAssociationTarget) |
162 table = ParagraphContainerTable(parent, self.request) |
165 output.setdefault('events', []).append( |
163 viewlet = ParagraphTitleToolbarViewletManager(parent, self.request, table) |
166 get_json_paragraph_toolbar_refresh_event(parent, self.request, |
164 viewlet.update() |
167 ParagraphContainerTable, ParagraphTitleToolbarViewletManager)) |
165 output.setdefault('events', []).append({ |
|
166 'event': 'myams.refresh', |
|
167 'options': { |
|
168 'handler': 'PyAMS_content.paragraphs.updateToolbar', |
|
169 'object_name': self.context.__name__, |
|
170 'toolbar_tag': viewlet.render() |
|
171 } |
|
172 }) |
|
173 # refresh associations table |
168 # refresh associations table |
174 associations_table = AssociationsTable(self.context, self.request) |
169 output.setdefault('events', []).append( |
175 associations_table.update() |
170 get_json_switched_table_refresh_event(self.context, self.request, AssociationsTable)) |
176 output.setdefault('events', []).append({ |
|
177 'event': 'myams.refresh', |
|
178 'options': { |
|
179 'handler': 'PyAMS_content.associations.refreshAssociations', |
|
180 'object_id': associations_table.id, |
|
181 'table': associations_table.render() |
|
182 } |
|
183 }) |
|
184 return output |
171 return output |
185 |
172 |
186 |
173 |
187 @adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) |
174 @adapter_config(context=(IFrameParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) |
188 @implementer(IInnerForm, IPropertiesEditForm, IAssociationsParentForm) |
175 @implementer(IInnerForm, IPropertiesEditForm, IAssociationsParentForm) |
207 |
194 |
208 def get_ajax_output(self, changes): |
195 def get_ajax_output(self, changes): |
209 output = super(FrameParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
196 output = super(FrameParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
210 updated = changes.get(IFrameParagraph, ()) |
197 updated = changes.get(IFrameParagraph, ()) |
211 if 'renderer' in updated: |
198 if 'renderer' in updated: |
212 form = FrameParagraphInnerEditForm(self.context, self.request) |
199 output.setdefault('events', []).append( |
213 form.update() |
200 get_json_widget_refresh_event(self.context, self.request, FrameParagraphInnerEditForm, 'renderer')) |
214 output.setdefault('events', []).append({ |
|
215 'event': 'myams.refresh', |
|
216 'options': { |
|
217 'handler': 'MyAMS.skin.refreshWidget', |
|
218 'parent_id': '{0}_{1}_{2}'.format( |
|
219 self.context.__class__.__name__, |
|
220 getattr(form.getContent(), '__name__', 'noname').replace('++', ''), |
|
221 form.id), |
|
222 'widget_name': form.widgets['renderer'].name, |
|
223 'content': form.widgets['renderer'].render() |
|
224 } |
|
225 }) |
|
226 return output |
201 return output |
227 |
202 |
228 |
203 |
229 # |
204 # |
230 # Framed text paragraph renderer |
205 # Framed text paragraph renderer |