Author: kiorky


        .. contents::


- based on `quintagroup.portlet.cumulus`_

This package provides 2 new tagcloud based portlets


    * cache (refresh)
    * local path searches enhancements

And for the 'custom portlet':

    * url customization for tag browsing


    * Install "Local Tag cloud (cumulus) portlet" with QuickInstaller.
    * Select Local Tag Cloud (cumulus) portlet from Add portlet drop-down menu.
    * Provide your own values for portlet configuration if needed.
    * Save changes.

Supported Plone version

    * 3.x



.. _quintagroup.portlet.cumulus:
.. _svn:


* `Planet Makina Corpus <>`_
* `Contact us <>`_

.. |makinacom| image::
.. _makinacom:

collective.portlet.cumulus Installation

To install collective.portlet.cumulus into the global Python environment (or a workingenv),
using a traditional Zope 2 instance, you can do this:

 * When you're reading this you have probably already run ::

   ``easy_install collective.portlet.cumulus``. 
   Find out how to install setuptools (and EasyInstall) here:

 * If you are using Zope 2.9 (not 2.10), get `pythonproducts`_ and install it 

       python install --home /path/to/instance

   into your Zope instance.

 * Create a file called ``collective.portlet.cumulus-configure.zcml`` in the
   ``/path/to/instance/etc/package-includes`` directory.  The file
   should only contain this::

       <include package="collective.portlet.cumulus" />

.. _pythonproducts:

Alternatively, if you are using zc.buildout and the plone.recipe.zope2instance
recipe to manage your project, you can do this:

 * Add ``collective.portlet.cumulus`` to the list of eggs to install, e.g.::
    eggs =
 * Tell the plone.recipe.zope2instance recipe to install a ZCML slug::
    recipe = plone.recipe.zope2instance
    zcml =
 * Re-run buildout, e.g. with::
    $ ./bin/buildout
You can skip the ZCML slug if you are going to explicitly include the package
from another package's configure.zcml file.

Detailed documentation

The local renderer and portlet objects

Adding some content for testing searches

    >>> self.setRoles(('Manager', ))
    >>> self.portal['front-page'].edit(subject=['global', 'tags'])
    >>> if1 = self.folder.invokeFactory('Folder', id='f1')
    >>> if2 = self.folder.invokeFactory('Folder', id='f2')
    >>> f1 = self.folder[if1]
    >>> f2 = self.folder[if2]
    >>> d1 = f1.invokeFactory('Document', id='blog-entry1')
    >>> d2 = f1.invokeFactory('Document', id='blog-entry2')
    >>> d3 = f2.invokeFactory('Document', id='blog-entry3')
    >>> d4 = f2.invokeFactory('Document', id='blog-entry4')
    >>> f1[d1].edit(subject=['blog', 'tags'])
    >>> f1[d2].edit(subject=['foo', 'bar'])
    >>> f2[d3].edit(subject=['toto', 'titi'])
    >>> f2[d4].edit(subject=['toto', 'tutu'])

Looking for our adapter to be in place

    >>> from collective.portlet.localcumulus.interfaces import ILocalTagsRetriever
    >>> from collective.portlet.localcumulus import catalog
    >>> data = catalog.DummyData()
    >>> data.refreshInterval = 1

This adapter takes a context and an Assigment as 'data' attribute

    >>> retriever = ILocalTagsRetriever(f1)
    >>> retriever
    <collective.portlet.localcumulus.catalog.LocalTags object at ...>

Trying to get the local tags of the f1 folder