20 IBaseParagraph, IParagraphRenderer |
20 IBaseParagraph, IParagraphRenderer |
21 from pyams_content.component.paragraph.interfaces.contact import CONTACT_PARAGRAPH_TYPE, IContactParagraph |
21 from pyams_content.component.paragraph.interfaces.contact import CONTACT_PARAGRAPH_TYPE, IContactParagraph |
22 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor |
22 from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor |
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 transaction.interfaces import ITransactionManager |
27 from transaction.interfaces import ITransactionManager |
29 from z3c.form.interfaces import INPUT_MODE |
28 from z3c.form.interfaces import INPUT_MODE |
30 |
29 |
31 # import packages |
30 # import packages |
32 from pyams_content.component.paragraph.contact import ContactParagraph |
31 from pyams_content.component.paragraph.contact import ContactParagraph |
33 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \ |
32 from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \ |
34 BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm |
33 BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm, get_json_paragraph_refresh_event |
35 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer |
34 from pyams_content.features.renderer.zmi import BaseRenderedContentRenderer |
36 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
35 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
37 from pyams_pagelet.pagelet import pagelet_config |
36 from pyams_pagelet.pagelet import pagelet_config |
|
37 from pyams_skin.event import get_json_form_refresh_event |
38 from pyams_utils.adapter import adapter_config |
38 from pyams_utils.adapter import adapter_config |
39 from pyams_viewlet.viewlet import viewlet_config |
39 from pyams_viewlet.viewlet import viewlet_config |
40 from pyams_zmi.form import AdminDialogAddForm |
40 from pyams_zmi.form import AdminDialogAddForm |
41 from pyramid.view import view_config |
41 from pyramid.view import view_config |
42 from z3c.form import field, button |
42 from z3c.form import field, button |
90 @pagelet_config(name='properties.html', context=IContactParagraph, layer=IPyAMSLayer, |
90 @pagelet_config(name='properties.html', context=IContactParagraph, layer=IPyAMSLayer, |
91 permission=MANAGE_CONTENT_PERMISSION) |
91 permission=MANAGE_CONTENT_PERMISSION) |
92 class ContactParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
92 class ContactParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
93 """Contact paragraph properties edit form""" |
93 """Contact paragraph properties edit form""" |
94 |
94 |
|
95 prefix = 'contact_properties.' |
|
96 |
95 legend = _("Edit contact card properties") |
97 legend = _("Edit contact card properties") |
96 icon_css_class = 'fa fa-fw fa-id-card-o' |
98 icon_css_class = 'fa fa-fw fa-id-card-o' |
97 |
99 |
98 fields = field.Fields(IContactParagraph).omit('__parent__', '__name__', 'visible') |
100 fields = field.Fields(IContactParagraph).omit('__parent__', '__name__', 'visible') |
99 fields['renderer'].widgetFactory = RendererFieldWidget |
101 fields['renderer'].widgetFactory = RendererFieldWidget |
136 |
138 |
137 def get_ajax_output(self, changes): |
139 def get_ajax_output(self, changes): |
138 output = super(ContactParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
140 output = super(ContactParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
139 updated = changes.get(IBaseParagraph, ()) |
141 updated = changes.get(IBaseParagraph, ()) |
140 if 'title' in updated: |
142 if 'title' in updated: |
141 output.setdefault('events', []).append({ |
143 output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request)) |
142 'event': 'myams.refresh', |
|
143 'options': { |
|
144 'handler': 'PyAMS_content.paragraphs.refreshParagraph', |
|
145 'object_name': self.context.__name__, |
|
146 'title': II18n(self.context).query_attribute('title', request=self.request), |
|
147 'visible': self.context.visible |
|
148 } |
|
149 }) |
|
150 updated = changes.get(IContactParagraph, ()) |
144 updated = changes.get(IContactParagraph, ()) |
151 if ('photo' in updated) or ('renderer' in updated): |
145 if ('photo' in updated) or ('renderer' in updated): |
152 # we have to commit transaction to be able to handle blobs... |
146 # we have to commit transaction to be able to handle blobs... |
153 ITransactionManager(self.context).get().commit() |
147 if 'photo' in updated: |
154 form = ContactParagraphInnerEditForm(self.context, self.request) |
148 ITransactionManager(self.context).get().commit() |
155 form.update() |
149 output.setdefault('events', []).append(get_json_form_refresh_event(self.context, self.request, |
156 output.setdefault('events', []).append({ |
150 ContactParagraphInnerEditForm)) |
157 'event': 'myams.refresh', |
|
158 'options': { |
|
159 'object_id': '{0}_{1}_{2}'.format( |
|
160 self.context.__class__.__name__, |
|
161 getattr(form.getContent(), '__name__', 'noname').replace('++', ''), |
|
162 form.id), |
|
163 'content': form.render() |
|
164 } |
|
165 }) |
|
166 return output |
151 return output |
167 |
152 |
168 |
153 |
169 # |
154 # |
170 # Contact paragraph renderer |
155 # Contact paragraph renderer |