Dolmen contenttype extension : photoalbum
Project description
menhir.contenttype.photoalbum provides a single content type useable to display images as a collection. The content type has two different rendering views, allowing to render the images as static thumbnails or as an animated gallery.
Interfaces
The menhir.contenttype.photoalbum IPhotoAlbum interface extendes IContainer from zope.container:
>>> from zope.container.interfaces import IContainer >>> from menhir.contenttype.photoalbum import IPhotoAlbum >>> IPhotoAlbum.isOrExtends(IContainer) True
The IPhotoAlbum interface defines a containership contraint, allowing only IImage contents, from menhir.contenttype.image:
>>> from menhir.contenttype.photoalbum import PhotoAlbum >>> album = PhotoAlbum(title=u"My nice images") >>> from zope.container.constraints import checkObject >>> checkObject(album, 'temporary', object()) Traceback (most recent call last): ... InvalidItemType: (<menhir.contenttype.photoalbum.album.PhotoAlbum ...>, <object object at ...>, (<InterfaceClass menhir.contenttype...IImage>,))
A PhotoAlbum object provides the IPhotoAlbum interface but also the IViewSelector interface, defining the name of the view used to render the object:
>>> IPhotoAlbum.providedBy(album) True >>> from dolmen.app.viewselector import IViewSelector >>> IViewSelector.providedBy(album) True
Factory
The factory is protected by a common dolmen.app.security right:
>>> from dolmen.content import require >>> print require.bind().get(album) dolmen.content.Add
Icon
The content registers an icon, thanks to the dolmen.app.content package:
>>> from zope.component import getMultiAdapter >>> from zope.publisher.browser import TestRequest >>> request = TestRequest() >>> icon = getMultiAdapter((album, request), name="icon") >>> print icon <zope.browserresource.icon.IconView object at ...>
Population
>>> import os.path >>> from menhir.contenttype.image import Image>>> testpath = os.path.join(os.path.dirname(__file__), 'tests') >>> path1 = os.path.join(testpath, 'dolmen.png') >>> path2 = os.path.join(testpath, 'dolmen-test-site.png')>>> imagefile = open(path1) >>> image1 = Image(title=u"Logo", image=imagefile) >>> imagefile.close()>>> imagefile = open(path2) >>> image2 = Image(title=u"Example", image=imagefile) >>> imagefile.close()>>> from zope.component.hooks import getSite >>> site = getSite() >>> site['album'] = album >>> site['album']['dolmen_logo'] = image1 >>> site['album']['dolmen_site_example'] = image2
Views
Thumbnails view
>>> print album.selected_view thumbnails_view>>> import fanstatic >>> fanstatic.init_needed() <fanstatic.core.NeededResources object at ...>>>> index = getMultiAdapter((album, request), name="index")>>> index.update() >>> print index.content() <h1>My nice images</h1> <div class="photo-album"> <div class="gallery-thumbs"> <ul class="thumbs noscript"> <li> <a class="thumb image-link" href="http://127.0.0.1/album/dolmen_logo/++thumbnail++image.preview" title="Logo" rel="gallery-..."> <img src="http://127.0.0.1/album/dolmen_logo/++thumbnail++image.square" title="Logo" alt="Logo" /> </a> </li> <li> <a class="thumb image-link" href="http://127.0.0.1/album/dolmen_site_example/++thumbnail++image.preview" title="Example" rel="gallery-..."> <img src="http://127.0.0.1/album/dolmen_site_example/++thumbnail++image.square" title="Example" alt="Example" /> </a> </li> </ul> </div> </div>>>> fanstatic.get_needed().resources() [<Resource 'css/slimbox2.css' in library 'jquery_slimbox'>, <Resource 'gallery.css' in library 'photoalbum.resources'>, <Resource 'jquery.js' in library 'jquery'>, <Resource 'js/slimbox2.js' in library 'jquery_slimbox'>, <Resource 'popup.js' in library 'menhir.contenttype.image'>]
Animated view
>>> album.selected_view = "gallery_view">>> fanstatic.init_needed() <fanstatic.core.NeededResources object at ...>>>> index = getMultiAdapter((album, request), name="index")>>> index.update() >>> print index.content() <h1>My nice images</h1> <div class="photo-album"> <div class="gallery-thumbs navigation"> <ul class="thumbs noscript"> <li style="opacity: 0.67"> <a class="thumb" href="http://127.0.0.1/album/dolmen_logo/++thumbnail++image.preview" title="Logo"> <img src="http://127.0.0.1/album/dolmen_logo/++thumbnail++image.square" title="Logo" alt="Logo" /> </a> <div class="caption">Logo</div> </li> <li style="opacity: 0.67"> <a class="thumb" href="http://127.0.0.1/album/dolmen_site_example/++thumbnail++image.preview" title="Example"> <img src="http://127.0.0.1/album/dolmen_site_example/++thumbnail++image.square" title="Example" alt="Example" /> </a> <div class="caption">Example</div> </li> </ul> </div> <div class="gallery"> <div class="controls"></div> <div class="loader"></div> <div class="main-image"></div> <div class="captions"></div> </div> <div class="gallery-footer" /> </div>>>> fanstatic.get_needed().resources() [<Resource 'gallery.css' in library 'photoalbum.resources'>, <Resource 'jquery.js' in library 'jquery'>, <Resource 'jquery.galleriffic.js' in library 'galleriffic'>, <Resource 'gallery.js' in library 'photoalbum.resources'>]
Changelog
0.2 (2011-02-02)
Added missing resources entry point.
Updated for Grok 1.3.
0.1 (2011-01-19)
Initial release.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for menhir.contenttype.photoalbum-0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39fda64ceb58551e6327ca3d9a2d231596de29d37ea8a4244095bbe511fbf683 |
|
MD5 | d781b652134b2a712918ab0ad23a17f7 |
|
BLAKE2b-256 | 5b2fdc8bab6c4423413e3a104710f0471de5fed5fb59b0a3f5d72c9039b5fd19 |