# HG changeset patch # User Thierry Florac # Date 1548773619 -3600 # Node ID 49974ce9a976e2ff03295dc1e5204d549f256a61 # Parent f08f5db5d35044bb2dd1c9c0f3c8f378bd1c1dc7 Replaced icons from admin layout with HTML metas adapter diff -r f08f5db5d350 -r 49974ce9a976 src/pyams_zmi/interfaces/templates/admin-layout.pt --- a/src/pyams_zmi/interfaces/templates/admin-layout.pt Fri Jan 18 15:36:12 2019 +0100 +++ b/src/pyams_zmi/interfaces/templates/admin-layout.pt Tue Jan 29 15:53:39 2019 +0100 @@ -1,46 +1,14 @@ - + anonymous request.principal.id == '__none__';"> - - - - - - - - - - - - - - - - - - + + + - - - - - diff -r f08f5db5d350 -r 49974ce9a976 src/pyams_zmi/metas.py --- a/src/pyams_zmi/metas.py Fri Jan 18 15:36:12 2019 +0100 +++ b/src/pyams_zmi/metas.py Tue Jan 29 15:53:39 2019 +0100 @@ -12,20 +12,20 @@ __docformat__ = 'restructuredtext' +from datetime import datetime -# import standard library +from zope.dublincore.interfaces import IZopeDublinCore +from zope.interface import Interface -# import interfaces from pyams_skin.interfaces.configuration import IBackOfficeConfiguration from pyams_skin.interfaces.metas import IHTMLContentMetas +from pyams_skin.metas import HTMLTagMeta, LinkMeta +from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config from pyams_utils.interfaces.site import ISiteRoot +from pyams_utils.timezone import tztime +from pyams_utils.url import absolute_url from pyams_zmi.layer import IAdminLayer -# import packages -from pyams_skin.metas import HTMLTagMeta -from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter -from zope.interface import Interface - @adapter_config(name='title', context=(Interface, IAdminLayer, Interface), provides=IHTMLContentMetas) @adapter_config(name='title', context=(ISiteRoot, IAdminLayer, Interface), provides=IHTMLContentMetas) @@ -38,3 +38,32 @@ config = IBackOfficeConfiguration(self.request.root) yield HTMLTagMeta('title', config.title, **{'data-ams-title-prefix': config.get_title_prefix(self.request)}) + + +@adapter_config(name='icon', context=(Interface, IAdminLayer, Interface), provides=IHTMLContentMetas) +class IconMetasAdapter(ContextRequestViewAdapter): + """Icon metas adapter""" + + order = 20 + + def get_metas(self): + config = IBackOfficeConfiguration(self.request.root) + if (config is not None) and (config.icon is not None): + icon = config.icon + icon_url = absolute_url(icon, self.request) + icon_size = icon.get_image_size()[0] + dc = IZopeDublinCore(icon) + timestamp = datetime.timestamp(tztime(dc.modified)) + for size in (180, 144, 114, 72, 32, 16): + if icon_size >= size: + yield LinkMeta('apple-touch-icon', + type=icon.content_type, + href='{}/++thumb++{}x{}?_={}'.format(icon_url, size, size, timestamp), + sizes='{0}x{0}'.format(size)) + for size in (128, 124, 32): + if icon_size >= size: + yield LinkMeta('icon', + type=icon.content_type, + href='{}/++thumb++{}x{}?_={}'.format(icon_url, size, size, timestamp), + sizes='{0}x{0}'.format(size)) + yield LinkMeta('shortcut-icon', type=icon.content_type, href=icon_url)