25 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE |
25 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE |
26 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
26 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
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.features.renderer import RenderedContentMixin, IContentRenderer |
30 from pyams_content.features.renderer import RenderersVocabulary |
31 from pyams_utils.adapter import adapter_config |
31 from pyams_utils.adapter import adapter_config |
|
32 from pyams_utils.factory import factory_config |
32 from pyams_utils.registry import utility_config, get_utility |
33 from pyams_utils.registry import utility_config, get_utility |
33 from pyams_utils.request import check_request |
|
34 from pyams_utils.traversing import get_parent |
34 from pyams_utils.traversing import get_parent |
35 from pyams_utils.vocabulary import vocabulary_config |
35 from pyams_utils.vocabulary import vocabulary_config |
36 from zope.interface import implementer |
36 from zope.interface import implementer |
37 from zope.schema.fieldproperty import FieldProperty |
37 from zope.schema.fieldproperty import FieldProperty |
38 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
39 |
38 |
40 from pyams_content import _ |
39 from pyams_content import _ |
41 |
40 |
42 |
41 |
43 # |
42 # |
44 # Frame paragraph |
43 # Frame paragraph |
45 # |
44 # |
46 |
45 |
47 @implementer(IFrameParagraph, IIllustrationTarget, IExtFileContainerTarget, ILinkContainerTarget) |
46 @implementer(IFrameParagraph, IIllustrationTarget, IExtFileContainerTarget, ILinkContainerTarget) |
48 class FrameParagraph(RenderedContentMixin, BaseParagraph): |
47 @factory_config(provided=IFrameParagraph) |
|
48 class FrameParagraph(BaseParagraph): |
49 """Framed text paragraph""" |
49 """Framed text paragraph""" |
50 |
50 |
51 icon_class = 'fa-list-alt' |
51 icon_class = 'fa-list-alt' |
52 icon_hint = _("Framed text") |
52 icon_hint = _("Framed text") |
53 |
53 |
89 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
89 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
90 return output |
90 return output |
91 |
91 |
92 |
92 |
93 @vocabulary_config(name=FRAME_PARAGRAPH_RENDERERS) |
93 @vocabulary_config(name=FRAME_PARAGRAPH_RENDERERS) |
94 class FrameParagraphRendererVocabulary(SimpleVocabulary): |
94 class FrameParagraphRendererVocabulary(RenderersVocabulary): |
95 """Framed text paragraph renderers vocabulary""" |
95 """Framed text paragraph renderers vocabulary""" |
96 |
96 |
97 def __init__(self, context=None): |
97 content_interface = IFrameParagraph |
98 request = check_request() |
|
99 translate = request.localizer.translate |
|
100 registry = request.registry |
|
101 if not IFrameParagraph.providedBy(context): |
|
102 context = FrameParagraph() |
|
103 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
104 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer), |
|
105 key=lambda x: x[1].weight)] |
|
106 super(FrameParagraphRendererVocabulary, self).__init__(terms) |
|