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, |