18 # import interfaces |
18 # import interfaces |
19 from pyams_content.component.paragraph.interfaces import IParagraphFactory |
19 from pyams_content.component.paragraph.interfaces import IParagraphFactory |
20 from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE, \ |
20 from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE, \ |
21 HEADER_PARAGRAPH_RENDERERS |
21 HEADER_PARAGRAPH_RENDERERS |
22 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE |
22 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE |
23 from pyams_content.features.renderer.interfaces import IContentRenderer |
|
24 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
23 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
25 |
24 |
26 # import packages |
25 # import packages |
27 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory |
26 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory |
28 from pyams_content.features.renderer import RenderedContentMixin |
27 from pyams_content.features.renderer import RenderersVocabulary |
29 from pyams_utils.adapter import adapter_config |
28 from pyams_utils.adapter import adapter_config |
|
29 from pyams_utils.factory import factory_config |
30 from pyams_utils.registry import utility_config, get_utility |
30 from pyams_utils.registry import utility_config, get_utility |
31 from pyams_utils.request import check_request |
|
32 from pyams_utils.text import get_text_start |
31 from pyams_utils.text import get_text_start |
33 from pyams_utils.traversing import get_parent |
32 from pyams_utils.traversing import get_parent |
34 from pyams_utils.vocabulary import vocabulary_config |
33 from pyams_utils.vocabulary import vocabulary_config |
35 from zope.interface import implementer |
34 from zope.interface import implementer |
36 from zope.schema.fieldproperty import FieldProperty |
35 from zope.schema.fieldproperty import FieldProperty |
37 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
38 |
36 |
39 from pyams_content import _ |
37 from pyams_content import _ |
40 |
38 |
41 |
39 |
42 @implementer(IHeaderParagraph) |
40 @implementer(IHeaderParagraph) |
43 class HeaderParagraph(RenderedContentMixin, BaseParagraph): |
41 @factory_config(provided=IHeaderParagraph) |
|
42 class HeaderParagraph(BaseParagraph): |
44 """Header paragraph""" |
43 """Header paragraph""" |
45 |
44 |
46 icon_class = 'fa-download fa-rotate-180' |
45 icon_class = 'fa-download fa-rotate-180' |
47 icon_hint = _("Header") |
46 icon_hint = _("Header") |
48 |
47 |
87 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
86 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
88 return output |
87 return output |
89 |
88 |
90 |
89 |
91 @vocabulary_config(name=HEADER_PARAGRAPH_RENDERERS) |
90 @vocabulary_config(name=HEADER_PARAGRAPH_RENDERERS) |
92 class HeaderParagraphRendererVocabulary(SimpleVocabulary): |
91 class HeaderParagraphRendererVocabulary(RenderersVocabulary): |
93 """Header paragraph renderers vocabulary""" |
92 """Header paragraph renderers vocabulary""" |
94 |
93 |
95 def __init__(self, context=None): |
94 content_interface = IHeaderParagraph |
96 request = check_request() |
|
97 translate = request.localizer.translate |
|
98 registry = request.registry |
|
99 if not IHeaderParagraph.providedBy(context): |
|
100 context = HeaderParagraph() |
|
101 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
102 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer), |
|
103 key=lambda x: x[1].weight)] |
|
104 super(HeaderParagraphRendererVocabulary, self).__init__(terms) |
|