# HG changeset patch # User Thierry Florac # Date 1592843509 -7200 # Node ID 0417bf1a6fa4072d9f24311409bf9a82ad0f108a # Parent f3f3e9792c10226a2f64a0d2b5a93d3394c63dae Updated Header and Title portlets diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/__init__.py --- a/src/pyams_default_theme/shared/common/__init__.py Mon Jun 22 18:30:36 2020 +0200 +++ b/src/pyams_default_theme/shared/common/__init__.py Mon Jun 22 18:31:49 2020 +0200 @@ -118,7 +118,7 @@ publication_info = IWorkflowPublicationInfo(context, None) if publication_info is not None: return format_date(publication_info.visible_publication_date, - format=SH_DATE_FORMAT, request=request) + format_string=SH_DATE_FORMAT, request=request) @adapter_config(name='pyams_date', diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/portlet/specificities.py --- a/src/pyams_default_theme/shared/common/portlet/specificities.py Mon Jun 22 18:30:36 2020 +0200 +++ b/src/pyams_default_theme/shared/common/portlet/specificities.py Mon Jun 22 18:31:49 2020 +0200 @@ -14,7 +14,8 @@ from zope.interface import Interface -from pyams_content.shared.common.portlet.interfaces import ISharedContentSpecificitiesPortletSettings +from pyams_content.shared.common.portlet.interfaces import \ + ISharedContentSpecificitiesPortletSettings from pyams_default_theme import _ from pyams_default_theme.shared.common.interfaces import ICustomContentSpecificitiesRenderer from pyams_portal.interfaces import IPortalContext, IPortletRenderer @@ -27,7 +28,8 @@ # Shared content specificities portlet renderer # -@adapter_config(context=(IPortalContext, IPyAMSLayer, Interface, ISharedContentSpecificitiesPortletSettings), +@adapter_config(context=(IPortalContext, IPyAMSLayer, Interface, + ISharedContentSpecificitiesPortletSettings), provides=IPortletRenderer) class SharedContentSpecificitiesPortletRenderer(PortletRenderer): """Shared content specificities portlet default renderer""" @@ -39,8 +41,8 @@ def update(self): super(SharedContentSpecificitiesPortletRenderer, self).update() registry = self.request.registry - self.renderer = renderer = registry.queryMultiAdapter((self.context, self.request, self.view), - ICustomContentSpecificitiesRenderer) + self.renderer = renderer = registry.queryMultiAdapter( + (self.context, self.request, self.view), ICustomContentSpecificitiesRenderer) if renderer is not None: renderer.update() diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/portlet/templates/head.pt --- a/src/pyams_default_theme/shared/common/portlet/templates/head.pt Mon Jun 22 18:30:36 2020 +0200 +++ b/src/pyams_default_theme/shared/common/portlet/templates/head.pt Mon Jun 22 18:31:49 2020 +0200 @@ -7,6 +7,11 @@

${structure:provider:pyams_content.title}

+
+ ${i18n:settings.publication_date_prefix} + ${structure:provider:pyams_content.publication_date} +
${structure:tales:html(header)}
diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/portlet/templates/publication-date.pt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_default_theme/shared/common/portlet/templates/publication-date.pt Mon Jun 22 18:31:49 2020 +0200 @@ -0,0 +1,1 @@ +${view.publication_date} \ No newline at end of file diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/portlet/templates/title-portlet.pt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_default_theme/shared/common/portlet/templates/title-portlet.pt Mon Jun 22 18:31:49 2020 +0200 @@ -0,0 +1,9 @@ + + ${view.title} +
+ + ${structure:provider:pyams_content.publication_date} +
+
diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/portlet/title.py --- a/src/pyams_default_theme/shared/common/portlet/title.py Mon Jun 22 18:30:36 2020 +0200 +++ b/src/pyams_default_theme/shared/common/portlet/title.py Mon Jun 22 18:31:49 2020 +0200 @@ -28,18 +28,20 @@ @contentprovider_config(name='pyams_content.title', layer=IPyAMSUserLayer, view=Interface) -@template_config(template='templates/title.pt', ) +@template_config(template='templates/title.pt') class SharedContentTitleProvider(ViewContentProvider): """Shared content title viewlet""" @property def title(self): - return self.request.registry.queryMultiAdapter((self.context, self.request), IContentTitle) + return self.request.registry.queryMultiAdapter((self.context, self.request), + IContentTitle) -@adapter_config(context=(IPortalContext, IPyAMSLayer, Interface, ISharedContentTitlePortletSettings), +@adapter_config(context=(IPortalContext, IPyAMSLayer, Interface, + ISharedContentTitlePortletSettings), provides=IPortletRenderer) -@template_config(template='templates/title.pt', layer=IPyAMSLayer) +@template_config(template='templates/title-portlet.pt', layer=IPyAMSLayer) class SharedContentTitlePortletRenderer(PortletRenderer): """Shared content title portlet renderer""" @@ -47,4 +49,5 @@ @property def title(self): - return self.request.registry.queryMultiAdapter((self.context, self.request), IContentTitle) + return self.request.registry.queryMultiAdapter((self.context, self.request), + IContentTitle) diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/portlet/workflow.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_default_theme/shared/common/portlet/workflow.py Mon Jun 22 18:31:49 2020 +0200 @@ -0,0 +1,43 @@ +# +# Copyright (c) 2015-2020 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + +from babel import Locale, UnknownLocaleError +from babel.dates import format_date +from zope.interface import Interface + +from pyams_i18n.interfaces import INegotiator +from pyams_skin.layer import IPyAMSUserLayer +from pyams_template.template import template_config +from pyams_utils.registry import get_utility +from pyams_viewlet.viewlet import ViewContentProvider, contentprovider_config +from pyams_workflow.interfaces import IWorkflowPublicationInfo + + +@contentprovider_config(name='pyams_content.publication_date', layer=IPyAMSUserLayer, + view=Interface) +@template_config(template='templates/publication-date.pt') +class SharedContentPublicationDataProvider(ViewContentProvider): + """Shared content publication date viewlet""" + + @property + def publication_date(self): + info = IWorkflowPublicationInfo(self.context, None) + if info is None: + return '' + try: + locale = Locale(self.request.locale_name) + except UnknownLocaleError: + negotiator = get_utility(INegotiator) + locale = Locale(negotiator.server_language) + return format_date(info.visible_publication_date, format='long', locale=locale) diff -r f3f3e9792c10 -r 0417bf1a6fa4 src/pyams_default_theme/shared/common/specificities.py --- a/src/pyams_default_theme/shared/common/specificities.py Mon Jun 22 18:30:36 2020 +0200 +++ b/src/pyams_default_theme/shared/common/specificities.py Mon Jun 22 18:31:49 2020 +0200 @@ -14,9 +14,11 @@ from pyams_content.features.renderer.interfaces import IContentRenderer from pyams_content.shared.common import IWfSharedContent -from pyams_content.shared.common.interfaces.specificities import ISharedContentSpecificitiesParagraph +from pyams_content.shared.common.interfaces.specificities import \ + ISharedContentSpecificitiesParagraph from pyams_default_theme.features.renderer import BaseContentRenderer -from pyams_default_theme.shared.common.interfaces import ICustomContentSpecificitiesParagraphRenderer +from pyams_default_theme.shared.common.interfaces import \ + ICustomContentSpecificitiesParagraphRenderer from pyams_skin.layer import IPyAMSLayer from pyams_template.template import template_config from pyams_utils.adapter import adapter_config @@ -29,7 +31,8 @@ # Shared content specificities paragraph renderer # -@adapter_config(name='default', context=(ISharedContentSpecificitiesParagraph, IPyAMSLayer), provides=IContentRenderer) +@adapter_config(name='default', context=(ISharedContentSpecificitiesParagraph, IPyAMSLayer), + provides=IContentRenderer) @template_config(template='templates/specificities-paragraph.pt', layer=IPyAMSLayer) class SharedContentSpecificitiesParagraphRenderer(BaseContentRenderer): """Default shared content specificities paragraph renderer""" @@ -43,10 +46,11 @@ context = get_parent(self.context, IWfSharedContent) if context is not None: registry = self.request.registry - self.renderer = renderer = registry.queryMultiAdapter((context, self.request, self), - ICustomContentSpecificitiesParagraphRenderer) + self.renderer = renderer = registry.queryMultiAdapter( + (context, self.request, self), ICustomContentSpecificitiesParagraphRenderer) if renderer is not None: renderer.update() def render(self): - return '' if self.renderer is None else super(SharedContentSpecificitiesParagraphRenderer, self).render() + return '' if self.renderer is None else \ + super(SharedContentSpecificitiesParagraphRenderer, self).render()