= Plone Comments (quintagroup.plonecomments) = [[PageOutline]] Plone Comments is a Plone product developed to improve the site managers and editors experience with standard commenting mechanism in Plone. == Links == * Home page - http://quintagroup.com/services/plone-development/products/plone-comments * Repository - http://svn.quintagroup.com/products/quintagroup.plonecomments/ * Releases - http://plone.org/products/plone-comments/releases * Screencasts: * Watch [http://quintagroup.com/cms/screencasts/plone-comments Plone Comments Screencast] to learn how to install and set up Plone Comments on your buildout-based Plone instance for Plone 3.2 or above. You will also find one of the possible use cases of using Plone Comments Plone add-on included. * Watch [http://quintagroup.com/cms/screencasts/plone-comments/use-cases Plone Comments Use Cases Screencast] to learn about integration of Plone Comments with Plone Captchas, see 2 examples of possible use cases: anonymous and registered users commenting. == Features == Plone Comments allows to: * Notify admin about comment posted * Notify commentator about his comment aproval * Notify author of parent comment about new follow up added * Moderation of comments, approval of comments * Anonymous commenting * Added Name field to comment form, it is required for anonymous comments * Article author can be notified about new comment after the approval by reviewer * List of recent comments for more comfortable moderation * qPloneCaptcha integrated (needs the qPloneCaptcha to be installed) Comments moderation is implemented with involvement of two stage workflow. Comments are created in "private" state and visible only to '''Discussion Manager''' group of users. To differentiate between logged-in (registered) commentators and Anonymous commentators that pretend to be one person or other one, we use Boldness of name. The Comment author is in bold when posted by logged in member. The names provided when posting Anonymously are in plain text. Notification subject control allows to enter custom prefix to distinct notifications coming from different sites. == Installation == === Plone 3, 4 Buildout === If you are using buildout to manage your project, you can do this: * Add quintagroup.plonecomments to the list of eggs to install, e.g.: {{{ [buildout] ... eggs = ... quintagroup.plonecomments }}} * Tell the plone.recipe.zope2instance recipe to install a ZCML slug for this product: add quintagroup.plonecomments to zcml area: {{{ [instance] recipe = plone.recipe.zope2instance ... zcml = quintagroup.plonecomments quintagroup.plonecomments-overrides }}} * Re-run buildout, e.g. with: {{{ $ ./bin/buildout }}} * Restart the Zope server, for example, with the following command in the terminal: {{{ $ ./bin/instance restart }}} * Install quintagroup.plonecomments via ZMI portal_setup. Select quintagroup.plonecomments from the list of available profiles and press Import all steps. {{{ Atention: If you are using a Plone version before 3.1 you need to install "plone.browserlayer":http://pypi.python.org/pypi/plone.browserlayer (which also requires a "GenericSetup":http://pypi.python.org/pypi/Products.GenericSetup version greater than 1.4) in your Plone site. It shows up as Local browser layer support in the Plone Add-on Products Control Panel. }}} === Traditional Zope 2 Instance === To install quintagroup.plonecomments into the global Python environment (or a workingenv), using a traditional Zope 2 instance, you can do this: * Copy '''quintagroup''' folder to your instance ''/lib/python'' directory. * Create a file called '''quintagroup.plonecomments-configure.zcml''' in your instance ''/etc/package-includes'' directory. The file should only contain this: {{{ }}} * Create a file called '''quintagroup.plonecomments-overrides.zcml''' in your instance ''/etc/package-includes'' directory. The file should only contain this: {{{ }}} * Restart the Zope server, for example, with the following command in the terminal: {{{ $ ./bin/zopectl restart }}} == Uninstallation == * To uninstall quintagroup.plonecomments - select quintagroup.plonecomments uninstall profile from the list of available profiles and press Import all steps. == Product Management == After installation of Plone Comments, a new item appears under ''Add-on Product Configuration'': '''qPloneComments''': [[Image(site-setup.png, nolink)]] qPloneComments configuration window consists of 2 Configlets: '''1. Configure qPloneComments''' [[Image(configure.png, nolink)]] it allows: * Turning on/off Moderation * Turning on/off Manager notification * Turning on/off Editor notification * Turning on/off Anonymous Commenting * Configure admin e-mail for notifications * Configure notification subject '''2. Recent comments moderation''' [[Image(recent.png, nolink)]] Includes a list of recent comments for more comfortable moderation. It is possible to see all the recent comment activity and publish or delete comments all together. == Usage == One of possible !UseCases: Moderation is enabled and authors notification is turned on. * New comment posted in private state. * Notification is sent to the emails entered in Plone Comments configlet. * Moderator User with !DiscussionManager role see the comment. * The comment can be deleted or published on modaration stage. * When comment is published notification is sent to Article Editor. == FAQ == === 1. E-mail addresses handling in qPloneComments === '''Question''' Where the e-mail addresses are stored when they are turned on as required? Can you clarify how this works with the e-mail addresses collected in the qPloneComments form. My use case is essentially that I occasionally need to enable site managers to respond via e-mail to the comment authors. '''Answer''' Plone still utilizes the !DiscussionItem from CMFDefault. qPloneComments extends it as a regular !PropertyManager. You can traverse to the comment in question and find all added attributes in properties sheet: {{{ /Plone/[a_document]/talkback/[comment_id]/manage_propertiesForm }}} Inside your script you can use getProperty method to get the property from a !PropertyManager based object (you can check out the !PropertyManager interface in source or with !DocFinderTab). == Future == * Record and expose commentor IP (will be in one of later releases)