Dolmen contenttype扩展:相册
项目描述
menhir.contenttype.photoalbum 提供一个可用于显示图像集合的单个内容类型。该内容类型有两个不同的渲染视图,允许将图像渲染为静态缩略图或动画画廊。
接口
menhir.contenttype.photoalbum IPhotoAlbum 接口扩展了来自 dolmen.app.content 的 IDescriptiveSchema 以及来自 zope.container 的 IContainer
>>> from zope.container.interfaces import IContainer >>> from dolmen.app.content import IDescriptiveSchema >>> from menhir.contenttype.photoalbum import IPhotoAlbum >>> IPhotoAlbum.isOrExtends(IContainer) True >>> IPhotoAlbum.isOrExtends(IDescriptiveSchema) True
此接口作为 PhotoAlbum 的架构应用
>>> from dolmen.content import schema >>> from menhir.contenttype.photoalbum import PhotoAlbum >>> schema.bind().get(PhotoAlbum) [<InterfaceClass menhir.contenttype.photoalbum.album.IPhotoAlbum>]
IPhotoAlbum 接口定义了一个容器约束,只允许来自 menhir.contenttype.image 的 IImage 内容
>>> 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>,))
PhotoAlbum 对象提供 IPhotoAlbum 接口,同时也提供 IViewSelector 接口,定义了用于渲染对象的视图名称
>>> IPhotoAlbum.providedBy(album) True >>> from dolmen.app.viewselector import IViewSelector >>> IViewSelector.providedBy(album) True
工厂
工厂受 dolmen.app.security 的常规权限保护
>>> from dolmen.content import require >>> print require.bind().get(album) dolmen.content.Add
图标
内容通过 dolmen.app.content 软件包注册了一个图标
>>> 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 ...>
人口统计
>>> 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
视图
缩略图视图
>>> 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'>]
动画视图
>>> 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="slideshow"></div> <div class="caption"></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'>]
变更日志
0.4 (2011-02-14)
架构现在从 dolmen.app.content 的 IDescriptiveSchema 继承,而不是从 dolmen.content 的 IBaseContent 继承。这添加了一个 description 属性,以及现有的 title。
0.3 (2011-02-02)
修复了Galleriffic 2.0.1-1的动画画廊页面。
0.2 (2011-02-02)
添加缺失的资源入口。
针对Grok 1.3进行了更新。
0.1 (2011-01-19)
首次发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
menhir.contenttype.photoalbum-0.4.tar.gz (224.5 kB 查看哈希值)
关闭
menhir.contenttype.photoalbum-0.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | df2350791b18d475c9eb2b38c63168b53065ffa0fff960ec059628762f7a7dd8 |
|
MD5 | 9bad13dbd5f1000121da52c37747a61f |
|
BLAKE2b-256 | f2287b29156775208079616828b122c3a598581a64f961ebfcf307f1b4344a81 |