{ "info": { "author": "Ross Patterson", "author_email": "me@rpatterson.net", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. -*-doctest-*-\n\n==========================\ncollective.slideshowfolder\n==========================\n\nSomtimes useful extensions to Products.slideshowfolder\n\nSlideshowImage\n==============\n\nThe SlideshowImage content type uses a reference to an existing normal\nimage somewhere else in the site to act as a kind of link or alias.\nThis allows for the creation of a folder as a slideshowfolder that\ndisplays images that are actually stored elsewhere.\n\nStart with a couple of normal folders and a normal image.\n\n >>> portal.images\n \n >>> portal.images.contentValues()\n []\n >>> foo_image = portal.images['foo-image-title']\n\n >>> folder.contentValues()\n []\n >>> folder.slideshow.contentValues()\n []\n\nOpen a browser and login as a user who can add SlideshowImages.\n\n >>> from Products.Five import testbrowser\n >>> from Products.PloneTestCase import ptc\n >>> portal.error_log._ignored_exceptions = ()\n >>> member_browser = testbrowser.Browser()\n >>> member_browser.handleErrors = False\n >>> member_browser.open(portal.absolute_url())\n >>> member_browser.getLink('Log in').click()\n >>> member_browser.getControl(\n ... 'Login Name').value = ptc.default_user\n >>> member_browser.getControl(\n ... 'Password').value = ptc.default_password\n >>> member_browser.getControl('Log in').click()\n >>> member_browser.open(folder.slideshow.absolute_url())\n\nAdd a SlideshowImage. Set the \"Image Reference\" field to the real image\nin the images folder.\n\n >>> member_browser.getLink(\n ... url='createObject?type_name=SlideshowImage').click()\n >>> member_browser.getControl(\n ... 'Image Reference').value = foo_image.UID()\n\nSince all values are taken from the referenced image, none of the\nnormal image fields are editable.\n\n >>> member_browser.getControl('Title')\n Traceback (most recent call last):\n LookupError: label 'Title'\n\n >>> member_browser.getControl('Description')\n Traceback (most recent call last):\n LookupError: label 'Description'\n\n >>> member_browser.getControl(name='image_file')\n Traceback (most recent call last):\n LookupError: name 'image_file'\n\n >>> member_browser.getControl('Creators')\n Traceback (most recent call last):\n LookupError: label 'Creators'\n\nSave the new SlideshowImage.\n\n >>> member_browser.getControl('Save').click()\n\nThe values for the fields are pulled in from the referenced image.\n\n >>> print member_browser.contents\n <...\n ...Changes saved...\n ...Foo Image Title...\n ...Foo Cre\u00c3tor...\n ...Foo Image description...\n >>> member_browser.getLink('Click to view full-size image')\n \n >>> member_browser.open(\n ... folder.slideshow['foo-image-title'].absolute_url())\n >>> print member_browser.contents\n GIF...\n\nThe catalog also reflects the data from the referenced image.\n\n >>> len(portal.portal_catalog(\n ... Type='Slideshow Image',\n ... Description='Foo Image description'))\n 1\n\nThe catalogged and indexed values for the fields are also updated\nwhen the original image is edited.\n\nOpen a browser and log in as the image's creator.\n\n >>> owner_browser = testbrowser.Browser()\n >>> owner_browser.handleErrors = False\n >>> owner_browser.open(portal.absolute_url())\n >>> owner_browser.getLink('Log in').click()\n >>> owner_browser.getControl(\n ... 'Login Name').value = ptc.portal_owner\n >>> owner_browser.getControl(\n ... 'Password').value = ptc.default_password\n >>> owner_browser.getControl('Log in').click()\n\nChange the image metadata.\n\n >>> owner_browser.open(foo_image.absolute_url()+'/edit')\n >>> owner_browser.getControl(\n ... 'Description').value = 'Foo Image edited'\n >>> owner_browser.getControl('Save').click()\n\nThe catalog now reflects the changes for the SlideshowImage that\nreferences the image.\n\n >>> len(portal.portal_catalog(\n ... Type='Slideshow Image',\n ... Description='Foo Image description'))\n 0\n\n >>> len(portal.portal_catalog(\n ... Type='Slideshow Image',\n ... Description='Foo Image edited'))\n 1\n\nSlideshow Folders\n=================\n\nSlideshowImages is in a folder using the slideshowfolder view behave\njust like regular images.\n\nMake the folder into a slideshowfolder.\n\n >>> member_browser.open(folder.slideshow.absolute_url())\n >>> member_browser.getLink('Make slideshow').click()\n >>> print member_browser.contents\n <...\n ...This folder is now designated a slideshow...\n\nCheck that the SlideshowImage is included in the slideshow by\ninspecting the JavaScript. The collective.slideshowfolder package\nalso extends the caption to include the image's creator for credit.\n\n >>> member_browser.open(\n ... folder.slideshow.absolute_url()+'/slideshow_settings.js')\n >>> print member_browser.contents\n registerPloneFunction...\n ...http://nohost/plone/Members/test_user_1_/slideshow/bar-image-title/image_large...\n ...Photo: Foo Full N\u00c3me...\n ...Bar Im\u00c3ge description...\n ...http://nohost/plone/Members/test_user_1_/slideshow/foo-image-title/image_large...\n ...Photo: Foo Cre\u00c3tor...\n ...Foo Image edited...\n\n\n.. -*-doctest-*-\n\nSlideshow Portlets\n==================\n\nThe collective.slideshowfolder package also provides a portlet that\nrenders a Slideshow 2 in a portlet based on the contents of the first\nfolder or collection specified in the \"slideshow\" refrence for the\ncontext.\n\nTurn the a folder into a slideshowfolder.\n\n >>> slideshowfolder = self.folder.slideshow\n >>> self.loginAsPortalOwner()\n >>> portal.portal_workflow.doActionFor(\n ... slideshowfolder, 'publish')\n >>> slideshowfolder.unrestrictedTraverse(\n ... '@@folder_slideshow_view').makeSlideshow()\n\nOpen a browser and login as a user who can add portlets.\n\n >>> from Products.Five import testbrowser\n >>> from Products.PloneTestCase import ptc\n >>> browser = testbrowser.Browser()\n >>> browser.handleErrors = False\n >>> browser.open(portal.absolute_url())\n >>> browser.getLink('Log in').click()\n >>> browser.getControl('Login Name').value = ptc.portal_owner\n >>> browser.getControl('Password').value = ptc.default_password\n >>> browser.getControl('Log in').click()\n\nAdd a slideshowfolder portlet.\n\n >>> browser.getLink('Manage portlets').click()\n >>> right_column = browser.getForm(index=3)\n >>> right_column.getControl('Slideshow portlet').selected = True\n >>> right_column.submit()\n >>> browser.getControl('Save').click()\n >>> browser.getLink('Log out').click()\n\nGo to an area of the site without a slideshow.\n\n >>> context = portal.news.aggregator\n >>> browser.open(context.absolute_url())\n >>> 'portletSlideshow' in browser.contents\n False\n\nAdd a slideshowfolder reference for the context.\n\n >>> context.addReference(slideshowfolder,\n ... relationship=\"slideshow\")\n \n\nNow the slideshow portlet will be rendered.\n\n >>> browser.open(context.absolute_url())\n >>> print browser.contents\n <...\n ...mootools...\n ...portletSlideshow...\n ...id=\"myShow\"...\n ...registerPloneFunction...\n ...http://nohost/plone/Members/test_user_1_/slideshow/bar-image-title/image_large...\n\nChangelog\n=========\n\n0.8 - 2009-07-08\n----------------\n\n* Fix the portlet add view\n\n0.7 - 2009-03-22\n----------------\n\n* Fix another unicode error in the caption (aaronv)\n\n0.6 - 2009-03-21\n----------------\n\n* Fix unicode error in the caption (aaronv)\n\n0.5 - 2009-02-07\n----------------\n\n* Fix a type on generated portlet JavaScript (Thanks aaronv!)\n\n0.4 - 2008-12-03\n----------------\n\n* Fix the portlet JavaScript\n* Make the portlet fully editable\n* More sensible height and width defaults for portlet \n\n0.3 - 2008-12-02\n----------------\n\n* Support for a slideshow portlet based on a reference to a slideshow\n folder\n\n0.2 - 2008-11-13\n----------------\n\n* Add the image creator as a credit in the caption\n\n0.1 - 2008-11-12\n----------------\n\n* Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/collective.slideshowfolder", "keywords": "", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "collective.slideshowfolder", "package_url": "https://pypi.org/project/collective.slideshowfolder/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.slideshowfolder/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/collective.slideshowfolder" }, "release_url": "https://pypi.org/project/collective.slideshowfolder/0.8/", "requires_dist": null, "requires_python": null, "summary": "Somtimes useful extensions to Products.slideshowfolder", "version": "0.8" }, "last_serial": 845329, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "19ece018562c6b0bf39450790aaf29eb", "sha256": "6664642a1f9cc070aee3ac5cc2184b0dc02d3490dd3b8270d4c6d32654f4c383" }, "downloads": -1, "filename": "collective.slideshowfolder-0.1.tar.gz", "has_sig": false, "md5_digest": "19ece018562c6b0bf39450790aaf29eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7328, "upload_time": "2008-11-13T06:25:02", "url": "https://files.pythonhosted.org/packages/2a/6d/1e6b9abb21481a0adbbb91adc7c3a526807d0c36e055586b0c995f3e9731/collective.slideshowfolder-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "1dc6ed899b35384c9bbbed8a89591855", "sha256": "88ccea1b34ac441d28cdd7621e9cb4cf35f469e95aefeea1b4a692fb5a93d4b7" }, "downloads": -1, "filename": "collective.slideshowfolder-0.2.tar.gz", "has_sig": false, "md5_digest": "1dc6ed899b35384c9bbbed8a89591855", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9635, "upload_time": "2008-11-13T19:28:58", "url": "https://files.pythonhosted.org/packages/f0/3e/73a81da72becb70fdadc01074e40a49f0b0f69b708d6199dfac909f70103/collective.slideshowfolder-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "fd2fd57947a0ca8649908e1e7c29be36", "sha256": "06132467d7ab730c7fca72398d6050299aa39ce448d89c7cec77aae30c606226" }, "downloads": -1, "filename": "collective.slideshowfolder-0.3.tar.gz", "has_sig": false, "md5_digest": "fd2fd57947a0ca8649908e1e7c29be36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11151, "upload_time": "2008-12-03T06:58:43", "url": "https://files.pythonhosted.org/packages/06/1d/1f721846c3a953567fe997ab81e1a4fc39a45352598898971187142ed714/collective.slideshowfolder-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "fcba2ccd02a5c6c203f695fd9ac3d44e", "sha256": "2ad297ba0ec731eb735c829f61fe99bb5151aed29974594110a15ab3beefc0a7" }, "downloads": -1, "filename": "collective.slideshowfolder-0.4.tar.gz", "has_sig": false, "md5_digest": "fcba2ccd02a5c6c203f695fd9ac3d44e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12164, "upload_time": "2008-12-03T21:38:35", "url": "https://files.pythonhosted.org/packages/25/a7/75c5aac818341d2c5470dace50e27d45e1fe255d313e48f9eeb4dfc7d8c9/collective.slideshowfolder-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "c96e771c0f7323fc5b7f6fc29c1b3c52", "sha256": "fbddb57c79e65008c1779fe1d35ce2f3923261b5b7cbcb89ac9ade2728cb88c3" }, "downloads": -1, "filename": "collective.slideshowfolder-0.5.tar.gz", "has_sig": false, "md5_digest": "c96e771c0f7323fc5b7f6fc29c1b3c52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12220, "upload_time": "2009-02-07T18:40:50", "url": "https://files.pythonhosted.org/packages/1f/c9/c0d07b6202d38b9430bb02c21efd1367dec4849eb1f99a947b23538a6d3d/collective.slideshowfolder-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "90816443a23dfed76de59150e6a50092", "sha256": "d44a56227677153246b64aa820636848c89873055c7e77222dc11a8f74d13ae4" }, "downloads": -1, "filename": "collective.slideshowfolder-0.6.tar.gz", "has_sig": false, "md5_digest": "90816443a23dfed76de59150e6a50092", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12371, "upload_time": "2009-03-22T05:12:40", "url": "https://files.pythonhosted.org/packages/df/2c/8c70ed6e93fdf19650667d38a5423d4ecb5a655e1087235c8525e01bac90/collective.slideshowfolder-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "44eea70d4429b7be96a24a21e1600bf1", "sha256": "72384f438f39ce73cecbdd6345bc087bed3fb2084f3bfca49618a896d180738e" }, "downloads": -1, "filename": "collective.slideshowfolder-0.7.tar.gz", "has_sig": false, "md5_digest": "44eea70d4429b7be96a24a21e1600bf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12472, "upload_time": "2009-03-22T21:25:34", "url": "https://files.pythonhosted.org/packages/e2/a0/ad325a35cce2b0bfa2b0463456793ac8157768d66a20b6ac92f88c9e9fc1/collective.slideshowfolder-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "c54f19d19efdc8ec91fadbcf3be2d33c", "sha256": "9a4058050901b46bf0355982669fe0e8125ba109daefa25802cbf58a1c211688" }, "downloads": -1, "filename": "collective.slideshowfolder-0.8.tar.gz", "has_sig": false, "md5_digest": "c54f19d19efdc8ec91fadbcf3be2d33c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12645, "upload_time": "2009-07-08T20:31:38", "url": "https://files.pythonhosted.org/packages/55/f7/527f609c087b834390c881a6a08bdc33b43e4ea097a4b63bed53149f0a52/collective.slideshowfolder-0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c54f19d19efdc8ec91fadbcf3be2d33c", "sha256": "9a4058050901b46bf0355982669fe0e8125ba109daefa25802cbf58a1c211688" }, "downloads": -1, "filename": "collective.slideshowfolder-0.8.tar.gz", "has_sig": false, "md5_digest": "c54f19d19efdc8ec91fadbcf3be2d33c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12645, "upload_time": "2009-07-08T20:31:38", "url": "https://files.pythonhosted.org/packages/55/f7/527f609c087b834390c881a6a08bdc33b43e4ea097a4b63bed53149f0a52/collective.slideshowfolder-0.8.tar.gz" } ] }