21 from pyams_content.component.paragraph import IParagraphFactory |
21 from pyams_content.component.paragraph import IParagraphFactory |
22 from pyams_content.component.paragraph.interfaces.pictogram import IPictogramItem, IPictogramContainerTarget, \ |
22 from pyams_content.component.paragraph.interfaces.pictogram import IPictogramItem, IPictogramContainerTarget, \ |
23 IPictogramContainer, PICTOGRAM_CONTAINER_KEY, IPictogramParagraph, PICTOGRAM_PARAGRAPH_TYPE, \ |
23 IPictogramContainer, PICTOGRAM_CONTAINER_KEY, IPictogramParagraph, PICTOGRAM_PARAGRAPH_TYPE, \ |
24 PICTOGRAM_PARAGRAPH_RENDERERS |
24 PICTOGRAM_PARAGRAPH_RENDERERS |
25 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE |
25 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE |
26 from pyams_content.features.renderer.interfaces import IContentRenderer |
|
27 from pyams_content.reference.pictograms.interfaces import IPictogramTable |
26 from pyams_content.reference.pictograms.interfaces import IPictogramTable |
28 from pyams_form.interfaces.form import IFormContextPermissionChecker |
27 from pyams_form.interfaces.form import IFormContextPermissionChecker |
29 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
28 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator |
30 from zope.annotation import IAnnotations |
29 from zope.annotation import IAnnotations |
31 from zope.lifecycleevent import IObjectAddedEvent, ObjectModifiedEvent, ObjectCreatedEvent |
30 from zope.lifecycleevent import IObjectAddedEvent, ObjectModifiedEvent, ObjectCreatedEvent |
34 |
33 |
35 # import packages |
34 # import packages |
36 from pyams_catalog.utils import index_object |
35 from pyams_catalog.utils import index_object |
37 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker |
36 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker |
38 from pyams_content.features.checker import BaseContentChecker |
37 from pyams_content.features.checker import BaseContentChecker |
39 from pyams_content.features.renderer import RenderedContentMixin |
38 from pyams_content.features.renderer import RenderersVocabulary |
40 from pyams_utils.adapter import adapter_config, ContextAdapter |
39 from pyams_utils.adapter import adapter_config, ContextAdapter |
|
40 from pyams_utils.factory import factory_config |
41 from pyams_utils.registry import query_utility, get_current_registry, get_utility, utility_config |
41 from pyams_utils.registry import query_utility, get_current_registry, get_utility, utility_config |
42 from pyams_utils.request import check_request |
42 from pyams_utils.request import check_request |
43 from pyams_utils.traversing import get_parent |
43 from pyams_utils.traversing import get_parent |
44 from pyams_utils.vocabulary import vocabulary_config |
44 from pyams_utils.vocabulary import vocabulary_config |
45 from pyams_utils.zodb import volatile_property |
45 from pyams_utils.zodb import volatile_property |
47 from zope.container.contained import Contained |
47 from zope.container.contained import Contained |
48 from zope.container.ordered import OrderedContainer |
48 from zope.container.ordered import OrderedContainer |
49 from zope.interface import implementer |
49 from zope.interface import implementer |
50 from zope.location import locate |
50 from zope.location import locate |
51 from zope.schema.fieldproperty import FieldProperty |
51 from zope.schema.fieldproperty import FieldProperty |
52 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
53 |
52 |
54 from pyams_content import _ |
53 from pyams_content import _ |
55 |
54 |
56 |
55 |
57 # |
56 # |
210 output.append(checker.get_check_output(request)) |
209 output.append(checker.get_check_output(request)) |
211 return output |
210 return output |
212 |
211 |
213 |
212 |
214 @implementer(IPictogramParagraph, IIllustrationTarget) |
213 @implementer(IPictogramParagraph, IIllustrationTarget) |
215 class PictogramParagraph(RenderedContentMixin, BaseParagraph): |
214 @factory_config(provided=IPictogramParagraph) |
|
215 class PictogramParagraph(BaseParagraph): |
216 """Pictograms paragraph""" |
216 """Pictograms paragraph""" |
217 |
217 |
218 icon_class = 'fa-linode' |
218 icon_class = 'fa-linode' |
219 icon_hint = _("Pictograms") |
219 icon_hint = _("Pictograms") |
220 |
220 |
260 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
260 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
261 return output |
261 return output |
262 |
262 |
263 |
263 |
264 @vocabulary_config(name=PICTOGRAM_PARAGRAPH_RENDERERS) |
264 @vocabulary_config(name=PICTOGRAM_PARAGRAPH_RENDERERS) |
265 class PictogramParagraphRendererVocabulary(SimpleVocabulary): |
265 class PictogramParagraphRendererVocabulary(RenderersVocabulary): |
266 """Pictograms paragraph renderers vocabulary""" |
266 """Pictograms paragraph renderers vocabulary""" |
267 |
267 |
268 def __init__(self, context=None): |
268 content_interface = IPictogramParagraph |
269 request = check_request() |
|
270 translate = request.localizer.translate |
|
271 registry = request.registry |
|
272 if not IPictogramParagraph.providedBy(context): |
|
273 context = PictogramParagraph() |
|
274 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
275 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer), |
|
276 key=lambda x: x[1].weight)] |
|
277 super(PictogramParagraphRendererVocabulary, self).__init__(terms) |
|