diff --git a/src/main/java/org/olat/collaboration/CollaborationTools.java b/src/main/java/org/olat/collaboration/CollaborationTools.java index 58b5cf2bf8ed679b33f449e7062d6b6d8a8598b2..f8620cec63594a9a25874594c87df192fa4bab5d 100644 --- a/src/main/java/org/olat/collaboration/CollaborationTools.java +++ b/src/main/java/org/olat/collaboration/CollaborationTools.java @@ -795,6 +795,22 @@ public class CollaborationTools implements Serializable { } } + public void setToolAccess(String tool, Integer access) { + if (TOOL_FOLDER.equals(tool) && access != null) { + if (FOLDER_ACCESS_ALL == access.intValue()) { + saveFolderAccess(new Long(FOLDER_ACCESS_ALL)); + } else if (FOLDER_ACCESS_OWNERS == access.intValue()) { + saveFolderAccess(new Long(FOLDER_ACCESS_OWNERS)); + } + } else if (TOOL_CALENDAR.equals(tool) && access != null) { + if (CALENDAR_ACCESS_ALL == access.intValue()) { + saveCalendarAccess(new Long(CALENDAR_ACCESS_ALL)); + } else if (CALENDAR_ACCESS_OWNERS == access.intValue()) { + saveCalendarAccess(new Long(CALENDAR_ACCESS_OWNERS)); + } + } + } + public Long lookupCalendarAccess() { NarrowedPropertyManager npm = NarrowedPropertyManager.getInstance(ores); Property property = npm.findProperty(null, null, PROP_CAT_BG_COLLABTOOLS, KEY_CALENDAR_ACCESS); diff --git a/src/main/java/org/olat/restapi/group/LearningGroupWebService.java b/src/main/java/org/olat/restapi/group/LearningGroupWebService.java index d02df87d30dd089262d82b3b027910558b1c3986..2420f99db51c263b2b02e28990206d754b07de2c 100644 --- a/src/main/java/org/olat/restapi/group/LearningGroupWebService.java +++ b/src/main/java/org/olat/restapi/group/LearningGroupWebService.java @@ -25,6 +25,7 @@ import static org.olat.restapi.support.ObjectFactory.getInformation; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; @@ -302,6 +303,14 @@ public class LearningGroupWebService { tools.setToolEnabled(tool, enable); } + Map<String,Integer> toolsAccess = group.getToolsAccess(); + if (toolsAccess != null) { + // ignore null for backward compatibility, don't change current configuration + for (String tool : toolsAccess.keySet()) { + tools.setToolAccess(tool, toolsAccess.get(tool)); + } + } + boolean ownersIntern = bg.isOwnersVisibleIntern(); if(group.getOwnersVisible() != null) { ownersIntern = group.getOwnersVisible().booleanValue(); diff --git a/src/main/java/org/olat/restapi/support/vo/GroupConfigurationVO.java b/src/main/java/org/olat/restapi/support/vo/GroupConfigurationVO.java index fea3ae018f22dce7d8b6d3a0faa9ae6b19fe7278..55358fa3d8727f096e206c59ccbb52bef4395cee 100644 --- a/src/main/java/org/olat/restapi/support/vo/GroupConfigurationVO.java +++ b/src/main/java/org/olat/restapi/support/vo/GroupConfigurationVO.java @@ -19,6 +19,8 @@ */ package org.olat.restapi.support.vo; +import java.util.Map; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -34,6 +36,7 @@ import javax.xml.bind.annotation.XmlRootElement; public class GroupConfigurationVO { private String[] tools; + private Map<String,Integer> toolsAccess; private Boolean ownersVisible; private Boolean participantsVisible; private Boolean waitingListVisible; @@ -50,6 +53,14 @@ public class GroupConfigurationVO { this.tools = tools; } + public Map<String,Integer> getToolsAccess() { + return toolsAccess; + } + + public void setToolsAccess(Map<String,Integer> toolsAccess) { + this.toolsAccess = toolsAccess; + } + public Boolean getOwnersVisible() { return ownersVisible; } diff --git a/src/test/java/org/olat/restapi/GroupMgmtTest.java b/src/test/java/org/olat/restapi/GroupMgmtTest.java index ce875fff383c8dfa576837dec62c1ac335ef703b..d99cfc3cb9e70f5b0b1a49162feb442b5d2c1d06 100644 --- a/src/test/java/org/olat/restapi/GroupMgmtTest.java +++ b/src/test/java/org/olat/restapi/GroupMgmtTest.java @@ -36,6 +36,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -439,6 +440,9 @@ public class GroupMgmtTest extends OlatJerseyTestCase { //update the configuration GroupConfigurationVO configVo = new GroupConfigurationVO(); configVo.setTools(new String[]{ "hasFolder", "hasNews" }); + HashMap<String, Integer> toolsAccess = new HashMap<String, Integer>(); + toolsAccess.put("hasFolder", new Integer(CollaborationTools.FOLDER_ACCESS_OWNERS)); + configVo.setToolsAccess(toolsAccess); configVo.setOwnersVisible(Boolean.TRUE); configVo.setParticipantsVisible(Boolean.FALSE); URI configRequest = UriBuilder.fromUri(getContextURI()).path("groups").path(newGroupVo.getKey().toString()).path("configuration").build(); @@ -466,6 +470,9 @@ public class GroupMgmtTest extends OlatJerseyTestCase { assertFalse(tools.isToolEnabled(CollaborationTools.TOOL_FORUM)); assertFalse(tools.isToolEnabled(CollaborationTools.TOOL_PORTFOLIO)); assertFalse(tools.isToolEnabled(CollaborationTools.TOOL_WIKI)); + // Check collab tools access configuration + assertTrue(tools.lookupFolderAccess().intValue() == CollaborationTools.FOLDER_ACCESS_OWNERS); // modified + assertTrue(tools.lookupCalendarAccess().intValue() == CollaborationTools.CALENDAR_ACCESS_OWNERS); // default //check display members assertTrue(bg.isOwnersVisibleIntern()); assertFalse(bg.isParticipantsVisibleIntern());