# HG changeset patch # User Thierry Florac # Date 1479201756 -3600 # Node ID 3d81c3b94605e860039ec7bfb461bd9d6a24fef3 # Parent 3f879876f7a68f87477881604f3e28d6e27fcb78 Handle responsive images diff -r 3f879876f7a6 -r 3d81c3b94605 src/pyams_portal/portlets/image/__init__.py --- a/src/pyams_portal/portlets/image/__init__.py Tue Oct 11 16:06:12 2016 +0200 +++ b/src/pyams_portal/portlets/image/__init__.py Tue Nov 15 10:22:36 2016 +0100 @@ -17,7 +17,8 @@ # import interfaces from .interfaces import IImagePortletSettings -from pyams_portal.interfaces import IPortalContext, IPortletRenderer +from pyams_file.interfaces import IResponsiveImage, DELETED_FILE +from pyams_portal.interfaces import IPortalContext, IPortletRenderer, IPortalPage, IPortalTemplateConfiguration from pyams_skin.layer import IPyAMSLayer from pyams_utils.interfaces import PUBLIC_PERMISSION @@ -26,7 +27,7 @@ from pyams_portal.portlet import portlet_config, Portlet, PortletSettings, PortletRenderer from pyams_template.template import template_config from pyams_utils.adapter import adapter_config -from zope.interface import implementer, Interface +from zope.interface import implementer, Interface, alsoProvides from pyams_portal import _ @@ -38,7 +39,17 @@ class ImagePortletSettings(PortletSettings): """Image portlet settings""" - image = FileProperty(IImagePortletSettings['image']) + _image = FileProperty(IImagePortletSettings['image']) + + @property + def image(self): + return self._image + + @image.setter + def image(self, value): + self._image = value + if (value is not None) and (value is not DELETED_FILE): + alsoProvides(self._image, IResponsiveImage) @portlet_config(permission=PUBLIC_PERMISSION) @@ -58,3 +69,10 @@ @template_config(template='image.pt', layer=IPyAMSLayer) class ImagePortletRenderer(PortletRenderer): """Image portlet renderer""" + + @property + def slot_configuration(self): + template = IPortalPage(self.context).template + config = IPortalTemplateConfiguration(template) + slot_id, slot_name = config.get_portlet_slot(self.settings.configuration.portlet_id) + return config.get_slot_configuration(slot_name) diff -r 3f879876f7a6 -r 3d81c3b94605 src/pyams_portal/portlets/image/image.pt --- a/src/pyams_portal/portlets/image/image.pt Tue Oct 11 16:06:12 2016 +0200 +++ b/src/pyams_portal/portlets/image/image.pt Tue Nov 15 10:22:36 2016 +0100 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + +