16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_content.component.gallery.interfaces import IGallery, IGalleryTarget, \ |
19 from pyams_content.component.gallery.interfaces import IGallery, IGalleryTarget, \ |
20 GALLERY_CONTAINER_KEY, IGalleryRenderer |
20 GALLERY_CONTAINER_KEY, IGalleryRenderer |
|
21 from pyams_content.component.paragraph import IBaseParagraph |
21 from pyams_content.features.checker.interfaces import IContentChecker |
22 from pyams_content.features.checker.interfaces import IContentChecker |
22 from pyams_content.shared.common.interfaces import IWfSharedContent |
23 from pyams_content.shared.common.interfaces import IWfSharedContent |
23 from pyams_form.interfaces.form import IFormContextPermissionChecker |
24 from pyams_form.interfaces.form import IFormContextPermissionChecker |
24 from pyams_i18n.interfaces import II18n |
25 from pyams_i18n.interfaces import II18n |
25 from zope.annotation.interfaces import IAnnotations |
26 from zope.annotation.interfaces import IAnnotations |
69 self.last_id += 1 |
70 self.last_id += 1 |
70 if not notify: |
71 if not notify: |
71 # make sure that gallery item is correctly indexed |
72 # make sure that gallery item is correctly indexed |
72 index_object(value) |
73 index_object(value) |
73 |
74 |
74 def get_visible_images(self): |
75 def get_visible_medias(self): |
75 return [image for image in self.values() if image.visible] |
76 return [media for media in self.values() if media.visible] |
76 |
77 |
77 |
78 |
78 @adapter_config(context=IGalleryTarget, provides=IGallery) |
79 @adapter_config(context=IGalleryTarget, provides=IGallery) |
79 def gallery_factory(target): |
80 def gallery_factory(target): |
80 """Galleries container factory""" |
81 """Galleries container factory""" |
114 |
115 |
115 |
116 |
116 @subscriber(IObjectAddedEvent, context_selector=IGallery) |
117 @subscriber(IObjectAddedEvent, context_selector=IGallery) |
117 def handle_added_gallery(event): |
118 def handle_added_gallery(event): |
118 """Handle added gallery""" |
119 """Handle added gallery""" |
119 content = get_parent(event.object, IWfSharedContent) |
120 gallery = event.object |
|
121 if IBaseParagraph.providedBy(gallery): |
|
122 # there is another event subscriber for paragraphs, |
|
123 # so don't trigger event twice ! |
|
124 return |
|
125 content = get_parent(gallery, IWfSharedContent) |
120 if content is not None: |
126 if content is not None: |
121 get_current_registry().notify(ObjectModifiedEvent(content)) |
127 get_current_registry().notify(ObjectModifiedEvent(content)) |
122 |
128 |
123 |
129 |
124 @subscriber(IObjectModifiedEvent, context_selector=IGallery) |
130 @subscriber(IObjectModifiedEvent, context_selector=IGallery) |
125 def handle_modified_gallery(event): |
131 def handle_modified_gallery(event): |
126 """Handle modified gallery""" |
132 """Handle modified gallery""" |
127 content = get_parent(event.object, IWfSharedContent) |
133 gallery = event.object |
|
134 if IBaseParagraph.providedBy(gallery): |
|
135 # there is another event subscriber for paragraphs, |
|
136 # so don't trigger event twice ! |
|
137 return |
|
138 content = get_parent(gallery, IWfSharedContent) |
128 if content is not None: |
139 if content is not None: |
129 get_current_registry().notify(ObjectModifiedEvent(content)) |
140 get_current_registry().notify(ObjectModifiedEvent(content)) |
130 |
141 |
131 |
142 |
132 @subscriber(IObjectRemovedEvent, context_selector=IGallery) |
143 @subscriber(IObjectRemovedEvent, context_selector=IGallery) |
133 def handle_removed_gallery(event): |
144 def handle_removed_gallery(event): |
134 """Handle removed gallery""" |
145 """Handle removed gallery""" |
135 content = get_parent(event.object, IWfSharedContent) |
146 gallery = event.object |
|
147 if IBaseParagraph.providedBy(gallery): |
|
148 # there is another event subscriber for paragraphs, |
|
149 # so don't trigger event twice ! |
|
150 return |
|
151 content = get_parent(gallery, IWfSharedContent) |
136 if content is not None: |
152 if content is not None: |
137 get_current_registry().notify(ObjectModifiedEvent(content)) |
153 get_current_registry().notify(ObjectModifiedEvent(content)) |
138 |
154 |
139 |
155 |
140 @adapter_config(name='gallery', context=IGallery, provides=IContentChecker) |
156 @adapter_config(name='gallery', context=IGallery, provides=IContentChecker) |
146 weight = 60 |
162 weight = 60 |
147 |
163 |
148 def inner_check(self, request): |
164 def inner_check(self, request): |
149 output = [] |
165 output = [] |
150 registry = request.registry |
166 registry = request.registry |
151 for image in IGallery(self.context).values(): |
167 for media in IGallery(self.context).values(): |
152 if not image.visible: |
168 if not media.visible: |
153 continue |
169 continue |
154 for name, checker in sorted(registry.getAdapters((image, ), IContentChecker), |
170 for name, checker in sorted(registry.getAdapters((media, ), IContentChecker), |
155 key=lambda x: x[1].weight): |
171 key=lambda x: x[1].weight): |
156 output.append('- {0} : '.format(checker.label or |
172 output.append('- {0} : '.format(checker.label or |
157 II18n(image).query_attribute('title', request=request))) |
173 II18n(media).query_attribute('title', request=request))) |
158 output.append(checker.get_check_output(request)) |
174 output.append(checker.get_check_output(request)) |
159 return output |
175 return output |
160 |
176 |
161 |
177 |
162 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker) |
178 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker) |