============ Installation ============ Installation of Singing & Dancing uses buildout_. If you don't know what buildout is or `how to create a buildout`_, `follow this tutorial`_ first. These instructions assume that you already have a Plone 3.x buildout that's built and ready to run. Singing & Dancing is available as `Python eggs on PyPI`_. To install Singing & Dancing, add it to your buildout by following these steps: 1) Edit your ``buildout.cfg`` file and look for the ``[buildout]`` section. Add an ``extends =`` option in that section like the following:: [buildout] extends = https://svn.plone.org/svn/collective/collective.dancing/buildout-extends/0.8.10.cfg parts = zope2 ... ... Should you already have an ``extends =`` line, add the new line at the end of the other extends files. For Plone 3.2.2, your ``[buildout]`` section might start like this:: [buildout] extends = http://dist.plone.org/release/3.2.2/versions.cfg https://svn.plone.org/svn/collective/collective.dancing/buildout-extends/0.8.7.cfg parts = zope2 ... ... 2) Next, you'll need to add ``collective.dancing`` to the ``eggs`` and ``zcml`` options in your ``[instance]`` section. Which should then look like this:: [instance] ... eggs = ${buildout:eggs} ... collective.dancing zcml = ... collective.dancing 3) Remove all ``additional-fake-eggs`` and ``skip-fake-eggs`` options from your ``[zope2]`` section, if any. (This is so you don't overrride the ones defined in the S&D extends file that we added in step 1.) Processing the message queue ---------------------------- One important thing to note is that S&D usually queues messages in its own message queue before sending them out. You might have noticed that when you send out a newsletter, S&D tells you that it queued the messages. In a production setup, you would normally process the message queue periodically using the built-in Zope ClockServer_. While you're testing, you can visit the *Statistics* screen in the S&D advanced configuration panel and manually clear the queues. If your mail configuration in Plone is set up correctly, you should be sending mail out now. To set up ClockServer to trigger the processing automatically for you, add this stanza to the Zope 2 ``[instance]`` section of your buildout configuration and rerun ``bin/buildout -v``:: zope-conf-additional = # plonesite is your plone path method /plonesite/@@dancing.utils/tick_and_dispatch period 300 user admin password admin # You need your *real* host here host www.mysite.com Or, if your site is behind Apache using a Virtual Host, the zope.conf clock server configuration would be :: zope-conf-additional = # plonesite is your plone path # www.mysite.com your site url method /VirtualHostBase/http/www.mysite.com:80/plonesite/VirtualHostRoot/@@dancing.utils/tick_and_dispatch period 300 user admin password admin This will process the message queue every five minutes. It assumes that your Plone site's ID is ``portal``, that your username and password are ``admin``, and that your site is called ``www.mysite.com``. **Note**: You must not set up this ClockServer on more than one instance. The processing makes sure it's not invoked twice at the same time by using file locking. This file locking won't work if you configure the clock server on two different servers. Once you're done editing your buildout configuration, don't forget to run your buildout again before you start up Zope:: $ ./bin/buildout -v That's it! You can now start up your Zope instance, and then install Singing & Dancing in your Plone site by visiting the *Add-on Products* site control panel. Configuring zope.sendmail to send out messages ---------------------------------------------- Singing & Dancing uses `zope.sendmail`_ to send out its mail. S&D comes with a default configuration for ``zope.sendmail`` in its ``collective/dancing/mail.zcml`` file. This configuration will read SMTP parameters from your Plone site. Be warned however, that this default configuration is not suitable for high-volume newsletters. The aforementioned configuration file contains an example configuration using ``mail:queuedDelivery`` that works much more reliably when dealing with a large number of mails. Troubleshooting --------------- Should the above instructions not work for you, :ref:`contact-us`. **NOTE**: If you're upgrading your buildout from an older version where you included version dependencies of S&D by hand, remove the ``develop-eggs`` directory inside your buildout and re-run buildout. Here's a list of the most common stumbling blocks: - `ValueError: too many values to unpack `_ - `Products/Five/i18n.zcml uses namespace package in configure package directive `_ - Should you see ``ImportError: Module zope.app.component.metaconfigure has no global defaultLayer`` when starting up, make sure you have ``plone.recipe.zope2install`` >= 2.2. You may use buildout's ``versions`` feature to tell it which version to use. .. _buildout: http://pypi.python.org/pypi/zc.buildout .. _how to create a buildout: http://plone.org/documentation/tutorial/buildout/creating-a-buildout-for-your-project .. _follow this tutorial: http://plone.org/documentation/tutorial/buildout .. _Python eggs on PyPI: http://pypi.python.org/pypi/collective.dancing .. _ClockServer: http://plope.com/software/ClockServer/ .. _zope.sendmail: http://pypi.python.org/pypi/zope.sendmail