26 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent |
26 from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent |
27 |
27 |
28 # import packages |
28 # import packages |
29 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory |
29 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory |
30 from pyams_content.component.paragraph.html import check_associations |
30 from pyams_content.component.paragraph.html import check_associations |
31 from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer |
31 from pyams_content.features.renderer import RenderersVocabulary |
32 from pyams_file.property import FileProperty |
32 from pyams_file.property import FileProperty |
33 from pyams_utils.adapter import adapter_config |
33 from pyams_utils.adapter import adapter_config |
|
34 from pyams_utils.factory import factory_config |
34 from pyams_utils.registry import utility_config, get_utility |
35 from pyams_utils.registry import utility_config, get_utility |
35 from pyams_utils.request import check_request |
|
36 from pyams_utils.traversing import get_parent |
36 from pyams_utils.traversing import get_parent |
37 from pyams_utils.vocabulary import vocabulary_config |
37 from pyams_utils.vocabulary import vocabulary_config |
38 from pyramid.events import subscriber |
38 from pyramid.events import subscriber |
39 from zope.interface import implementer |
39 from zope.interface import implementer |
40 from zope.schema.fieldproperty import FieldProperty |
40 from zope.schema.fieldproperty import FieldProperty |
41 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
42 |
41 |
43 from pyams_content import _ |
42 from pyams_content import _ |
44 |
43 |
45 |
44 |
46 @implementer(IVideoParagraph, IExtFileContainerTarget, ILinkContainerTarget) |
45 @implementer(IVideoParagraph, IExtFileContainerTarget, ILinkContainerTarget) |
47 class VideoParagraph(RenderedContentMixin, BaseParagraph): |
46 @factory_config(provided=IVideoParagraph) |
|
47 class VideoParagraph(BaseParagraph): |
48 """Video paragraph class""" |
48 """Video paragraph class""" |
49 |
49 |
50 icon_class = 'fa-film' |
50 icon_class = 'fa-film' |
51 icon_hint = _("Video") |
51 icon_hint = _("Video") |
52 |
52 |
109 output.append(translate(MISSING_VALUE).format(field=translate(IVideoParagraph[attr].title))) |
109 output.append(translate(MISSING_VALUE).format(field=translate(IVideoParagraph[attr].title))) |
110 return output |
110 return output |
111 |
111 |
112 |
112 |
113 @vocabulary_config(name=VIDEO_PARAGRAPH_RENDERERS) |
113 @vocabulary_config(name=VIDEO_PARAGRAPH_RENDERERS) |
114 class VideoParagraphRendererVocabulary(SimpleVocabulary): |
114 class VideoParagraphRendererVocabulary(RenderersVocabulary): |
115 """Video paragraph renderers vocabulary""" |
115 """Video paragraph renderers vocabulary""" |
116 |
116 |
117 def __init__(self, context=None): |
117 content_interface = IVideoParagraph |
118 request = check_request() |
|
119 translate = request.localizer.translate |
|
120 registry = request.registry |
|
121 if not IVideoParagraph.providedBy(context): |
|
122 context = VideoParagraph() |
|
123 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
124 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer), |
|
125 key=lambda x: x[1].weight)] |
|
126 super(VideoParagraphRendererVocabulary, self).__init__(terms) |
|