[2.0.1 2010-01-18]

  * The old GroupLeader role used to permit users to edit the roles
    in a GroupSpace. In order to better map this role to the new roles
    of collective.groupspace, the migration script now makes sure that the
    GroupAdmin role is also given to any user that used to have the
    GroupLeader role.

    Check out the migration script:

      * GrufSpaces/Extensions/migration.py

[2.0 2009-11-17]

  * Make GrufSpaces just a simple content type that it can be used with

      * collective.groupspace.roles

      * collective.groupspace.workflow

      * collective.groupspace.mail

  * The migration script to collective.groupspace is now available in 
 
      * GrufSpaces/Extensions/migration.py

  * Backup you Data.fs before the migration. Make sure to keep a copy
    of any workflow you may have customized.

  * See the migration script for migration instructions

  * The migration is repeatable so it is easy to customize and run multiple
    times until everything works perfectly

  * The migration has the following steps:

      * Reinstall GrufSpaces

      * Refresh the catalog

      * Remove any old groupspace portlets

      * Remove the GrufSpaces configlet

      * Remove the GrufSpaces property sheet

      * Remove the GrufSpaces catalog indices  

      * Remove the old GrufSpaces roles: GroupVisitor, GroupMember and GroupLeader

      * Replace any existing local roles with roles stored in the user_roles and
        group_roles attributes.

      * Install the local workflows in existing GroupSpaces

      * Update the role mappings, so the local workflows are being applied

      * Refresh the catalog

[1.1.1 2008-01-16]

  * Fix : we can send a mail without Manage properties permission using PAS

  * GroupAdmin can assign all kinds of local roles except Manager

  * When project members are modified,
    project subobject indexes relative to security and project users are updated

  * GrufSpace is now an ATFolder, not an OrderedBaseFolder

  * refactored portlet templates as they are prettiest, and plone 2.5 compliant

  * only favorite types are shown on group news portlet

[1.0.1 - 2007-08-21]

  * added translations translate group roles in roles form

  * add aliases on groupspace listing view

  * display document actions on groupspace listing view

[1.0 - 2006-12-26]

  * Show email in user search of roles form using getProperty

  * Warning when no email set in preferences

  * Todd Graham contributed some bug fixes and a migration howto

    - Migration howto and fixes

    - Email form gets a default action, so it works in Safari

    - Email form cancel button takes you to GroupSpace listing

    - Rename after creation

    - Portlets pointing to content without view

  * Mauro Moura Gomes Lopes and Bruna Diirr Gon�alves da Silva
    provide i18n files for brazilian portuguese

[0.7.2 - 2006-11-17]

  * Uncommented installation of property for portal_groupdata in Install.py.
    It causes a problem with Plone 2.5.1:

    #gd_tool = getToolByName(self, 'portal_groupdata')
    # Prepare group data tool for delegated group member management
    #if not hasattr(gd_tool, 'delegated_group_member_managers'):
    #    gd_tool._setProperty('delegated_group_member_managers', (), 'lines')

    If you need group member management delegation in Plone 2.1.x, uncomment
    these lines.

  * Uninstall of 'delegated_group_member_managers' property. Otherwise Plone
    group management remains unusable even after uninstallation of GrufSpaces
    in Plone 2.5.1. Thanks to Eric BREHAULT for submitting the bug report.

[0.7.1 - 2006-10-31]

  * Moving experimental skin layers to a separate directory

[0.7 - 2006-10-31]

  * Spanish translation added thanks to Gustavo Gonzalez <gusti99@integra.com.py>

  * Fix installation problem with Plone 2.5 related to rolesSeeUnpublishedContent

  * Added a groupspaces_ajax layer thanks to Florent Carlier <florent.carlier@univ-lemans.fr>

  * Now the GroupSpace content type is based on Archetypes

    You need to run the migration. Add and run the following External Method:

    id:migrate_grufspaces
    Title: Migrate GrufSpaces
    Module name: GrufSpaces.Install
    Function name: migrate

  * When assigning a role to a GroupSpace member, you can choose to send an
    email notification to the member by activating the checkbox "Send email
    notification".

  * added show_id method to GroupSpace for forward compatability to Plone 2.5

  * GroupVisitor doesn't need to see box.

  * Explicitly give GroupAdmin and GroupLeader permissions to avoid having
    to make them GroupMember as well.

  * Remove unused filter_groupspacemembers.py

  * When upgrading to the new version of GrufSpaces, it needs to be
    documented that the catalog needs to be refreshed (not reindexed)
    because the API and Indices have changed. (See Changes)

  * In the upgrade notes, also note that the following methods have
    disappeared:

    * listGroupSpaceMemberUsers (Now listGroupSpaceMemberIds)

    * listGroupSpaceVisitorUsers (Now listGroupSpaceVisitorIds)

  * Note that GroupAdmins and GroupLeaders are treated like GroupMembers,
    and that they don't need to be made GroupMembers any more.

  * listGroupSpaceMemberIds method now produces not only GroupMembers, but also
    GroupAdmins and GroupLeaders. This way, GroupAdmins and GroupLeaders
    are considered as GroupMembers. As a consequence:

    * GroupAdmins and GroupLeaders see the last changes in the portlet

  * Removing listGroupSpaceMemberUsers, which is replaced by
    listGroupSpaceMemberIds. Catalog is changed and refreshed.

  * Removing listGroupSpaceVisitorUsers, which is replaced by
    listGroupSpaceVisitorIds. Catalog is changed and refreshed.

  * Added GroupAdmin and GroupLeader in getGroupSpaceEmails.py, so that
    the GroupAdmin and GroupLeader also get email messages sent
    through GroupSpaces

  * Remove unused method listMembersForDisplay on GroupSpace

  * Remove GrufSpaces configlet when uninstalling

  * Pass default_charset to mail template

  * Fix permission check in validate_GroupSpace_email.vpy

  * Start of work areas created automatically as GroupSpace infrastructure (MR)

    * use_groupspace_areas property added upon installation

    * prefs_grufspaces_form now shows option to create groupspace areas

    * add_groupspace_services optionally adds groupspace areas

[0.6 - 2005-11-05]

  * Tested with PlonePAS 0.4.1 under Plone 2.1.1

  * Now depending on GroupUserFolder 3.0 upwards

    * Now depends on the getUserName method in GRUFUser.py in GroupUserFolder,
      to return the unprefixed group name

  * Dropping folder_localrole_form_plone1.pt

  * Removing addGroupMember and removeGroupMember methods

  * Split removeFromCollabRole method into removeCollabRoleFromUser and
    removeCollabRoleFromGroup

  * Split assignToCollabRole method into assignCollabRoleToUser and
    assignCollabRoleToGroup

[0.51 - 2005-10-25]

  * Removed implementation of listFolderContents, which was protected by
    Access Contents Information. (MR)

  * Removed implementation of __init__ and edit (MR)

  * Removed GroupSpace edit permission (MR)

  * No more implementation of getGroupId and getMemberId (MR)

  * Remove _isGroupId method (MR)

  * Remove _sendMailToGroup method (MR)

  * Remove canSendMailToGroup method (MR)

  * Remove listUserIdsInGroup method (MR)

  * Removing getUsersInGroup script (MR)

  * Use validate_title, and remove validate_GroupSpace_edit.vpy (MR)

  * remove listGroupSpaceContentTypes (MR)

  * Remove getGroupSpaceId index and method (MR)

  * Remove GroupSpace_add_groups.py (MR)

  * Remove GroupSpace_remove_members.py (MR)

  * GroupSpace_localrole_edit.py (MR)

  * Remove GroupSpace_Member_form.pt (MR)

  * Remove GroupSpace_Member_form.pt.metadata (MR)

  * GroupSpace_membersForm.pt (MR)

  * GroupSpace_membersForm.pt.metadata (MR)

  * Use folder_listing macro in GroupSpace_listing.pt (MR)

  * use toLocalizedTime instead of toPortalTime (MR)

  * correction to skin layer installation (MR)

  * Fix bug in GroupSpace_rolesForm.cpt, making it impossible to assign roles
    to groups. (MR)

  * getCollabUsers refactoring (MR)

  * use portal_membership where appropriate (MR)

  * Added a comment on a workflow issue in the Readme.txt. A change to
    the Plone workflow is needed to completely close a GroupSpac. Thanks
    to Johannes Graumann for the feedback. (MR)

[0.5 - 2005-10-05]

  * Extending permissions for Plone 2.1 (Thanks to Marco Stadler for adding
    the necessary permissions to the workflow) (MR)

  * Fixed news and summary templates for Plone 2.1 (Thanks to Thierry Benita) (MR)

[0.4 - 2005-07-29]

  * Uninstall portlets correctly (MR)

  * Removed "Create new group" button. (MR)

  * search_term split into user_search_term and group_search_term (MR)

  * user search possible when no search results (MR)

  * translate validator error messages (MR)

  * functional tests work with AT sites as well as Plone sites (MR)

  * extended user and group search tests (MR)

  * Preparation for PloneSelenium (MR)

    - Adding Functional Test Python Script in grufspaces layer (MR)

    - Using PloneInstallation (MR)

    - Adding Functional Test action to PloneSelenium if existing (MR)

    - Added config.py (NG)

  * Added getCurrentGroupSpace method (MR)

  * Make Installation work with Plone 2.1 (MR)

  * Fix bug with LDAP. Use getProperty('email') to get email instead .email. (CL)

  * Check "Add group" permission" in GroupSpace_rolesForm on "Create new group"
    button. (MR)

  * Added method "listVisitorIds" to complement "listMemberIds" (MR)

  * Added portlet for visitors (MR)

  * Added method and index listGroupSpaceVisitorUsers (MR)

  * Added GroupVisitor, GroupMember, GroupAdmin and GroupLeader to
    portal_properties/navtree_properties/rolesSeeUnpublishedContent
    so they can see unpublished GroupSpaces  (MR)

  * i18n (MR)

  * Installing default permissions for GroupSpace roles (MR)

  * Fixed a call to manage_setLocalRoles using a tuple instead of
    a list, which can make it impossible to add content to a GroupSpace. (MR)

  * Readme extended with a section on how to adapt the Plone workflows
    for closed GroupSpaces. (MR)

  * Force reindex listGroupSpaceMemberUsers (CL)

[0.3 - 2004-06-14]

  * Release

[0.2 - 2004-05-13]

  * Implementation of the CollabSpace Interface as defined in
    PloneGroupSpace by Helmut Merz:

    http://cvs.sourceforge.net/viewcvs.py/collective/PloneGroupSpace/

  * Changed the add permission to "GrufSpaces: Add GroupSpaces" from "Add Portal
    Folders", so that we can better control who is allowed to add
    GroupSpaces.

  * New role tab for adding new members and groups in a controlled
    way without being Manager or also having the role that you assign
    The code for this tab was taken over from the PloneGroupSpace product

    - The 'GrufSpaces: Assign GroupSpace Roles' permission allows the use
      of the "role" tab to change local roles for users and groups

    - The sharing tab is protected with the same permission now. It is still
      usefull to manage local roles that are not used for GrufSpaces.

  * Integrated a "Mail to group" feature, which consists of a page where
    you can type in a message that you can then send by email to all group
    members.

    - The 'GrufSpaces: Send Mail to GroupSpace Members' permission allows
      sending a mail to GroupSpace members.

    - Adding roles GroupVisitor, GroupAdmin and GroupLeader to the root

  * Added default roles in Install script (MR)

  * We now have the following new roles: (MR)

    - GroupAdmin: Responsible for the Group

    - GroupVisitor: Restricted to read-only activities in the GroupSpace

    - GroupLeader: Responsible for representing the Group to the outside

  * Inheriting GroupSpace from PloneFolder. (MR)

[v0.1 - 2004-03-09]

  * Relase 0.1

[0.0 - 2004-02-25]

  * No more group unmangling for listGroupSpaceMemberUsers index
    Fixing searches in all of the templates to include the groups
    a user belongs to. (MR)

  * The person adding a GroupSpace is not automatically becoming a GroupMember
    An admin is not necessarily interested to work on a GroupSpace he has to
    add (MR)

  * Call add_groupspace_services script during installation of GroupSpace (MR)

  * Adding add_groupspace_services.py script (MR)

    - This script is automatically called when a GroupSpace is created

    - It is responsible for adding additional services to a new GroupSpace

    - This script can be customized in a custom skin

  * Moved GroupSpace out of GRUF into this product (MR)
