# HG changeset patch # User tflorac@xsup98-004.onf.fr # Date 1517991723 -3600 # Node ID 8fc21a7ef206a1c659ac7f3d34515a24aa35be10 # Parent 68f6464a97ea2ee60667b4e7d743411b08ea0f09 Converted images galleries to medias galleries, allowing any media diff -r 68f6464a97ea -r 8fc21a7ef206 src/pyams_content/component/gallery/interfaces/__init__.py --- a/src/pyams_content/component/gallery/interfaces/__init__.py Wed Feb 07 09:20:50 2018 +0100 +++ b/src/pyams_content/component/gallery/interfaces/__init__.py Wed Feb 07 09:22:03 2018 +0100 @@ -21,7 +21,7 @@ from zope.contentprovider.interfaces import IContentProvider # import packages -from pyams_file.schema import FileField, ImageField +from pyams_file.schema import MediaField, AudioField from pyams_i18n.schema import I18nTextLineField, I18nTextField from zope.annotation.interfaces import IAttributeAnnotatable from zope.container.constraints import contains, containers @@ -46,8 +46,8 @@ description=_("Alternate title used to describe image content"), required=False) - data = ImageField(title=_("Image data"), - description=_("Image content"), + data = MediaField(title=_("Image or video data"), + description=_("Image or video content"), required=True) description = I18nTextField(title=_("Description"), @@ -65,9 +65,9 @@ description=_("Number used to identify media into it's original source"), required=False) - sound = FileField(title=_("Audio data"), - description=_("Sound file associated with the current media"), - required=False) + sound = AudioField(title=_("Audio data"), + description=_("Sound file associated with the current media"), + required=False) sound_title = I18nTextLineField(title=_("Sound title"), description=_("Title of associated sound file"), diff -r 68f6464a97ea -r 8fc21a7ef206 src/pyams_content/component/gallery/zmi/__init__.py --- a/src/pyams_content/component/gallery/zmi/__init__.py Wed Feb 07 09:20:50 2018 +0100 +++ b/src/pyams_content/component/gallery/zmi/__init__.py Wed Feb 07 09:22:03 2018 +0100 @@ -9,7 +9,6 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # -from pyams_file.interfaces import IFileInfo __docformat__ = 'restructuredtext' @@ -17,16 +16,19 @@ # import standard library import json import zipfile + from io import BytesIO # import interfaces -from pyams_content.component.gallery.interfaces import IGallery, IGalleryRenderer, IGalleryFile +from pyams_content.component.gallery.interfaces import IGallery, IGalleryRenderer from pyams_content.component.gallery.zmi.interfaces import IGalleryImageAddFields, IGalleryImagesView from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION +from pyams_file.interfaces import IFileInfo from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager from pyams_i18n.interfaces import II18n from pyams_skin.layer import IPyAMSLayer from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION +from pyramid.interfaces import IView # import packages from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin @@ -34,6 +36,7 @@ from pyams_pagelet.pagelet import pagelet_config from pyams_template.template import template_config, get_view_template from pyams_utils.adapter import adapter_config, ContextRequestAdapter +from pyams_utils.url import absolute_url from pyams_viewlet.viewlet import viewlet_config, Viewlet from pyams_zmi.form import AdminDialogEditForm, AdminDialogDisplayForm from pyramid.exceptions import NotFound @@ -122,6 +125,12 @@ def get_title(self, image): return II18n(image).query_attribute('title', request=self.request) + def get_thumbnail_target(self, media): + registry = self.request.registry + view = registry.queryMultiAdapter((media, self.request), IView, name='preview.html') + if view is not None: + return absolute_url(media, self.request, 'preview.html') + @view_config(name='set-images-order.json', context=IGallery, request_type=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) diff -r 68f6464a97ea -r 8fc21a7ef206 src/pyams_content/component/gallery/zmi/interfaces.py --- a/src/pyams_content/component/gallery/zmi/interfaces.py Wed Feb 07 09:20:50 2018 +0100 +++ b/src/pyams_content/component/gallery/zmi/interfaces.py Wed Feb 07 09:22:03 2018 +0100 @@ -41,6 +41,6 @@ description=_("Comments relatives to author's rights management"), required=False) - images_data = ImageField(title=_("Images data"), + images_data = ImageField(title=_("Images or videos data"), description=_("You can upload a single file or choose to upload a whole ZIP archive"), required=True) diff -r 68f6464a97ea -r 8fc21a7ef206 src/pyams_content/component/gallery/zmi/paragraph.py --- a/src/pyams_content/component/gallery/zmi/paragraph.py Wed Feb 07 09:20:50 2018 +0100 +++ b/src/pyams_content/component/gallery/zmi/paragraph.py Wed Feb 07 09:22:03 2018 +0100 @@ -15,6 +15,8 @@ # import standard library +from datetime import datetime + # import interfaces from pyams_content.component.gallery.interfaces import IGalleryParagraph, IBaseGallery, IGalleryRenderer from pyams_content.component.gallery.zmi.interfaces import IGalleryImagesView @@ -26,6 +28,7 @@ from pyams_i18n.interfaces import II18n from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager from pyams_skin.layer import IPyAMSLayer +from pyramid.interfaces import IView from z3c.form.interfaces import INPUT_MODE # import packages @@ -37,6 +40,7 @@ from pyams_skin.viewlet.toolbar import ToolbarAction from pyams_template.template import template_config from pyams_utils.adapter import adapter_config +from pyams_utils.url import absolute_url from pyams_viewlet.viewlet import viewlet_config, BaseContentProvider from pyams_zmi.form import AdminDialogAddForm, InnerAdminDisplayForm from pyramid.view import view_config @@ -159,6 +163,12 @@ def get_title(self, image): return II18n(image).query_attribute('title', request=self.request) + def get_thumbnail_target(self, media): + registry = self.request.registry + view = registry.queryMultiAdapter((media, self.request), IView, name='preview.html') + if view is not None: + return absolute_url(media, self.request, 'preview.html') + @viewlet_config(name='add-image.menu', context=IGalleryParagraph, view=GalleryContentsView, manager=IWidgetTitleViewletManager) diff -r 68f6464a97ea -r 8fc21a7ef206 src/pyams_content/component/gallery/zmi/templates/gallery-images.pt --- a/src/pyams_content/component/gallery/zmi/templates/gallery-images.pt Wed Feb 07 09:20:50 2018 +0100 +++ b/src/pyams_content/component/gallery/zmi/templates/gallery-images.pt Wed Feb 07 09:22:03 2018 +0100 @@ -33,25 +33,44 @@ tal:attributes="data-ams-element-name image.__name__"> - - - + + + + + + + + + +