src/pyams_content/component/paragraph/pictogram.py
changeset 555 8e8a14452567
parent 501 3407e6940f6a
child 558 d9c6b1d7fefa
equal deleted inserted replaced
554:120ce09ade94 555:8e8a14452567
    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)