From 4d84074355d68b21d483973f80d0d57aa2f4161d Mon Sep 17 00:00:00 2001 From: gnaegi <none@none> Date: Wed, 12 Oct 2016 17:00:32 +0200 Subject: [PATCH] OO-2275 implement REST method to set group folder access configuration --- .../olat/collaboration/CollaborationTools.java | 16 ++++++++++++++++ .../restapi/group/LearningGroupWebService.java | 9 +++++++++ .../restapi/support/vo/GroupConfigurationVO.java | 11 +++++++++++ .../java/org/olat/restapi/GroupMgmtTest.java | 7 +++++++ 4 files changed, 43 insertions(+) diff --git a/src/main/java/org/olat/collaboration/CollaborationTools.java b/src/main/java/org/olat/collaboration/CollaborationTools.java index 58b5cf2bf8e..f8620cec635 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 d02df87d30d..2420f99db51 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 fea3ae018f2..55358fa3d87 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 ce875fff383..d99cfc3cb9e 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()); -- GitLab