# HG changeset patch # User Thierry Florac # Date 1543226706 -3600 # Node ID bcee7f49b3ea0939c920990b89daf8f9a84db849 # Parent b6ff1877cb488c03454d9cfeed246a89006a4121 Updated default header settings diff -r b6ff1877cb48 -r bcee7f49b3ea src/pyams_default_theme/features/header/__init__.py --- a/src/pyams_default_theme/features/header/__init__.py Mon Nov 26 11:04:35 2018 +0100 +++ b/src/pyams_default_theme/features/header/__init__.py Mon Nov 26 11:05:06 2018 +0100 @@ -16,6 +16,7 @@ from zope.interface import implementer from zope.location import Location from zope.location.interfaces import ISublocations +from zope.schema.fieldproperty import FieldProperty from pyams_content.component.association.interfaces import ASSOCIATION_CONTAINER_KEY from pyams_content.features.header.interfaces import IHeaderSettings, IHeaderTarget @@ -62,8 +63,14 @@ class SimpleHeaderRendererSettings(Persistent, Location): """Simple header renderer settings""" + apply_on_root = FieldProperty(ISimpleHeaderRendererSettings['apply_on_root']) banner = FileProperty(ISimpleHeaderRendererSettings['banner']) logo = FileProperty(ISimpleHeaderRendererSettings['logo']) + search_target = FieldProperty(ISimpleHeaderRendererSettings['search_target']) + + @property + def can_apply_on_root(self): + return self.apply_on_root @property def menus(self): diff -r b6ff1877cb48 -r bcee7f49b3ea src/pyams_default_theme/features/header/interfaces.py --- a/src/pyams_default_theme/features/header/interfaces.py Mon Nov 26 11:04:35 2018 +0100 +++ b/src/pyams_default_theme/features/header/interfaces.py Mon Nov 26 11:05:06 2018 +0100 @@ -13,9 +13,11 @@ __docformat__ = 'restructuredtext' from zope.interface import Interface, Attribute +from zope.schema import Bool from pyams_content.features.header.interfaces import IHeaderRendererSettings from pyams_file.schema import ImageField +from pyams_sequence.schema import InternalReferenceField from pyams_default_theme import _ @@ -23,6 +25,12 @@ class ISimpleHeaderRendererSettings(IHeaderRendererSettings): """Simple header renderer settings""" + apply_on_root = Bool(title=_("Apply on root?"), + description=_("If 'no', header settings will not be applied on site root but only " + "on inner sites"), + required=True, + default=True) + banner = ImageField(title=_("Banner image"), description=_("Image displayed as header background"), required=False) @@ -31,6 +39,10 @@ description=_("Logo displayed in header"), required=False) + search_target = InternalReferenceField(title=_("Search form target"), + description=_("Site or folder handling site search"), + required=False) + tabs = Attribute("Top tabs list") menus = Attribute("Top tabs menus list") diff -r b6ff1877cb48 -r bcee7f49b3ea src/pyams_default_theme/features/header/skin/__init__.py --- a/src/pyams_default_theme/features/header/skin/__init__.py Mon Nov 26 11:04:35 2018 +0100 +++ b/src/pyams_default_theme/features/header/skin/__init__.py Mon Nov 26 11:05:06 2018 +0100 @@ -23,6 +23,7 @@ from pyams_content.features.header.interfaces import IHeaderRenderer, IHeaderRendererSettings, IHeaderSettings, \ IHeaderTarget from pyams_content.features.renderer.interfaces import HIDDEN_RENDERER_NAME +from pyams_content.root import ISiteRoot from pyams_default_theme.features.header import SimpleHeaderRendererSettings from pyams_default_theme.features.header.interfaces import ISimpleHeaderRendererSettings from pyams_default_theme.features.header.skin.interfaces import IHeaderClass @@ -30,6 +31,7 @@ from pyams_portal.interfaces import PREVIEW_MODE from pyams_portal.portlet import PORTLETS_CACHE_KEY, PORTLETS_CACHE_NAME, PORTLETS_CACHE_REGION from pyams_sequence.interfaces import IInternalReference +from pyams_sequence.reference import get_reference_target from pyams_skin.layer import IPyAMSLayer from pyams_template.template import template_config from pyams_utils.adapter import adapter_config @@ -81,7 +83,13 @@ request = self.request return request.registry.queryMultiAdapter((request.context, request), IHeaderClass, default='') + @property + def search_target(self): + return get_reference_target(self.settings.search_target, request=self.request) + def render(self): + if ISiteRoot.providedBy(self.request.context) and not self.settings.can_apply_on_root: + return '' preview_mode = self.request.annotations.get(PREVIEW_MODE, False) if preview_mode: return super(BaseHeaderRenderer, self).render() diff -r b6ff1877cb48 -r bcee7f49b3ea src/pyams_default_theme/features/header/skin/templates/simple-header.pt --- a/src/pyams_default_theme/features/header/skin/templates/simple-header.pt Mon Nov 26 11:04:35 2018 +0100 +++ b/src/pyams_default_theme/features/header/skin/templates/simple-header.pt Mon Nov 26 11:05:06 2018 +0100 @@ -20,7 +20,7 @@