Author: JCU eResearch Centre


        .. contents::


.. image::
   :align: right

.. image::

`collective.spaces` is a simple way of creating mini-sites within the Plone
CMS, with each mini-site based on a fully-customisable template.  
This product deploys a light-weight Dexterity-based content type
(called a ``Space``) within Plone and provides various additions that would
be useful in a self-managed, collaborative environment.  For instance:

* Ability for users to self-create Spaces
* Each Space appears as a sub-site
* Customisable logo per-Space
* Ability for site administration to customise a template used for new Spaces

What this offers

* Simple Dexterity-based content type
* Web-based forms built using ```` and friends
* Leverages existing Plone tech (such as authentication, INavigationRoot and
  Dexterity behaviours)
  on offer.
* Other options (such as ``collective.lineage``) provide unnecessary features 
  or else introduce extra dependencies

Use Case (aka when-to-use-this)

#. Desire to allow various groups of users to collaborate but without
   administrative overhead/intervention
#. Users should be able to create new sub-sites at the Plone root, without
   the need for administrative intervention
#. Each workspace should be able to be self-managed
#. Each workspace can be allowed limited customisation
#. Workspaces should be all contained within a single Plone site
#. Desire for a template to be easily customisable, with arbitrary content
   attached within Plone.



``collective.spaces`` is compatible with recent version of Plone and is 
tested with Plone 4.2 and Dexterity 1.2.1.  Add this egg to your Plone
instance in your buildout like so -- it's highly recommended that
you utilise a Known Good Set (KGS) for pinning versions of the form
libraries and Dexterity::

    extends =

    eggs =

ZCML registration is not necessary as this egg includes a 
``z3c.autoinclude`` entry point.  Once you have added this to your buildout,
re-run your ``./bin/buildout`` script.

Activation within Plone

* Once buildout has completed, restart your Plone instance.
* Load and login to your Plone instance, and go to `Add-ons` under `Site Setup`.
* Locate ``collective.spaces`` in the add-ons list and `Activate` it.
* Once complete, notice that:

  * There is `Create new Space` in your personal tools menu
  * A `Space Template` exists at the root of your portal
  * Site Administrators and Managers can manually add `Space` content anywhere

Security defaults

By default:

* All logged-in users (``Authenticated``) have the ability to create new Spaces 
  via the `Create a new Space` form (``/@@create-space``). 
* Only Site Administrators and Managers can manually create Spaces via the
  `Add new` menu. Regular users, including `Contributor` users, cannot do this.

To change these defaults, load the `Manage Access` ZMI page 
(for instance, ``http://localhost:8080/Plone/manage_access``) and change the
roles associated with the relevant ``collective.spaces`` permissions. You can
also use a GenericSetup profile in an extension product to modify these 
permissions (``rolemap.xml`` in your profile).


Whilst this product is opinionated regarding aspects like default security
permissions, a configurator can use the rest of Plone's functionality
to enhance Spaces (and reduce administration overhead). Some examples are:

    Enable user self-registration on Plone or enable
    another authentication mechanism to reduce administrative input needed
    (or both). Intertwining mechanisms like local authentication