diff --git a/source/java/org/alfresco/repo/site/SiteService.java b/source/java/org/alfresco/repo/site/SiteService.java index 511837a62d..d49b678d6f 100644 --- a/source/java/org/alfresco/repo/site/SiteService.java +++ b/source/java/org/alfresco/repo/site/SiteService.java @@ -154,6 +154,13 @@ public interface SiteService */ boolean hasContainer(String shortName, String componentId); + /** + * Gets a list of all the currently available roles that a user can perform on a site + * + * @return List list of availble roles + */ + List getSiteRoles(); + /** * Gets the sites group. All members of the site are contained within this group. * diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index 4905b3622d..59e7d18ddc 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -604,6 +604,15 @@ public class SiteServiceImpl implements SiteService, SiteModel } return result; } + + /** + * @see org.alfresco.repo.site.SiteService#getSiteRoles() + */ + public List getSiteRoles() + { + Set permissions = permissionService.getSettablePermissions(SiteModel.TYPE_SITE); + return new ArrayList(permissions); + } /** * @see org.alfresco.repo.site.SiteService#isMember(java.lang.String, java.lang.String) diff --git a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java index 7e9c96a09a..bde1f13b61 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -566,6 +566,18 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest assertEquals(ForumModel.TYPE_FORUM, nodeService.getType(container8)); } + public void testSiteGetRoles() + { + List roles = this.siteService.getSiteRoles(); + assertNotNull(roles); + assertFalse(roles.isEmpty()); + +// for (String role : roles) +// { +// System.out.println("Role: " + role); +// } + } + // == Test the JavaScript API == public void testJSAPI() throws Exception diff --git a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java index 3beb23b3d3..77c35da12d 100644 --- a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java +++ b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java @@ -140,4 +140,15 @@ public class ScriptSiteService extends BaseScopableProcessorExtension } return site; } + + /** + * Returns an array of all the roles that can be assigned to a memeber of a site. + * + * @return String[] roles available to assign to a member of a site + */ + public String[] listSiteRoles() + { + List roles = this.siteService.getSiteRoles(); + return (String[])roles.toArray(new String[roles.size()]); + } } diff --git a/source/java/org/alfresco/repo/site/script/Site.java b/source/java/org/alfresco/repo/site/script/Site.java index 4c6e659ccd..39593d66b7 100644 --- a/source/java/org/alfresco/repo/site/script/Site.java +++ b/source/java/org/alfresco/repo/site/script/Site.java @@ -25,6 +25,7 @@ package org.alfresco.repo.site.script; import java.io.Serializable; +import java.util.List; import java.util.Map; import org.alfresco.error.AlfrescoRuntimeException; @@ -56,6 +57,10 @@ public class Site implements Serializable /** Site information */ private SiteInfo siteInfo; + /** Site group information */ + private String siteGroup; + private ScriptableHashMap siteRoleGroups; + /** Services Registry */ private ServiceRegistry serviceRegistry; @@ -180,6 +185,41 @@ public class Site implements Serializable return node; } + /** + * Get the site group name + * + * @return String site group name + */ + public String getSiteGroup() + { + if (this.siteGroup == null) + { + this.siteGroup = this.siteService.getSiteGroup(this.siteInfo.getShortName()); + } + return this.siteGroup; + } + + /** + * Gets a map of role name mapping to associated group name. + * + * @return ScriptableMap map of role to group name + */ + public ScriptableHashMap getSitePermissionGroups() + { + if (this.siteRoleGroups == null) + { + List roles = this.siteService.getSiteRoles(); + this.siteRoleGroups = new ScriptableHashMap(); + for (String role : roles) + { + this.siteRoleGroups.put( + role, + this.siteService.getSiteRoleGroup(this.siteInfo.getShortName(), role)); + } + } + return this.siteRoleGroups; + } + /** * Saves any outstanding updates to the site details. *

diff --git a/source/java/org/alfresco/repo/site/script/test_siteService.js b/source/java/org/alfresco/repo/site/script/test_siteService.js index 67064c6279..56e639afe9 100644 --- a/source/java/org/alfresco/repo/site/script/test_siteService.js +++ b/source/java/org/alfresco/repo/site/script/test_siteService.js @@ -196,9 +196,29 @@ function testPermissions() site.resetAllPermissions(container); } +function testRolesAndGroups() +{ + var roles = siteService.listSiteRoles(); + test.assertNotNull(roles); + test.assertFalse(roles.length == 0); + + var site = siteService.createSite("sitePreset", "sn", "siteTitle", "siteDescription", false); + var siteGroup = site.siteGroup; + test.assertNotNull(siteGroup); + test.assertEquals("GROUP_site_sn", siteGroup); + + var groups = site.sitePermissionGroups; + test.assertNotNull(groups); + test.assertEquals("GROUP_site_sn_SiteManager", groups.SiteManager); + test.assertEquals("GROUP_site_sn_SiteConsumer", groups.SiteConsumer); + test.assertEquals("GROUP_site_sn_SiteCollaborator", groups.SiteCollaborator); + +} + // Execute test's testCRUD(); testListSites(); testMembership(); testContainer(); -testPermissions(); \ No newline at end of file +testPermissions(); +testRolesAndGroups(); \ No newline at end of file