{ "info": { "author": "Jarn AS", "author_email": "info@jarn.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Plone :: 4.0", "Framework :: Plone :: 4.1", "Framework :: Plone :: 4.2", "Framework :: Plone :: 4.3", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7" ], "description": "Introduction\r\n============\r\n\r\ncollective.blog.feeds provides blog feeds for standard Plone folders and \r\ncollections. It builds on basesyndication and fatsyndication and uses their\r\narchitecture and templates, but provides concrete implementations for\r\nstandard Plone content.\r\n\r\nTo create the feeds all you need to do is make collective.blog.feeds be a \r\ndependent product in your buildout, and include the ZCML one way or another.\r\nPlone folders, large folders and collections will then gain a set of new\r\nviews: atom.xml, feed.rdf, feed11.rdf, rss.xml and itunes.xml.\r\n\r\nYes, *all* folders get this view. No, you don't have to enable syndication\r\non the folder, which also means you don't have to find that enable syndication\r\ntab action that for some reason is invisible by default so that you can't turn\r\non the standard RSS feed without knowing Plone inside and out for some\r\nincomprehensible reason.\r\n\r\nIt also adds the feeds to the plone header with the standard \r\n'' type of header links. There probably should be\r\na way to turn that off or on, but currently there isn't.\r\n\r\ncollective.blog.feeds supports Plone 3 and Plone 4.\r\n\r\n\r\nThe development of collective.blog.feeds was sponsored by the \r\n**Bergen Public Library** - http://www.nettbiblioteket.no\r\n\r\n\r\nSettings\r\n--------\r\n\r\nBy default this product will only use Documents, News Items and Files as \r\nentries in the blog feed. If you want to use some custom content types you\r\nwill need to do two things:\r\n\r\n1. Provide an IFeedEntry adapter. Look at the \"adapters.py\" file for an\r\n examples made for News Item. As you see it's not particularily complicated.\r\n You also need to register the adapter, look in configure.zcml to see how\r\n that is done.\r\n \r\n2. Create a property in portal.properties/site_properties called \"blog_types\"\r\n of the \"lines\" type. Then in that property add each content type that\r\n your site should see as being blog entries.\r\n \r\n \r\nPodcasts\r\n--------\r\n\r\ncollective.blog.feeds provides an adapter for the ATFile content type with\r\npodcast enclosure support. You can therefore make podcasts simply by making\r\na folder and sticking files in it.\r\n\r\nIf you have a custom class for podcasts, you need to add an adapter for it so\r\nthat the file get's picked up properly and inserted into an enclosure in the\r\nfeed. If your podcast class subclasses ATFile or implements the IATFile\r\ninterface you shouldn't need to do anything. If you don't, but provide a\r\nsimilar interface, you can try to use the ATFile adapter, by adding this to\r\nyour configure.zcml:\r\n\r\n \"\r\n provides=\"Products.basesyndication.interfaces.IFeedEntry\"\r\n factory=\"collective.blog.feeds.adapters.FileFeedEntry\"\r\n /> \r\n\r\n \"\r\n provides=\"Products.basesyndication.interfaces.IEnclosure\"\r\n factory=\"collective.blog.feeds.adapters.ATFileEnclosure\"\r\n />\r\n\r\nIf your podcast class doesn't implement an interface similar to ATFile, you\r\nneed to make your own adapter. It's not tricky, take a look at the adapters.py\r\nfile to see how the ATFile adapter is done.\r\n\r\n\r\nWhat this product do not have\r\n-----------------------------\r\n\r\nThere is no Plone Control Panel in this product, nor will there ever be one,\r\nso you need to change the settings through the ZMI. There will also never be\r\nany per-folder settings, as that would require extending the schema for \r\nfolders or have a dedicated blog type, both which will defeat the main goal\r\nof this product: simplicity and flexibility.\r\n\r\nThis product will never use doctests to test anything besides documentation.\r\n\r\nChangelog\r\n=========\r\n\r\n2.1 (2013-05-27)\r\n----------------\r\n\r\n- Instead of putting the whole image from the News Item in the feed, I now\r\n put a 'mini' image with a link, similar to how the News Item is\r\n being rendered with the normal view. [regebro]\r\n\r\nTested with Plone 4.0.10, 4.1.6, 4.2.5 and 4.3.\r\nPlone 3 is no longer supported, but may still work.\r\n\r\n\r\n2.0 (2013-05-26)\r\n----------------\r\n\r\n- Register the feed viewlet for IBaseFolder\r\n [erral]\r\n\r\n- Use 'index' instead 'render' for the viewlet class to allow overriding via z3c.jbot.\r\n [erral]\r\n \r\n- Now punts to using Plone 4.3's built in syndication under Plone 4.3.\r\n Note that since Plone 4.3's syndication is turned off by default, you will have to\r\n configure it before it works.\r\n [regebro]\r\n\r\n- File links go to the files web view instead of the file. Podcast readers should use the\r\n enclosure in any case.\r\n [Rudd-O]\r\n\r\nTested with Plone 4.0.10, 4.1.6, 4.2.5 and 4.3.\r\nPlone 3 is no longer supported, but may still work.\r\n\r\n\r\n1.3 (2010-10-27)\r\n----------------\r\n\r\n- collective.blog.feeds depends on fatsyndication. [regebro]\r\n\r\nThis version tested with Plone 3.3.4, 4.0b3, 4.0.10, 4.1.4 and 4.2b2.\r\n\r\n1.2 (2010-06-30)\r\n----------------\r\n\r\n- Forced reverse order in the sorting. [regebro]\r\n\r\nThis version has been tested with Plone 3.3.4 and Plone 4.0b3.\r\n\r\n\r\n1.1 (2010-06-05)\r\n----------------\r\n\r\n- Added credits to Bergen Offentlige Bibliotek. [regebro]\r\n\r\n- Plone 4 support. [regebro]\r\n\r\nThis version has been tested with Plone 3.3.4 and Plone 4.0b3.\r\n\r\n\r\n1.0 (2010-05-16)\r\n----------------\r\n\r\n- Initial release\r\n\r\nThis version has been tested with Plone 3.3.4.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/collective/collective.blog.feeds", "keywords": "plone blog rss podcast feeds", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "collective.blog.feeds", "package_url": "https://pypi.org/project/collective.blog.feeds/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.blog.feeds/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/collective/collective.blog.feeds" }, "release_url": "https://pypi.org/project/collective.blog.feeds/2.1/", "requires_dist": null, "requires_python": null, "summary": "Provides several syndication feed types for standard folders.", "version": "2.1" }, "last_serial": 986935, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "75f43d2f932121b5af6bd28646808ba3", "sha256": "8e301152d2da37efc9f88821f66c0e07937b63a35b58db1cd3a7065806a5dd55" }, "downloads": -1, "filename": "collective.blog.feeds-1.0.tar.gz", "has_sig": false, "md5_digest": "75f43d2f932121b5af6bd28646808ba3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12548, "upload_time": "2010-05-16T17:32:47", "url": "https://files.pythonhosted.org/packages/1d/33/9a1d5fa5d8a38d296d109737a3f0e8fedd9cf9e33244179dc96e4fe6a755/collective.blog.feeds-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "6614c0c46f96472bea69a886bbeb55f4", "sha256": "45c32747a91a2acfcd35edc22aac7fd1cd6f548a71bb946f40631fd7b8246ee3" }, "downloads": -1, "filename": "collective.blog.feeds-1.1.tar.gz", "has_sig": false, "md5_digest": "6614c0c46f96472bea69a886bbeb55f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35497, "upload_time": "2010-06-05T11:09:32", "url": "https://files.pythonhosted.org/packages/74/29/42fb6b3ecad109bae2ac1402509bebb0fb09fc3c68a978a8da3568f4a1a6/collective.blog.feeds-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "147f2cfd6ff025783b8f4fb7b0094f0c", "sha256": "65e15f0457b13e2647fd95877185b9d256e1be8b701e25e7ef7799301a5f6254" }, "downloads": -1, "filename": "collective.blog.feeds-1.2.tar.gz", "has_sig": false, "md5_digest": "147f2cfd6ff025783b8f4fb7b0094f0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35550, "upload_time": "2010-06-30T11:08:19", "url": "https://files.pythonhosted.org/packages/4f/80/f931a53bdca45878a274a3fa7ccbb89a762d7babbd346535cfb977242804/collective.blog.feeds-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "075c5f4e86e12a6e6800385ca78c1189", "sha256": "7feb911ba5f3de4ea73488c1fee7da230a0ebe00af07fd6253a8de4fc00840f0" }, "downloads": -1, "filename": "collective.blog.feeds-1.3.tar.gz", "has_sig": false, "md5_digest": "075c5f4e86e12a6e6800385ca78c1189", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35587, "upload_time": "2010-10-27T15:37:51", "url": "https://files.pythonhosted.org/packages/99/45/eab7dec99a1a74fce69994eca6866e3d9d7b8b318108ca9db1a2f0253c1c/collective.blog.feeds-1.3.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "5090f934d45895d9fc074c4a298c6bed", "sha256": "0d550c928005ac9bbc10a2dbb3f158e338ea9eccf3fb93d3e5524550e9962b6f" }, "downloads": -1, "filename": "collective.blog.feeds-2.0.zip", "has_sig": false, "md5_digest": "5090f934d45895d9fc074c4a298c6bed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46722, "upload_time": "2013-05-26T17:48:44", "url": "https://files.pythonhosted.org/packages/98/d0/e401569b2f34362c2262bd598348f99ce833fb3270de60ddd4d5d22f8de9/collective.blog.feeds-2.0.zip" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "249b27cc8550023d49114a10ea6a572a", "sha256": "07aea04007c391d8c738dae5da3efa87ddd406ef6a2c40547bfd8afd5240a4d5" }, "downloads": -1, "filename": "collective.blog.feeds-2.1.zip", "has_sig": false, "md5_digest": "249b27cc8550023d49114a10ea6a572a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47530, "upload_time": "2013-05-27T10:02:43", "url": "https://files.pythonhosted.org/packages/43/25/1e2e82ce25724db82b6a29531da5306adf8552fc20d785f04242a1f27bf9/collective.blog.feeds-2.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "249b27cc8550023d49114a10ea6a572a", "sha256": "07aea04007c391d8c738dae5da3efa87ddd406ef6a2c40547bfd8afd5240a4d5" }, "downloads": -1, "filename": "collective.blog.feeds-2.1.zip", "has_sig": false, "md5_digest": "249b27cc8550023d49114a10ea6a572a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47530, "upload_time": "2013-05-27T10:02:43", "url": "https://files.pythonhosted.org/packages/43/25/1e2e82ce25724db82b6a29531da5306adf8552fc20d785f04242a1f27bf9/collective.blog.feeds-2.1.zip" } ] }