src/pyams_content/component/gallery/interfaces/__init__.py
changeset 140 67bad9f880ee
parent 0 7c0001cacf8e
child 205 af5d52115698
equal deleted inserted replaced
139:99a481dc4c89 140:67bad9f880ee
    14 
    14 
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_file.interfaces import IMediaFile
    19 from pyams_content.component.paragraph.interfaces import IBaseParagraph
    20 from zope.container.interfaces import IContainer, IOrderedContainer
    20 from zope.container.interfaces import IOrderedContainer
       
    21 from zope.contentprovider.interfaces import IContentProvider
    21 
    22 
    22 # import packages
    23 # import packages
    23 from pyams_file.schema import FileField
    24 from pyams_file.schema import FileField, ImageField
    24 from pyams_i18n.schema import I18nTextLineField, I18nTextField
    25 from pyams_i18n.schema import I18nTextLineField, I18nTextField
    25 from pyams_utils.schema import PersistentList
       
    26 from zope.annotation.interfaces import IAttributeAnnotatable
    26 from zope.annotation.interfaces import IAttributeAnnotatable
    27 from zope.container.constraints import containers, contains
    27 from zope.container.constraints import contains, containers
    28 from zope.interface import Interface
    28 from zope.interface import Interface, Attribute
    29 from zope.schema import Choice, Bool, TextLine
    29 from zope.schema import Bool, TextLine, Choice
    30 
    30 
    31 from pyams_content import _
    31 from pyams_content import _
    32 
    32 
    33 
    33 
    34 GALLERY_CONTAINER_KEY = 'pyams_content.gallery'
    34 GALLERY_CONTAINER_KEY = 'pyams_content.gallery'
    35 GALLERY_FILE_INFO_KEY = 'pyams_content.gallery.info'
       
    36 GALLERY_LINKS_CONTAINER_KEY = 'pyams_content.gallery.links'
       
    37 
    35 
    38 
    36 
    39 class IGalleryFile(Interface):
    37 class IGalleryFile(Interface):
    40     """Gallery file marker interface"""
    38     """Gallery file marker interface"""
    41 
    39 
       
    40     containers('.IGallery')
    42 
    41 
    43 class IGalleryFileInfo(Interface):
    42     title = I18nTextLineField(title=_("Legend"),
    44     """Gallery file info"""
    43                               description=_("Image title"),
       
    44                               required=False)
    45 
    45 
    46     title = I18nTextLineField(title=_("Title"),
    46     alt_title = I18nTextLineField(title=_("Accessibility title"),
    47                               required=False)
    47                                   description=_("Alternate title used to describe image content"),
       
    48                                   required=False)
       
    49 
       
    50     data = ImageField(title=_("Image data"),
       
    51                       description=_("Image content"),
       
    52                       required=True)
    48 
    53 
    49     description = I18nTextField(title=_("Description"),
    54     description = I18nTextField(title=_("Description"),
    50                                 required=False)
    55                                 required=False)
    51 
    56 
    52     author = TextLine(title=_("Author"),
    57     author = TextLine(title=_("Author"),
    79 
    84 
    80 
    85 
    81 class IBaseGallery(IOrderedContainer, IAttributeAnnotatable):
    86 class IBaseGallery(IOrderedContainer, IAttributeAnnotatable):
    82     """Base gallery interface"""
    87     """Base gallery interface"""
    83 
    88 
    84     containers('.IGalleryContainer')
       
    85 
       
    86     title = I18nTextLineField(title=_("Title"),
    89     title = I18nTextLineField(title=_("Title"),
    87                               description=_("Gallery title, as shown in front-office"),
    90                               description=_("Gallery title, as shown in front-office"),
    88                               required=True)
    91                               required=True)
    89 
    92 
    90     description = I18nTextField(title=_("Description"),
    93     description = I18nTextField(title=_("Description"),
    91                                 description=_("Gallery description displayed by front-office template"),
    94                                 description=_("Gallery description displayed by front-office template"),
    92                                 required=False)
    95                                 required=False)
    93 
    96 
    94     visible = Bool(title=_("Visible gallery?"),
    97     renderer = Choice(title=_("Gallery style"),
    95                    description=_("If 'no', this gallery won't be displayed in front office"),
    98                       vocabulary='PyAMS gallery renderers')
    96                    required=True,
    99 
    97                    default=True)
   100     def append(self, value, notify=True):
       
   101         """Append new file to gallery"""
    98 
   102 
    99     def get_visible_images(self):
   103     def get_visible_images(self):
   100         """Get iterator over visible images"""
   104         """Get iterator over visible images"""
   101 
   105 
   102 
   106 
   103 class IGallery(IBaseGallery):
   107 class IGallery(IBaseGallery):
   104     """Gallery interface"""
   108     """Gallery interface"""
   105 
   109 
   106     contains(IMediaFile)
   110     contains(IGalleryFile)
   107 
   111 
   108 
   112 
   109 class IGalleryContainer(IContainer):
   113 class IGalleryRenderer(IContentProvider):
   110     """Galleries container"""
   114     """Gallery renderer utility interface"""
   111 
   115 
   112     contains(IBaseGallery)
   116     label = Attribute("Renderer label")
   113 
   117 
   114 
   118 
   115 class IGalleryContainerTarget(Interface):
   119 class IGalleryTarget(IAttributeAnnotatable):
   116     """Galleries container marker interface"""
   120     """Gallery container target marker interface"""
   117 
   121 
   118 
   122 
   119 class IGalleryLinksContainer(Interface):
   123 class IGalleryParagraph(IGallery, IBaseParagraph):
   120     """Galleries links container interface"""
   124     """Gallery paragraph"""
   121 
       
   122     galleries = PersistentList(title=_("Contained galleries"),
       
   123                                description=_("List of images galleries linked to this object"),
       
   124                                value_type=Choice(vocabulary="PyAMS content galleries"),
       
   125                                required=False)
       
   126 
       
   127 
       
   128 class IGalleryLinksContainerTarget(Interface):
       
   129     """Galleries links container marker interface"""