32 |
32 |
33 # import interfaces |
33 # import interfaces |
34 from pyams_catalog.utils import index_object |
34 from pyams_catalog.utils import index_object |
35 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker |
35 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker |
36 from pyams_content.features.checker import BaseContentChecker |
36 from pyams_content.features.checker import BaseContentChecker |
37 from pyams_content.features.renderer import RenderedContentMixin, IContentRenderer |
37 from pyams_content.features.renderer import RenderersVocabulary |
38 from pyams_utils.adapter import adapter_config, ContextAdapter |
38 from pyams_utils.adapter import adapter_config, ContextAdapter |
|
39 from pyams_utils.factory import factory_config |
39 from pyams_utils.registry import get_current_registry, get_utility, utility_config |
40 from pyams_utils.registry import get_current_registry, get_utility, utility_config |
40 from pyams_utils.request import check_request |
41 from pyams_utils.request import check_request |
41 from pyams_utils.traversing import get_parent |
42 from pyams_utils.traversing import get_parent |
42 from pyams_utils.vocabulary import vocabulary_config |
43 from pyams_utils.vocabulary import vocabulary_config |
43 from pyramid.events import subscriber |
44 from pyramid.events import subscriber |
45 from zope.container.ordered import OrderedContainer |
46 from zope.container.ordered import OrderedContainer |
46 from zope.interface import implementer |
47 from zope.interface import implementer |
47 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent |
48 from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent |
48 from zope.location import locate |
49 from zope.location import locate |
49 from zope.schema.fieldproperty import FieldProperty |
50 from zope.schema.fieldproperty import FieldProperty |
50 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
|
51 |
51 |
52 from pyams_content import _ |
52 from pyams_content import _ |
53 |
53 |
54 |
54 |
55 # |
55 # |
219 output.append(checker.get_check_output(request)) |
219 output.append(checker.get_check_output(request)) |
220 return output |
220 return output |
221 |
221 |
222 |
222 |
223 @implementer(IMilestoneParagraph) |
223 @implementer(IMilestoneParagraph) |
224 class MilestoneParagraph(RenderedContentMixin, BaseParagraph): |
224 @factory_config(provided=IMilestoneParagraph) |
|
225 class MilestoneParagraph(BaseParagraph): |
225 """Milestones paragraph""" |
226 """Milestones paragraph""" |
226 |
227 |
227 icon_class = 'fa-arrows-h' |
228 icon_class = 'fa-arrows-h' |
228 icon_hint = _("Milestones") |
229 icon_hint = _("Milestones") |
229 |
230 |
269 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
270 output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) |
270 return output |
271 return output |
271 |
272 |
272 |
273 |
273 @vocabulary_config(name=MILESTONE_PARAGRAPH_RENDERERS) |
274 @vocabulary_config(name=MILESTONE_PARAGRAPH_RENDERERS) |
274 class MilestoneParagraphRendererVocabulary(SimpleVocabulary): |
275 class MilestoneParagraphRendererVocabulary(RenderersVocabulary): |
275 """Milestones paragraph renderers vocabulary""" |
276 """Milestones paragraph renderers vocabulary""" |
276 |
277 |
277 def __init__(self, context=None): |
278 content_interface = IMilestoneParagraph |
278 request = check_request() |
|
279 translate = request.localizer.translate |
|
280 registry = request.registry |
|
281 if not IMilestoneParagraph.providedBy(context): |
|
282 context = MilestoneParagraph() |
|
283 terms = [SimpleTerm(name, title=translate(adapter.label)) |
|
284 for name, adapter in sorted(registry.getAdapters((context, request), IContentRenderer), |
|
285 key=lambda x: x[1].weight)] |
|
286 super(MilestoneParagraphRendererVocabulary, self).__init__(terms) |
|