src/pyams_default_theme/shared/common/__init__.py
changeset 531 d900ecb7c6f6
parent 506 0417bf1a6fa4
equal deleted inserted replaced
530:094d9b11bc83 531:d900ecb7c6f6
    13 from zope.interface import Interface
    13 from zope.interface import Interface
    14 
    14 
    15 from pyams_content.interfaces import IBaseContent
    15 from pyams_content.interfaces import IBaseContent
    16 from pyams_content.shared.common.interfaces import IWfSharedContent
    16 from pyams_content.shared.common.interfaces import IWfSharedContent
    17 from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
    17 from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
    18 from pyams_default_theme.interfaces import IContentDate, IContentTag, IContentTitle
    18 from pyams_default_theme.interfaces import IContentDate, IContentHeader, IContentTag, \
       
    19     IContentTitle
    19 from pyams_i18n.interfaces import II18n
    20 from pyams_i18n.interfaces import II18n
       
    21 from pyams_sequence.interfaces import IInternalReference
    20 from pyams_skin.interfaces.metas import IHTMLContentMetas
    22 from pyams_skin.interfaces.metas import IHTMLContentMetas
    21 from pyams_skin.layer import IPyAMSUserLayer
    23 from pyams_skin.layer import IPyAMSUserLayer
    22 from pyams_skin.metas import ContentMeta, HTMLTagMeta
    24 from pyams_skin.metas import ContentMeta, HTMLTagMeta
    23 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
    25 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
    24 from pyams_utils.date import SH_DATE_FORMAT, format_date
    26 from pyams_utils.date import SH_DATE_FORMAT, format_date
    57             data_type = content.get_data_type()
    59             data_type = content.get_data_type()
    58             if data_type is not None:
    60             if data_type is not None:
    59                 return data_type.name
    61                 return data_type.name
    60 
    62 
    61 
    63 
    62 @adapter_config(name='title', context=(IWfSharedContent, IPyAMSUserLayer, Interface),
    64 @adapter_config(name='title',
       
    65                 context=(IWfSharedContent, IPyAMSUserLayer, Interface),
    63                 provides=IHTMLContentMetas)
    66                 provides=IHTMLContentMetas)
    64 class SharedContentTitleMetasAdapter(ContextRequestViewAdapter):
    67 class SharedContentTitleMetasAdapter(ContextRequestViewAdapter):
    65     """Title metas adapter"""
    68     """Title metas adapter"""
    66 
    69 
    67     order = 1
    70     order = 1
    75             description = i18n.query_attribute('header', request=self.request)
    78             description = i18n.query_attribute('header', request=self.request)
    76         if description:
    79         if description:
    77             yield ContentMeta('description', description)
    80             yield ContentMeta('description', description)
    78 
    81 
    79 
    82 
    80 @adapter_config(context=(IBaseContent, IPyAMSUserLayer), provides=IContentTitle)
    83 @adapter_config(context=(IBaseContent, IPyAMSUserLayer),
       
    84                 provides=IContentTitle)
    81 def base_content_title_adapter(context, request):
    85 def base_content_title_adapter(context, request):
    82     """Base content title adapter"""
    86     """Base content title adapter"""
    83     return II18n(context).query_attribute('title', request=request)
    87     return II18n(context).query_attribute('title', request=request)
    84 
    88 
    85 
    89 
    86 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer), provides=IContentTag)
    90 @adapter_config(context=(IInternalReference, IPyAMSUserLayer),
       
    91                 provides=IContentTitle)
       
    92 def internal_link_content_title_adapter(context, request):
       
    93     """Internal link content title adapter"""
       
    94     registry = request.registry
       
    95     return registry.queryMultiAdapter((context.target, request), IContentTitle)
       
    96 
       
    97 
       
    98 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer),
       
    99                 provides=IContentHeader)
       
   100 def shared_content_header_adapter(context, request):
       
   101     """Default shared content header adapter"""
       
   102     return II18n(context).query_attribute('header', request=request)
       
   103 
       
   104 
       
   105 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer),
       
   106                 provides=IContentTag)
    87 def shared_content_tag_adapter(context, request):
   107 def shared_content_tag_adapter(context, request):
    88     """Default shared content tag adapter"""
   108     """Default shared content tag adapter"""
    89     translate = request.localizer.translate
   109     translate = request.localizer.translate
    90     return translate(context.content_name)
   110     return translate(context.content_name)
    91 
   111 
    92 
   112 
    93 @adapter_config(context=(IWfTypedSharedContent, IPyAMSUserLayer), provides=IContentTag)
   113 @adapter_config(context=(IWfTypedSharedContent, IPyAMSUserLayer),
       
   114                 provides=IContentTag)
    94 def typed_shared_content_tag_adapter(context, request):
   115 def typed_shared_content_tag_adapter(context, request):
    95     """Typed shared content tag adapter"""
   116     """Typed shared content tag adapter"""
    96     data_type = context.get_data_type()
   117     data_type = context.get_data_type()
    97     if (data_type is not None) and data_type.display_as_tag:
   118     if (data_type is not None) and data_type.display_as_tag:
    98         return II18n(data_type).query_attribute('label', request=request)
   119         return II18n(data_type).query_attribute('label', request=request)
   110         if context is None:
   131         if context is None:
   111             context = self.context
   132             context = self.context
   112         return self.request.registry.queryMultiAdapter((context, self.request), IContentTag)
   133         return self.request.registry.queryMultiAdapter((context, self.request), IContentTag)
   113 
   134 
   114 
   135 
   115 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer), provides=IContentDate)
   136 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer),
       
   137                 provides=IContentDate)
   116 def shared_content_date_adapter(context, request):
   138 def shared_content_date_adapter(context, request):
   117     """Default shared content date adapter"""
   139     """Default shared content date adapter"""
   118     publication_info = IWorkflowPublicationInfo(context, None)
   140     publication_info = IWorkflowPublicationInfo(context, None)
   119     if publication_info is not None:
   141     if publication_info is not None:
   120         return format_date(publication_info.visible_publication_date,
   142         return format_date(publication_info.visible_publication_date,