{ "info": { "author": "Alec Mitchell", "author_email": "apm13@columbia.edu", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Plone :: 4.1", "Framework :: Plone :: 4.2", "Framework :: Plone :: 4.3", "Framework :: Zope2", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Overview\n********\n\n`plone.contentratings` is an add-on package for the Plone content\nmanagement system. It extends the Zope3 package `contentratings` to\nprovide through the web configurable rating categories for all CMF\ncontent. It AJAX-ifies the rating UI using KSS actions.\n\n\nDetailed Documentation\n**********************\n\n\nUsing `plone.contentratings`\n============================\n\nAfter making the package `plone.contentratings` and its dependencies\navailable to your Zope instance and restarting Zope, you should have a\n\"product\" called `contentratings` available in the Plone Quick\nInstaller (the `Add-on Products` control panel). Installing this\n\"product\" will add a new control panel to Plone called `Ratings`.\nThis panel provides two configuration sections. One for associating\nparticular content types with rating categories, and another for\nadding and managing rating categories.\n\n\nAssigning Ratings\n-----------------\n\nOn the `Rating Assignments` tab, you can choose a portal type and then\nselect the rating categories to associate with the type in the\nmulti-select below the type selector. Once you have selected the\ncategories, press the save button before selecting another type.\n\nOnce this is done, a rating UI will appear on the view for the\nselected type. This ui will allow setting and viewing ratings in all\nthe selected categories. The order in which the categories appear\nwill be the same as the order in the multi-select, and is determined\nby the order specified in the rating category configuration (see the\nnext section).\n\nYou can disable ratings on an individual content object on the edit\nform for that content object. Just uncheck the `Enable Ratings`\ncheckbox on the `Settings` tab.\n\n\nManaging Categories\n-------------------\n\nThe `Manage Categories` tab of the control panel allows you to create\ncustom categories, and modify or remove categories that you have\ncreated. Initially, there will be no local categories, only `Acquired\nCategories`. These are categories which are not defined in the control\npanel but in python packages/products on the filesystem. The\nacquired categories cannot be edited.\n\nTo add a new category, click the `Add Local Categories` button. Then\nfill in a title for the category (this is the title that will appear\nin the rating UI). All other fields are optional. You may enter a\ndescription (primarily for documentation purposes). You can enter\nTALES expressions for determining when users can and cannot view\nor set ratings in the category. If left blank all users will\nbe able to both view and set ratings. To use permissions to\nrestrict the ratings, use an expression like::\n\n python: checkPermission('View', context)\n\nThe order in which the categories are displayed in the UI is\ndetermined by the order attribute which should be an integer. The\nview setting determines how the rating should appear in the UI.\nPython products can register rating views to provide different look\nand feel or behavior. Instructions for creating and registering new\nviews can be found in the documentation of the `contentratings`_\npackage. If you use a completely custom class for your view, make\nsure it implements the `contentratings.browser.interfaces.IRatingView`\ninterface and is registered for the\n`contentratings.interfaces.IUserRating` interface, which will ensure\nthat it appears in the listing.\n\nYou can remove custom categories by checking the box next to the\ncategory and clicking the remove button. You can of course edit any\nof the category attributes. You must click the `Save` button to\nrecord your changes (including removing categories).\n\n**Notes On Category Names**: Internally, categories are registered\nand accessed using unique names. For TTW created categories, these\nnames are generated from the title using a mechanism similar to that\nused by Plone to generate ids for content objects. This has a couple\nof consequences. If you create a category, rate content using that\ncategory, and then remove the category, the ratings will still be\nstored on the content under the original category name. So if\nyou later create a \"new\" category with the same title (and hence\nthe same name), all content previously rated under the category\nwill still have rating information attached. This makes it very\neasy to undo a mistaken removal of a category, but may cause some\nunexpected behavior.\n\nAdditionally, this also makes it possible to override a category\ndefined globally by creating one with an identical name. However,\nthere is no guarantee that the names of globally defined are related\nto their titles, so it's not always obvious how to do this, nor is\naldoing this recommended. You may end up with two categories with the\nsame title , differentiated only by their order, which is likely to\nlead to confusion when assigning categories.\n\n\nAdvanced Topics\n===============\n\nNotes for Developers\n--------------------\n\nCreating global categories and custom rating views should be a\nstraightforward process for developers who have read the\n`contentratings`_ documentation. There are a few special things to\nnote when developing custom rating behavior for Plone.\n\nIf you want a custom global categories to be available in the control\npanel, it must be registered for the\n`Products.CMFCore.interfaces.IDynamicType` interface. Also, only\ncategories providing the `contentratings.interfaces.IUserRating`\ninterface will appear in the control panel (which means that they must\nuse a storage factory implementing `IUserRating`). If you register a\ncategory for an interface specific to your type(s), then it will\nappear in the UI on any content implementing that interface,\nwill not appear in the control panel configuration, and will not\nrespect the `Enable Ratings` checkbox on content objects.\n\nIf you want to implement a custom `Rating Manager` for your content\ntypes (which presumably also implement IDynamicType), you should\ninherit from the `PloneRatingCategoryAdapter`, rather than the\nstandard `RatingCategoryAdapter` in `contentratings`_. Without the\nbehaviors defined in this class, any TTW categories assigned to types\nusing the custom rating manager are likely to break or not appear.\n\n\nLocal Configuration\n-------------------\n\nIt's possible to install a `LocalAssignmentUtility` (from\n`plone.contentratings.assignment`) in any local site manager within a\nCMF site. When this is done, the `@@contentratings-controlpanel` view\ncan be used on that local site. When changes are made in the local\ncontrol panel, they will affect content within that local site.\n\nWithin a local site, the `Acquired Categories` section of the `Manage\nCategories` tab will contain both global categories and categories\ndefined in site managers below the current site (e.g. at the portal).\nThese cannot be edited, but they can be overridden (see the\n**Notes On Category Names** section above).\n\nInstalling the utility in a local site manager above the Plone root,\nmust be done programatically for now. The promising `plone.localconf`\npackage may soon provide a generic mechanism and UI for such\ninstallations.\n\n\n.. _contentratings: http://pypi.python.org/pypi/contentratings/\n\n\nTo Do\n======\n\n* Add mechanism to make it easy to create indexes for specific aspects of\n rating categories (e.g., (avg rating, number of ratings), users who\n have rated an object, .... This probably needs some infrastructure\n support in Plone (e.g. a more flexible implementation of the\n IIndexableObjectWrapper stuff).\n\n* Aggregate statistics across multiple rating categories and a user\n interface for displaying them. This probably requires some support\n in the underlying contentratings package, and may be best left to\n individual applications using this infrastructure.\n\n* Replace KSS with jQuery.\n\n* Replace our use of the long deprecated queryNextSiteManager from\n zope.app.component.\n\n\nHISTORY\n=======\n\n1.2.1 (2017-03-15)\n----------------\n\n- Replace KSS with JQuery.\n (Note: there is an upgrade step to add the new javascript to the JS registry.)\n [davisagli]\n\n\n1.1 (2013-09-20)\n----------------\n\n- Cleanup. Compatible with Plone 4.1, 4.2 and 4.3. [maurits]\n\n- Added italian translation [keul]\n\n- Fixes to i18n support (prefer new ids instead of full description) [keul]\n\n- Added translations for the globally defined rating categories [keul] \n\n- Accessibility fixes: display rating value when focus is put on rating icons [keul]\n\n1.0.1 (2012-06-04)\n------------------\n\n- Correct version dependency for contentratings. [alecm]\n\n1.0 final (2011-08-21)\n----------------------\n\n- Explicitly include CMFCore permissions in configure.zcml for Plone 4.1\n compatibility. If Plone 3 compatibility is to be maintainted include\n CMFCore entirely. [raphael]\n\n1.0 rc3 (2011-05-12)\n--------------------\n\n- Fix z3c.autoinclude config.\n\n1.0 rc2 (2010-11-28)\n--------------------\n\n- Bring back Plone 3 support by removing dependence on new CMFCore interface.\n [alecm]\n\n1.0 rc1 (2010-08-31)\n--------------------\n\n- Add indexing of average rating and users that have rated content.\n [alecm]\n\n- Added Spanish and Czech translations.\n [dukebody, macagua]\n\n- Added uninstall profile.\n [alecm]\n\n1.0 beta2 2009-07-06\n---------------------\n\n- Added auto-save on type change in control panel (disabled due to KSS\n bug).\n [alecm]\n\n- Added fixes for KSS issues.\n [alecm]\n\n- Added missing metadata.xml and made setup.py read out it's version.\n [saily]\n\n- Added german translations.\n [saily]\n \n- Restructured and updated HISTORY.txt.\n [saily]\n\n1.0 beta - 2008-05-10\n---------------------\n\n- A completely new architecture for defining and storing ratings. Introduces \n the concepts of rating categories and rating views.\n\n0.2 beta - 2008-05-10\n---------------------\n\n- A bugfix release with many improvements from 0.1. This package is superseded \n by version 1.0 which has a completely new architecture though it should be \n backwards compatible.\n\n0.1 - Released\n--------------\n\n- Initial package structure.\n [alecm]", "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/plone.contentratings", "keywords": "plone ratings,dexterity,behaviour,behavior", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "plone.contentratings", "package_url": "https://pypi.org/project/plone.contentratings/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/plone.contentratings/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/collective/plone.contentratings" }, "release_url": "https://pypi.org/project/plone.contentratings/1.2.1/", "requires_dist": null, "requires_python": null, "summary": "Plone support for the contentratings package", "version": "1.2.1" }, "last_serial": 2708061, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "55e7399f8075aaf41fa2983f1de13a12", "sha256": "00d23871e27819a4c6c0725815638a6965f5218527734a490610bef384cb33cd" }, "downloads": -1, "filename": "plone.contentratings-1.0.zip", "has_sig": false, "md5_digest": "55e7399f8075aaf41fa2983f1de13a12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73188, "upload_time": "2011-08-22T01:09:40", "url": "https://files.pythonhosted.org/packages/30/92/279b9e49633f67bf3a8a9b7bc6a83b3f2900f81435f0f799dfd5ad47eafc/plone.contentratings-1.0.zip" } ], "1.0-beta1": [ { "comment_text": "", "digests": { "md5": "1a409bc8a9ba522a43f6ca3f5cb45ef4", "sha256": "422977b0946d7b69f5ce7ac05c81163f97130c60e2c8809b74175e5a9cba8dc3" }, "downloads": -1, "filename": "plone.contentratings-1.0_beta1-py2.4.egg", "has_sig": false, "md5_digest": "1a409bc8a9ba522a43f6ca3f5cb45ef4", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 63974, "upload_time": "2008-05-11T13:50:05", "url": "https://files.pythonhosted.org/packages/75/4a/9be87fdb531a5db22f0c1b07bc7f8dc7604b8a0d7d8a8527697112995e32/plone.contentratings-1.0_beta1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "73bfb20be24a776469d88d6199f407b3", "sha256": "dead1d4f87c79b22bce26794f1933e25bc5096ec2598bbe840034e626a08bf0e" }, "downloads": -1, "filename": "plone.contentratings-1.0-beta1.tar.gz", "has_sig": false, "md5_digest": "73bfb20be24a776469d88d6199f407b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32820, "upload_time": "2008-05-11T13:50:03", "url": "https://files.pythonhosted.org/packages/4b/b0/3ec8c10bc5cd092effb6a0c66658b95bca246ef5ba627219ad39d0cbd079/plone.contentratings-1.0-beta1.tar.gz" } ], "1.0-beta2-1": [ { "comment_text": "", "digests": { "md5": "955e47e61418437f808a8d610ccec730", "sha256": "abae972cc50d83c3d7181875bc1b56408bd383659d8f848ce543fac5e5fa1ec2" }, "downloads": -1, "filename": "plone.contentratings-1.0-beta2-1.tar.gz", "has_sig": false, "md5_digest": "955e47e61418437f808a8d610ccec730", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36797, "upload_time": "2009-07-06T16:58:10", "url": "https://files.pythonhosted.org/packages/f5/49/3d04ef56f24148d417d03cdce01fea40f67d60573670679fe841a8a3a96b/plone.contentratings-1.0-beta2-1.tar.gz" } ], "1.0-rc1": [ { "comment_text": "", "digests": { "md5": "68e9121e5defc6ae057764a0588b7d41", "sha256": "53e5fc6faaef02ba002c222a3c9592ccab9ce7bceb4776f25b67778ce348f265" }, "downloads": -1, "filename": "plone.contentratings-1.0-rc1.zip", "has_sig": false, "md5_digest": "68e9121e5defc6ae057764a0588b7d41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71831, "upload_time": "2010-09-01T04:37:18", "url": "https://files.pythonhosted.org/packages/e7/00/6e6287c54ba1ca1c40af0c1ab97c10ff20a70d7607591f706ce778a0c3b2/plone.contentratings-1.0-rc1.zip" } ], "1.0-rc2": [ { "comment_text": "", "digests": { "md5": "5918a1bfc519c78ed76e1c919d31755b", "sha256": "f76ff87130d06a41ddde9d9c60b5c0677788ca46c88f11fe123f2e4b4f1f73b0" }, "downloads": -1, "filename": "plone.contentratings-1.0-rc2.zip", "has_sig": false, "md5_digest": "5918a1bfc519c78ed76e1c919d31755b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71963, "upload_time": "2010-11-29T05:27:48", "url": "https://files.pythonhosted.org/packages/3e/60/2781791bb42e886138fa1ad1c9c5e888c6bddf4c29144ef2414cd89d614e/plone.contentratings-1.0-rc2.zip" } ], "1.0-rc3": [ { "comment_text": "", "digests": { "md5": "013e9c59738970ca8f6759400274e22b", "sha256": "72d3e7583888016b69e51e83379c5efe3c41c0b1a97b587e9845162fb1d222dd" }, "downloads": -1, "filename": "plone.contentratings-1.0-rc3.zip", "has_sig": false, "md5_digest": "013e9c59738970ca8f6759400274e22b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72007, "upload_time": "2011-05-13T01:16:31", "url": "https://files.pythonhosted.org/packages/61/e2/5d3235881c73828967e7d148bc62577a4640bdea254a6594b77c96bc1357/plone.contentratings-1.0-rc3.zip" } ], "1.0.1-2": [ { "comment_text": "", "digests": { "md5": "487dd28db85d05a94aed38e87e0169bc", "sha256": "63d3d2ca9fa20d0da66f135d33aca0cf98777201db3c410baede746c75509336" }, "downloads": -1, "filename": "plone.contentratings-1.0.1-2.zip", "has_sig": false, "md5_digest": "487dd28db85d05a94aed38e87e0169bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69175, "upload_time": "2012-06-06T15:59:02", "url": "https://files.pythonhosted.org/packages/0d/5a/0e8f2327ebf6b10121c88c81c1f916d42d7f70237036e6a26443abddc4eb/plone.contentratings-1.0.1-2.zip" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "f579a15b231ff94d4656c7821dbe9bc2", "sha256": "e5b3e9487b88663af07b914ad9bd0a324ff2fb596dc2e6555c6fd0df5241ffd3" }, "downloads": -1, "filename": "plone.contentratings-1.1.zip", "has_sig": false, "md5_digest": "f579a15b231ff94d4656c7821dbe9bc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82394, "upload_time": "2013-09-20T21:55:42", "url": "https://files.pythonhosted.org/packages/9c/18/f686b486ef80f13e75fc19544f4f08725f865bf41271b221c3cdd1bdd32a/plone.contentratings-1.1.zip" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "d7bc7c69a139bfd403c64a9bc4a6c1b9", "sha256": "26749fbb5f4126f12374d356a6f5650b69948ce581f64651b65b303575687de8" }, "downloads": -1, "filename": "plone.contentratings-1.2.1.zip", "has_sig": false, "md5_digest": "d7bc7c69a139bfd403c64a9bc4a6c1b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76495, "upload_time": "2017-03-15T17:53:55", "url": "https://files.pythonhosted.org/packages/60/a9/0ffcb6464be9614b077f4a90b3d3032ae129870ab90927e670ee12f8fc5d/plone.contentratings-1.2.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d7bc7c69a139bfd403c64a9bc4a6c1b9", "sha256": "26749fbb5f4126f12374d356a6f5650b69948ce581f64651b65b303575687de8" }, "downloads": -1, "filename": "plone.contentratings-1.2.1.zip", "has_sig": false, "md5_digest": "d7bc7c69a139bfd403c64a9bc4a6c1b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76495, "upload_time": "2017-03-15T17:53:55", "url": "https://files.pythonhosted.org/packages/60/a9/0ffcb6464be9614b077f4a90b3d3032ae129870ab90927e670ee12f8fc5d/plone.contentratings-1.2.1.zip" } ] }