Add a new group implementation for the groups managed directly by a Silverpeas application (and not by the backoffice). Add a service with which the implementation of a Silverpeas component can use to manage such groups.
In the Silverpeas backoffice, the two types of user groups are now distinguished. Actions on application groups are now forbidden (and hidden) because those groups are managed by the applications that create them. When rendering the groups (either in the backoffice or in the user panel), the groups managed by a user domain are rendered first, then the groups managed by applications.
Add a mechanism for admin to create explicitly a community space by keeping the Silverpeas component that motorizes a space as a community space. The community space is created like any collaborative space but with additional operations: the space is marked as a community one and for doing it has some of its properties set with a predefined value (like the access rights inheritance blocked). Then the creation of the component instance dedicated to manage the community membership is invoked.
To allow this, a new property, isCommunitySpace, is added to the SpaceInst class and a new interface, CommunityFactory, is defined. This interface has to be implemented by the already existing Silverpeas commponent Community (defined in the Silverpeas Components project) so that Silverpeas Core is decoupled to any code that motorize the community feature. This feature is enabled if and only if there is an implementation of the CommunityFactory interface.
Introduce both CommunityMembersGroup and CommunityMembershipService to allow the application dedicated to work on communities to ease their administrative tasks with groups of community members and with community spaces.
Update SQL and DAO to work with the additional fields for space and groups: respectively 'isCommunitySpace' and 'spaceId'.
Remove the property UseCommunityManagement and the code using it. It isn't anymore possible to add explicitly a user in a community members group in the backoffice.
Copy the set of sorted subspaces before passing them to the caller. So, the returned set can be iterated while the original set is modified at the same time.
Implements the CommunityFactory to constructs an instance of the Community application to manage the members of a community space. The name and the description of a new community instance are set automatically by using the l18n bundle of the app.
Refactor CommunityOfUsers to use the new CommunityMembershipService service.
The Community component isn't anymore visible among others Silvepreas components. Indeed, this component is to be directly instanciated by Silverpeas Core when a community space is created.
Add a workaround to avoid a group of members of a community to be removed from the Reader role of its community: when an admin or space manager remove such a group, it is automatically added again to the Reader role.
The bug: When a publication has a content in only one single language and this content is modified by a user with another language set, the content is then saved in the language set instead of the native content language.
Now the bug is fixed by defining the current content language as the one of the publication when this publication has a content in only one single language. Once modified, the previous current content language is restored.