23 from pyams_content.features.renderer.interfaces import HIDDEN_RENDERER_NAME |
23 from pyams_content.features.renderer.interfaces import HIDDEN_RENDERER_NAME |
24 from pyams_content.root import ISiteRoot |
24 from pyams_content.root import ISiteRoot |
25 from pyams_default_theme.features.header import SimpleHeaderRendererSettings |
25 from pyams_default_theme.features.header import SimpleHeaderRendererSettings |
26 from pyams_default_theme.features.header.interfaces import ISimpleHeaderRendererSettings, \ |
26 from pyams_default_theme.features.header.interfaces import ISimpleHeaderRendererSettings, \ |
27 PYAMS_HEADER_MAIN_CLASS_KEY, PYAMS_HEADER_NAVIGATION_INNER_CLASS_KEY, \ |
27 PYAMS_HEADER_MAIN_CLASS_KEY, PYAMS_HEADER_NAVIGATION_INNER_CLASS_KEY, \ |
28 PYAMS_HEADER_NAVIGATION_MAIN_CLASS_KEY, PYAMS_HEADER_TITLE_INNER_CLASS_KEY, \ |
28 PYAMS_HEADER_NAVIGATION_MAIN_CLASS_KEY, PYAMS_HEADER_TEMPLATE_NAME_KEY, \ |
|
29 PYAMS_HEADER_TITLE_INNER_CLASS_KEY, \ |
29 PYAMS_HEADER_TITLE_MAIN_CLASS_KEY |
30 PYAMS_HEADER_TITLE_MAIN_CLASS_KEY |
30 from pyams_default_theme.features.header.skin.interfaces import IHeaderClass, \ |
31 from pyams_default_theme.features.header.skin.interfaces import IHeaderClass, \ |
31 IInnerNavigationClass, IInnerTitleClass, INavigationClass, ITitleClass |
32 IInnerNavigationClass, IInnerTitleClass, INavigationClass, ITitleClass |
32 from pyams_default_theme.features.renderer import BaseContentRenderer |
33 from pyams_default_theme.features.renderer import BaseContentRenderer |
33 from pyams_portal.interfaces import PREVIEW_MODE |
34 from pyams_portal.interfaces import PREVIEW_MODE |
34 from pyams_portal.portlet import PORTLETS_CACHE_KEY, PORTLETS_CACHE_NAME, PORTLETS_CACHE_REGION |
35 from pyams_portal.portlet import PORTLETS_CACHE_KEY, PORTLETS_CACHE_NAME, PORTLETS_CACHE_REGION |
35 from pyams_sequence.interfaces import IInternalReference |
36 from pyams_sequence.interfaces import IInternalReference |
36 from pyams_sequence.reference import get_reference_target |
37 from pyams_sequence.reference import get_reference_target |
37 from pyams_skin.layer import IPyAMSLayer |
38 from pyams_skin.layer import IPyAMSLayer |
38 from pyams_template.template import template_config |
39 from pyams_template.template import get_view_template, template_config |
39 from pyams_utils.adapter import adapter_config |
40 from pyams_utils.adapter import adapter_config |
40 from pyams_utils.interfaces import ICacheKeyValue |
41 from pyams_utils.interfaces import ICacheKeyValue |
41 from pyams_utils.traversing import get_parent |
42 from pyams_utils.traversing import get_parent |
42 |
43 |
43 |
44 |
131 |
132 |
132 @property |
133 @property |
133 def search_target(self): |
134 def search_target(self): |
134 return get_reference_target(self.settings.search_target, request=self.request) |
135 return get_reference_target(self.settings.search_target, request=self.request) |
135 |
136 |
|
137 @property |
|
138 def template_name(self): |
|
139 return self.request.annotations.get(PYAMS_HEADER_TEMPLATE_NAME_KEY, '') |
|
140 |
|
141 @property |
|
142 def template(self): |
|
143 template = get_view_template(name=self.template_name) |
|
144 return template(self) |
|
145 |
136 def render(self): |
146 def render(self): |
137 request = self.request |
147 request = self.request |
138 context = request.context |
148 context = request.context |
139 # root condition applies only when not displaying a shared content |
149 # root condition applies only when not displaying a shared content |
140 if ISiteRoot.providedBy(context) and \ |
150 if ISiteRoot.providedBy(context) and \ |
141 not self.settings.can_apply_on_root: |
151 not self.settings.can_apply_on_root: |
142 return '' |
152 return '' |
143 # don't use cache in preview mode |
153 # don't use cache in preview mode |
144 preview_mode = request.annotations.get(PREVIEW_MODE, False) |
154 preview_mode = request.annotations.get(PREVIEW_MODE, False) |
145 if preview_mode: |
155 if preview_mode: |
146 return super(BaseHeaderRenderer, self).render() |
156 return self.template |
147 else: |
157 else: |
148 portlets_cache = get_cache(PORTLETS_CACHE_REGION, PORTLETS_CACHE_NAME) |
158 portlets_cache = get_cache(PORTLETS_CACHE_REGION, PORTLETS_CACHE_NAME) |
149 cache_key = self.cache_key |
159 cache_key = self.cache_key |
150 if context is not self.context: # display shared content |
160 if context is not self.context: # display shared content |
151 cache_key = '{0}::shared'.format(cache_key) |
161 cache_key = '{0}::shared'.format(cache_key) |
152 try: |
162 try: |
153 result = portlets_cache.get_value(cache_key) |
163 result = portlets_cache.get_value(cache_key) |
154 logger.debug("Retrieving header content from cache key {0}".format(cache_key)) |
164 logger.debug("Retrieving header content from cache key {0}".format(cache_key)) |
155 except KeyError: |
165 except KeyError: |
156 result = super(BaseHeaderRenderer, self).render() |
166 result = self.template |
157 portlets_cache.set_value(cache_key, result) |
167 portlets_cache.set_value(cache_key, result) |
158 logger.debug("Storing header content to cache key {0}".format(cache_key)) |
168 logger.debug("Storing header content to cache key {0}".format(cache_key)) |
159 return result |
169 return result |
160 |
170 |
161 |
171 |