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 |
12 |
13 __docformat__ = 'restructuredtext' |
13 from pyramid.decorator import reify |
14 |
|
15 from zope.interface import Interface |
14 from zope.interface import Interface |
16 |
15 |
|
16 from pyams_content.component.theme import ICollectionsInfo |
|
17 from pyams_content.features.search.interfaces import ISearchManagerInfo |
17 from pyams_content.shared.resource import IAgeRange, IResourceInfo, IWfResource |
18 from pyams_content.shared.resource import IAgeRange, IResourceInfo, IWfResource |
18 from pyams_default_theme import lightbox |
19 from pyams_default_theme import lightbox |
19 from pyams_default_theme.features.search.portlet import ISearchResultHeader, ISearchResultRenderer, \ |
20 from pyams_default_theme.features.search.portlet import ISearchResultHeader, \ |
20 WfSharedContentSearchResultRenderer |
21 ISearchResultRenderer, WfSharedContentSearchResultRenderer |
21 from pyams_default_theme.interfaces import ISearchResultsView |
22 from pyams_default_theme.interfaces import ISearchResultsView |
22 from pyams_default_theme.shared.common.interfaces import ICustomContentSpecificitiesParagraphRenderer, \ |
23 from pyams_default_theme.shared.common.interfaces import \ |
23 ICustomContentSpecificitiesRenderer |
24 ICustomContentSpecificitiesParagraphRenderer, ICustomContentSpecificitiesRenderer |
24 from pyams_i18n.interfaces import II18n |
25 from pyams_i18n.interfaces import II18n |
25 from pyams_skin.layer import IPyAMSUserLayer |
26 from pyams_skin.layer import IPyAMSUserLayer |
26 from pyams_template.template import template_config |
27 from pyams_template.template import template_config |
27 from pyams_utils.adapter import adapter_config |
28 from pyams_utils.adapter import adapter_config |
28 from pyams_utils.text import text_to_html |
29 from pyams_utils.text import text_to_html |
29 from pyams_viewlet.viewlet import ViewContentProvider |
30 from pyams_viewlet.viewlet import ViewContentProvider |
|
31 |
|
32 |
|
33 __docformat__ = 'restructuredtext' |
30 |
34 |
31 from pyams_default_theme import _ |
35 from pyams_default_theme import _ |
32 |
36 |
33 |
37 |
34 @adapter_config(context=(IWfResource, IPyAMSUserLayer, Interface), |
38 @adapter_config(context=(IWfResource, IPyAMSUserLayer, Interface), |
42 resources = (lightbox,) |
46 resources = (lightbox,) |
43 |
47 |
44 @property |
48 @property |
45 def resource_info(self): |
49 def resource_info(self): |
46 return IResourceInfo(self.context) |
50 return IResourceInfo(self.context) |
|
51 |
|
52 @property |
|
53 def collections(self): |
|
54 collections_info = ICollectionsInfo(self.context, None) |
|
55 if collections_info is not None: |
|
56 collections = collections_info.collections or () |
|
57 yield from sorted(collections, key=lambda x: (x.order or 999, x.alt or x.label)) |
|
58 |
|
59 @reify |
|
60 def search_target(self): |
|
61 search_info = ISearchManagerInfo(self.request.root, None) |
|
62 if search_info is not None: |
|
63 return search_info.collections_target |
47 |
64 |
48 def get_age_range(self, value: IAgeRange): |
65 def get_age_range(self, value: IAgeRange): |
49 translate = self.request.localizer.translate |
66 translate = self.request.localizer.translate |
50 if value.min_value and value.max_value: |
67 if value.min_value and value.max_value: |
51 result = _("from {0.min_value} to {0.max_value}") |
68 result = _("from {0.min_value} to {0.max_value}") |