{ "info": { "author": "Jukka Ojaniemi", "author_email": "jukka.ojaniemi@jyu.fi", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "RSS Listing\n===========\n\n**RSS Listing** is a content type, which displays an RSS feed in the\nsame way as the default **RSS Portlet** does.\n\n.. contents::\n\nPublic resources\n----------------\n\n**RSS Listing** installs a public resource ``++resource++jyu.rsslisting.images/rsslisting_icon.gif`` for its content type icon::\n\n >>> from Products.Five.testbrowser import Browser\n >>> browser = Browser(); portal_url = self.portal.absolute_url()\n >>> browser.open(portal_url + \"/++resource++jyu.rsslisting.images/rsslisting_icon.gif\")\n\nand ``++resource++jyu.rsslisting.styles/rsslisting.css`` for its stylesheet::\n\n >>> browser.open(portal_url + \"/++resource++jyu.rsslisting.styles/rsslisting.css\")\n\nCreating content\n----------------\n\nBy default, adding **RSS Listing** is not allowed globally. Let's\nallow it to make it easier to test::\n\n >>> from Products.CMFCore.utils import getToolByName\n >>> portal_types = getToolByName(self.portal, \"portal_types\")\n >>> rss_listing = portal_types.get(\"RSS Listing\")\n >>> rss_listing\n \n\n >>> rss_listing.global_allow = True\n >>> rss_listing.global_allow\n True\n\nNow **RSS Listing** is addable by any *contributor*. Let's\n\n1. open the front page::\n\n >>> browser.open(portal_url)\n\n2. enter the log in details::\n\n >>> browser.getControl(name='__ac_name').value = 'contributor'\n >>> browser.getControl(name='__ac_password').value = 'secret'\n\n3. and log in::\n\n >>> browser.getControl(name='submit').click()\n >>> \"You are now logged in\" in browser.contents\n True\n\nNow we should be able to see **RSS Listing** in the *add item* menu::\n\n >>> browser.getLink(id='rss-listing').url.endswith(\"createObject?type_name=RSS+Listing\")\n True\n\nTo add a single **RSS Listing**\n\n1. click it from the *add item* menu::\n\n >>> browser.getLink(id='rss-listing').click()\n\n2. enter RSS information::\n\n >>> browser.getControl(name='title').value = \"Slashdot\"\n >>> browser.getControl(name='description').value = \"Yesterday's news!\"\n >>> browser.getControl(name='url').value = \"http://rss.slashdot.org/Slashdot/slashdot\"\n >>> browser.getControl(name='count').value = \"10\"\n >>> browser.getControl(name='timeout').value = \"100\"\n\n3. and submit the form::\n\n >>> browser.getControl(name='form_submit').click()\n\nNow a new **RSS Listing** has been created::\n\n >>> 'slashdot' in self.portal.objectIds()\n True\n\nPublishing content\n------------------\n\nBy default, **RSS Listing** can be published by any *reviewer*. Let's\n\n1. log out::\n\n >>> browser.getLink('Log out').click()\n\n2. open the front page::\n\n >>> browser.open(portal_url)\n\n3. enter the log in details::\n\n >>> browser.getControl(name='__ac_name').value = 'reviewer'\n >>> browser.getControl(name='__ac_password').value = 'secret'\n\n4. and log in::\n\n >>> browser.getControl(name='submit').click()\n >>> \"You are now logged in\" in browser.contents\n True\n\nTo publish the **RSS Listing**\n\n1. navigate to the content::\n \n >>> browser.open(portal_url + \"/slashdot\")\n\n2. and publish it::\n\n >>> browser.getLink('Publish').click()\n\nViewing content\n---------------\n\nPublished **RSS Listing** should be visible to everybody. Let's\n\n1. log out::\n\n >>> browser.getLink('Log out').click()\n\n2. navigate to the content::\n\n >>> browser.open(\"%(portal_url)s/slashdot\" % vars())\n\n**RSS Listing** is being rendered::\n\n >>> \"Yesterday's news!\" in browser.contents\n True\n\nWith required 10 feed items::\n\n >>> browser.contents.count(\"