collective.spaces

HomePage: http://github.com/collective/collective.spaces

Author: JCU eResearch Centre

Download: https://pypi.python.org/packages/source/c/collective.spaces/collective.spaces-1.1.zip

        .. contents::

Introduction
============

.. image:: https://eresearch.jcu.edu.au/site-resources/spaces-logo.png
   :align: right

.. image:: https://travis-ci.org/collective/collective.spaces.png?branch=master
    :target: https://travis-ci.org/collective/collective.spaces

`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 ``plone.app.z3cform`` 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.

Installation
============

Buildout
--------

``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::

    [buildout]
    extends =
        ...
        http://good-py.appspot.com/release/dexterity/1.2.1?plone=4.2b2

    ...
    
    [instance]
    ...
    eggs =
        collective.spaces

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).

Suggestions
===========

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:

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