30 # import packages |
30 # import packages |
31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ |
31 from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ |
32 BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons |
32 BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons |
33 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
33 from pyams_content.features.renderer.zmi.widget import RendererFieldWidget |
34 from pyams_content.shared.imagemap.paragraph import ImageMapParagraph |
34 from pyams_content.shared.imagemap.paragraph import ImageMapParagraph |
|
35 from pyams_form.form import ajax_config |
35 from pyams_pagelet.pagelet import pagelet_config |
36 from pyams_pagelet.pagelet import pagelet_config |
36 from pyams_skin.event import get_json_form_refresh_event |
37 from pyams_skin.event import get_json_form_refresh_event |
37 from pyams_template.template import template_config |
38 from pyams_template.template import template_config |
38 from pyams_utils.adapter import adapter_config |
39 from pyams_utils.adapter import adapter_config |
39 from pyams_utils.traversing import get_parent |
40 from pyams_utils.traversing import get_parent |
40 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
41 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
41 from pyams_zmi.form import AdminDialogAddForm |
42 from pyams_zmi.form import AdminDialogAddForm |
42 from pyramid.view import view_config |
|
43 from z3c.form import field, button |
43 from z3c.form import field, button |
44 from zope.interface import implementer |
44 from zope.interface import implementer |
45 |
45 |
46 from pyams_content import _ |
46 from pyams_content import _ |
47 |
47 |
57 paragraph_type = IMAGEMAP_PARAGRAPH_TYPE |
57 paragraph_type = IMAGEMAP_PARAGRAPH_TYPE |
58 |
58 |
59 |
59 |
60 @pagelet_config(name='add-imagemap-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
60 @pagelet_config(name='add-imagemap-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
61 permission=MANAGE_CONTENT_PERMISSION) |
61 permission=MANAGE_CONTENT_PERMISSION) |
|
62 @ajax_config(name='add-imagemap-paragraph.json', context=IParagraphContainerTarget, layer=IPyAMSLayer, |
|
63 base=BaseParagraphAJAXAddForm) |
62 class ImagemapParagraphAddForm(AdminDialogAddForm): |
64 class ImagemapParagraphAddForm(AdminDialogAddForm): |
63 """Image map paragraph add form""" |
65 """Image map paragraph add form""" |
64 |
66 |
65 legend = _("Add new image map") |
67 legend = _("Add new image map") |
66 icon_css_class = 'fa fa-fw fa-location-arrow' |
68 icon_css_class = 'fa fa-fw fa-location-arrow' |
67 |
69 |
68 fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible') |
70 fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible') |
69 ajax_handler = 'add-imagemap-paragraph.json' |
|
70 edit_permission = MANAGE_CONTENT_PERMISSION |
71 edit_permission = MANAGE_CONTENT_PERMISSION |
71 |
72 |
72 def create(self, data): |
73 def create(self, data): |
73 return ImageMapParagraph() |
74 return ImageMapParagraph() |
74 |
75 |
75 def add(self, object): |
76 def add(self, object): |
76 IParagraphContainer(self.context).append(object) |
77 IParagraphContainer(self.context).append(object) |
77 |
78 |
78 |
79 |
79 @view_config(name='add-imagemap-paragraph.json', context=IParagraphContainerTarget, request_type=IPyAMSLayer, |
|
80 permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) |
|
81 class ImagemapParagraphAJAXAddForm(BaseParagraphAJAXAddForm, ImagemapParagraphAddForm): |
|
82 """Image map paragraph add form, JSON renderer""" |
|
83 |
|
84 |
|
85 @pagelet_config(name='properties.html', context=IImageMapParagraph, layer=IPyAMSLayer, |
80 @pagelet_config(name='properties.html', context=IImageMapParagraph, layer=IPyAMSLayer, |
86 permission=MANAGE_CONTENT_PERMISSION) |
81 permission=MANAGE_CONTENT_PERMISSION) |
|
82 @ajax_config(name='properties.json', context=IImageMapParagraph, layer=IPyAMSLayer, |
|
83 base=BaseParagraphAJAXEditForm) |
87 class ImagemapParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
84 class ImagemapParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): |
88 """Image map paragraph edit form""" |
85 """Image map paragraph edit form""" |
89 |
86 |
90 prefix = 'imagemap_properties.' |
87 prefix = 'imagemap_properties.' |
91 |
88 |
98 icon_css_class = 'fa fa-fw fa-location-arrow' |
95 icon_css_class = 'fa fa-fw fa-location-arrow' |
99 |
96 |
100 fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible') |
97 fields = field.Fields(IImageMapParagraph).omit('__parent__', '__name__', 'visible') |
101 fields['renderer'].widgetFactory = RendererFieldWidget |
98 fields['renderer'].widgetFactory = RendererFieldWidget |
102 |
99 |
103 ajax_handler = 'properties.json' |
|
104 edit_permission = MANAGE_CONTENT_PERMISSION |
100 edit_permission = MANAGE_CONTENT_PERMISSION |
105 |
101 |
106 |
102 |
107 @view_config(name='properties.json', context=IImageMapParagraph, request_type=IPyAMSLayer, |
|
108 permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) |
|
109 class ImagemapParagrahPropertiesAJAXEditForm(BaseParagraphAJAXEditForm, ImagemapParagraphPropertiesEditForm): |
|
110 """Image map properties edit form, JSON renderer""" |
|
111 |
|
112 |
|
113 @adapter_config(context=(IImageMapParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) |
103 @adapter_config(context=(IImageMapParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) |
|
104 @ajax_config(name='inner-properties.json', context=IImageMapParagraph, layer=IPyAMSLayer, |
|
105 base=BaseParagraphAJAXEditForm) |
114 @implementer(IInnerForm) |
106 @implementer(IInnerForm) |
115 class ImagemapParagraphInnerEditForm(ImagemapParagraphPropertiesEditForm): |
107 class ImagemapParagraphInnerEditForm(ImagemapParagraphPropertiesEditForm): |
116 """Image map properties inner edit form""" |
108 """Image map properties inner edit form""" |
117 |
109 |
118 legend = None |
110 legend = None |
119 ajax_handler = 'inner-properties.json' |
|
120 |
111 |
121 @property |
112 @property |
122 def buttons(self): |
113 def buttons(self): |
123 if self.mode == INPUT_MODE: |
114 if self.mode == INPUT_MODE: |
124 return button.Buttons(IParagraphEditFormButtons) |
115 return button.Buttons(IParagraphEditFormButtons) |
125 else: |
116 else: |
126 return button.Buttons() |
117 return button.Buttons() |
127 |
118 |
128 |
|
129 @view_config(name='inner-properties.json', context=IImageMapParagraph, request_type=IPyAMSLayer, |
|
130 permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) |
|
131 class ImagemapParagraphInnerAJAXEditForm(BaseParagraphAJAXEditForm, ImagemapParagraphInnerEditForm): |
|
132 """Image map paragraph properties inner edit form, JSON rendener""" |
|
133 |
|
134 def get_ajax_output(self, changes): |
119 def get_ajax_output(self, changes): |
135 output = super(ImagemapParagraphInnerAJAXEditForm, self).get_ajax_output(changes) |
120 output = super(self.__class__, self).get_ajax_output(changes) |
136 if 'reference' in changes.get(IImageMapParagraph, ()): |
121 if 'reference' in changes.get(IImageMapParagraph, ()): |
137 output.setdefault('events', []).append( |
122 output.setdefault('events', []).append( |
138 get_json_form_refresh_event(self.context, self.request, ImagemapParagraphInnerEditForm)) |
123 get_json_form_refresh_event(self.context, self.request, ImagemapParagraphInnerEditForm)) |
139 return output |
124 return output |
140 |
125 |