collective.slideshowfolder 0.7
Somtimes useful extensions to Products.slideshowfolder
Somtimes useful extensions to Products.slideshowfolder
SlideshowImage
The SlideshowImage content type uses a reference to an existing normal image somewhere else in the site to act as a kind of link or alias. This allows for the creation of a folder as a slideshowfolder that displays images that are actually stored elsewhere.
Start with a couple of normal folders and a normal image.
>>> portal.images <ATFolder at /plone/images> >>> portal.images.contentValues() [<ATImage at /plone/images/foo-image-title>] >>> foo_image = portal.images['foo-image-title']>>> folder.contentValues() [<ATFolder at /plone/Members/test_user_1_/slideshow>] >>> folder.slideshow.contentValues() [<ATImage at /plone/Members/test_user_1_/slideshow/bar-image-title>]
Open a browser and login as a user who can add SlideshowImages.
>>> from Products.Five import testbrowser
>>> from Products.PloneTestCase import ptc
>>> portal.error_log._ignored_exceptions = ()
>>> member_browser = testbrowser.Browser()
>>> member_browser.handleErrors = False
>>> member_browser.open(portal.absolute_url())
>>> member_browser.getLink('Log in').click()
>>> member_browser.getControl(
... 'Login Name').value = ptc.default_user
>>> member_browser.getControl(
... 'Password').value = ptc.default_password
>>> member_browser.getControl('Log in').click()
>>> member_browser.open(folder.slideshow.absolute_url())
Add a SlideshowImage. Set the "Image Reference" field to the real image in the images folder.
>>> member_browser.getLink( ... url='createObject?type_name=SlideshowImage').click() >>> member_browser.getControl( ... 'Image Reference').value = foo_image.UID()
Since all values are taken from the referenced image, none of the normal image fields are editable.
>>> member_browser.getControl('Title') Traceback (most recent call last): LookupError: label 'Title'>>> member_browser.getControl('Description') Traceback (most recent call last): LookupError: label 'Description'>>> member_browser.getControl(name='image_file') Traceback (most recent call last): LookupError: name 'image_file'>>> member_browser.getControl('Creators') Traceback (most recent call last): LookupError: label 'Creators'
Save the new SlideshowImage.
>>> member_browser.getControl('Save').click()
The values for the fields are pulled in from the referenced image.
>>> print member_browser.contents
<...
...Changes saved...
...Foo Image Title...
...Foo CreÃtor...
...Foo Image description...
>>> member_browser.getLink('Click to view full-size image')
<Link text='Foo Image Title[IMG] [IMG]
Click to view full-size image...'
url='http://nohost/plone/Members/test_user_1_/slideshow/foo-image-title/image_view_fullscreen'>
>>> member_browser.open(
... folder.slideshow['foo-image-title'].absolute_url())
>>> print member_browser.contents
GIF...
The catalog also reflects the data from the referenced image.
>>> len(portal.portal_catalog( ... Type='Slideshow Image', ... Description='Foo Image description')) 1
The catalogged and indexed values for the fields are also updated when the original image is edited.
Open a browser and log in as the image's creator.
>>> owner_browser = testbrowser.Browser()
>>> owner_browser.handleErrors = False
>>> owner_browser.open(portal.absolute_url())
>>> owner_browser.getLink('Log in').click()
>>> owner_browser.getControl(
... 'Login Name').value = ptc.portal_owner
>>> owner_browser.getControl(
... 'Password').value = ptc.default_password
>>> owner_browser.getControl('Log in').click()
Change the image metadata.
>>> owner_browser.open(foo_image.absolute_url()+'/edit')
>>> owner_browser.getControl(
... 'Description').value = 'Foo Image edited'
>>> owner_browser.getControl('Save').click()
The catalog now reflects the changes for the SlideshowImage that references the image.
>>> len(portal.portal_catalog( ... Type='Slideshow Image', ... Description='Foo Image description')) 0>>> len(portal.portal_catalog( ... Type='Slideshow Image', ... Description='Foo Image edited')) 1
Slideshow Folders
SlideshowImages is in a folder using the slideshowfolder view behave just like regular images.
Make the folder into a slideshowfolder.
>>> member_browser.open(folder.slideshow.absolute_url())
>>> member_browser.getLink('Make slideshow').click()
>>> print member_browser.contents
<...
...This folder is now designated a slideshow...
Check that the SlideshowImage is included in the slideshow by inspecting the JavaScript. The collective.slideshowfolder package also extends the caption to include the image's creator for credit.
>>> member_browser.open( ... folder.slideshow.absolute_url()+'/slideshow_settings.js') >>> print member_browser.contents registerPloneFunction... ...http://nohost/plone/Members/test_user_1_/slideshow/bar-image-title/image_large... ...Photo: Foo Full NÃme... ...Bar ImÃge description... ...http://nohost/plone/Members/test_user_1_/slideshow/foo-image-title/image_large... ...Photo: Foo CreÃtor... ...Foo Image edited...
Slideshow Portlets
The collective.slideshowfolder package also provides a portlet that renders a Slideshow 2 in a portlet based on the contents of the first folder or collection specified in the "slideshow" refrence for the context.
Turn the a folder into a slideshowfolder.
>>> slideshowfolder = self.folder.slideshow >>> self.loginAsPortalOwner() >>> portal.portal_workflow.doActionFor( ... slideshowfolder, 'publish') >>> slideshowfolder.unrestrictedTraverse( ... '@@folder_slideshow_view').makeSlideshow()
Open a browser and login as a user who can add SlideshowImages.
>>> from Products.Five import testbrowser >>> browser = testbrowser.Browser() >>> browser.handleErrors = False
Go to an area of the site without a slideshow.
>>> context = portal.news.aggregator >>> browser.open(context.absolute_url()) >>> 'portletSlideshow' in browser.contents False
Add a slideshowfolder reference for the context.
>>> context.addReference(slideshowfolder, ... relationship="slideshow") <Reference sid:... tid:... rel:slideshow>
Now the slideshow portlet will be rendered.
>>> browser.open(context.absolute_url()) >>> print browser.contents <... ...mootools... ...portletSlideshow... ...id="myShow"... ...registerPloneFunction... ...http://nohost/plone/Members/test_user_1_/slideshow/bar-image-title/image_large...
Changelog
0.7 - 2009-03-22
- Fix another unicode error in the caption (aaronv)
0.6 - 2009-03-21
- Fix unicode error in the caption (aaronv)
0.5 - 2009-02-07
- Fix a type on generated portlet JavaScript (Thanks aaronv!)
0.4 - 2008-12-03
- Fix the portlet JavaScript
- Make the portlet fully editable
- More sensible height and width defaults for portlet
0.3 - 2008-12-02
- Support for a slideshow portlet based on a reference to a slideshow folder
0.2 - 2008-11-13
- Add the image creator as a credit in the caption
0.1 - 2008-11-12
- Initial release
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| collective.slideshowfolder-0.7.tar.gz (md5) | Source | 2009-03-22 21:25:34.628315 | 12KB | 189 | |
- Author: Ross Patterson <me at rpatterson net>
- Home Page: http://pypi.python.org/pypi/collective.slideshowfolder
- License: GPL
- Categories
- Package Index Owner: rpatterson
- DOAP record: collective.slideshowfolder-0.7.xml
