src/pyams_content/component/paragraph/header.py
changeset 555 8e8a14452567
parent 538 0bd011d47c0b
child 586 28445044f6e3
equal deleted inserted replaced
554:120ce09ade94 555:8e8a14452567
    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)