15 |
15 |
16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \ |
19 from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \ |
20 GALLERY_CONTAINER_KEY |
20 GALLERY_CONTAINER_KEY, GALLERY_RENDERERS |
21 from pyams_content.component.paragraph import IBaseParagraph |
21 from pyams_content.component.paragraph import IBaseParagraph |
22 from pyams_content.features.checker.interfaces import IContentChecker |
22 from pyams_content.features.checker.interfaces import IContentChecker |
23 from pyams_content.shared.common.interfaces import IWfSharedContent |
23 from pyams_content.shared.common.interfaces import IWfSharedContent |
24 from pyams_form.interfaces.form import IFormContextPermissionChecker |
24 from pyams_form.interfaces.form import IFormContextPermissionChecker |
25 from pyams_i18n.interfaces import II18n |
25 from pyams_i18n.interfaces import II18n |
29 from zope.traversing.interfaces import ITraversable |
29 from zope.traversing.interfaces import ITraversable |
30 |
30 |
31 # import packages |
31 # import packages |
32 from pyams_catalog.utils import index_object |
32 from pyams_catalog.utils import index_object |
33 from pyams_content.features.checker import BaseContentChecker |
33 from pyams_content.features.checker import BaseContentChecker |
34 from pyams_content.features.renderer import RenderedContentMixin |
34 from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer |
35 from pyams_utils.adapter import adapter_config, ContextAdapter |
35 from pyams_utils.adapter import adapter_config, ContextAdapter |
36 from pyams_utils.container import BTreeOrderedContainer |
36 from pyams_utils.container import BTreeOrderedContainer |
|
37 from pyams_utils.request import check_request |
37 from pyams_utils.traversing import get_parent |
38 from pyams_utils.traversing import get_parent |
|
39 from pyams_utils.vocabulary import vocabulary_config |
38 from pyramid.events import subscriber |
40 from pyramid.events import subscriber |
39 from pyramid.threadlocal import get_current_registry |
41 from pyramid.threadlocal import get_current_registry |
40 from zope.interface import implementer |
42 from zope.interface import implementer |
41 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent |
43 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent |
42 from zope.location import locate |
44 from zope.location import locate |
43 from zope.schema.fieldproperty import FieldProperty |
45 from zope.schema.fieldproperty import FieldProperty |
|
46 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
44 |
47 |
45 from pyams_content import _ |
48 from pyams_content import _ |
46 |
49 |
47 |
50 |
48 # |
51 # |
175 |
178 |
176 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker) |
179 @adapter_config(name='gallery', context=IGalleryTarget, provides=IContentChecker) |
177 def GalleryTargetContentChecker(context): |
180 def GalleryTargetContentChecker(context): |
178 gallery = IGallery(context) |
181 gallery = IGallery(context) |
179 return IContentChecker(gallery, None) |
182 return IContentChecker(gallery, None) |
|
183 |
|
184 |
|
185 @vocabulary_config(name=GALLERY_RENDERERS) |
|
186 class GalleryRendererVocabulary(SimpleVocabulary): |
|
187 """Gallery renderers vocabulary""" |
|
188 |
|
189 def __init__(self, context=None): |
|
190 request = check_request() |
|
191 translate = request.localizer.translate |
|
192 registry = request.registry |
|
193 if not IBaseGallery.providedBy(context): |
|
194 context = Gallery() |
|
195 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
196 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer), |
|
197 key=lambda x: x[1].weight)] |
|
198 super(GalleryRendererVocabulary, self).__init__(terms) |