7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 from pyams_content.profile.interfaces import IAdminProfile |
|
13 |
12 |
14 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
15 |
14 |
16 |
15 |
17 # import standard library |
16 # import standard library |
18 |
17 |
19 # import interfaces |
18 # import interfaces |
|
19 from pyams_content.profile.interfaces import IAdminProfile |
20 from pyams_content.shared.common.interfaces import IWfSharedContent, ISharedTool |
20 from pyams_content.shared.common.interfaces import IWfSharedContent, ISharedTool |
21 from pyams_form.interfaces.form import IInnerTabForm |
21 from pyams_form.interfaces.form import IInnerTabForm |
22 from pyams_i18n.interfaces import II18n |
22 from pyams_i18n.interfaces import II18n |
23 from pyams_security.interfaces import ISecurityManager |
23 from pyams_security.interfaces import ISecurityManager |
24 from pyams_sequence.interfaces import ISequentialIntIds, ISequentialIdInfo |
24 from pyams_sequence.interfaces import ISequentialIntIds, ISequentialIdInfo |
|
25 from pyams_skin.interfaces import IContextTitlePrefix |
25 from pyams_skin.layer import IPyAMSLayer |
26 from pyams_skin.layer import IPyAMSLayer |
26 from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowStateLabel, IWorkflowVersions |
27 from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowStateLabel, IWorkflowVersions |
27 |
28 |
28 # import packages |
29 # import packages |
|
30 from pyams_skin.site import ContextTitlePrefixAdapter |
29 from pyams_template.template import template_config |
31 from pyams_template.template import template_config |
|
32 from pyams_utils.adapter import adapter_config |
30 from pyams_utils.date import format_datetime |
33 from pyams_utils.date import format_datetime |
31 from pyams_utils.registry import get_utility |
34 from pyams_utils.registry import get_utility |
32 from pyams_utils.traversing import get_parent |
35 from pyams_utils.traversing import get_parent |
33 from pyams_utils.url import absolute_url |
36 from pyams_utils.url import absolute_url |
34 from pyams_viewlet.viewlet import contentprovider_config |
37 from pyams_viewlet.viewlet import contentprovider_config |
35 from pyramid.decorator import reify |
38 from pyramid.decorator import reify |
36 from zope.interface import Interface |
39 from zope.interface import Interface |
37 |
40 |
38 from pyams_content import _ |
41 from pyams_content import _ |
|
42 |
|
43 |
|
44 @adapter_config(context=(IWfSharedContent, IPyAMSLayer), provides=IContextTitlePrefix) |
|
45 class SharedContentTitlePrefixAdapter(ContextTitlePrefixAdapter): |
|
46 """Shared content title prefix adapter""" |
|
47 |
|
48 @property |
|
49 def prefix(self): |
|
50 result = super(SharedContentTitlePrefixAdapter, self).prefix |
|
51 title = II18n(self.context).query_attribute('short_name', request=self.request) |
|
52 if result and title: |
|
53 return '{result} > {title}'.format(**locals()) |
|
54 else: |
|
55 return result or title |
39 |
56 |
40 |
57 |
41 @contentprovider_config(name='content_header', context=IWfSharedContent, view=Interface, layer=IPyAMSLayer) |
58 @contentprovider_config(name='content_header', context=IWfSharedContent, view=Interface, layer=IPyAMSLayer) |
42 @template_config(template='templates/header.pt', layer=IPyAMSLayer) |
59 @template_config(template='templates/header.pt', layer=IPyAMSLayer) |
43 class SharedContentHeaderContentProvider(object): |
60 class SharedContentHeaderContentProvider(object): |