Index: lams_tool_whiteboard/.classpath
===================================================================
diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -re9d22ce99dd49f9fd9495c9e78a3306ee07a74b0
--- lams_tool_whiteboard/.classpath (.../.classpath) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262)
+++ lams_tool_whiteboard/.classpath (.../.classpath) (revision e9d22ce99dd49f9fd9495c9e78a3306ee07a74b0)
@@ -22,6 +22,7 @@
+
Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java
===================================================================
diff -u -r6583579862c8623515c9861dd8edec09b6d1898f -re9d22ce99dd49f9fd9495c9e78a3306ee07a74b0
--- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision 6583579862c8623515c9861dd8edec09b6d1898f)
+++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision e9d22ce99dd49f9fd9495c9e78a3306ee07a74b0)
@@ -134,4 +134,6 @@
String getWhiteboardServerUrl() throws WhiteboardApplicationException;
String getWhiteboardAccessTokenHash(String wid, String sourceWid);
+
+ String getWhiteboardReadOnlyWid(String wid) throws WhiteboardApplicationException;
}
\ No newline at end of file
Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java
===================================================================
diff -u -r6583579862c8623515c9861dd8edec09b6d1898f -re9d22ce99dd49f9fd9495c9e78a3306ee07a74b0
--- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 6583579862c8623515c9861dd8edec09b6d1898f)
+++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision e9d22ce99dd49f9fd9495c9e78a3306ee07a74b0)
@@ -24,8 +24,12 @@
package org.lamsfoundation.lams.tool.whiteboard.service;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
import java.net.URLEncoder;
+import java.nio.charset.Charset;
import java.security.InvalidParameterException;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -36,6 +40,7 @@
import java.util.SortedMap;
import java.util.stream.Collectors;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.confidencelevel.ConfidenceLevelDTO;
@@ -78,6 +83,7 @@
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.lamsfoundation.lams.util.FileUtil;
+import org.lamsfoundation.lams.util.HttpUrlConnectionUtil;
import org.lamsfoundation.lams.util.MessageService;
import org.lamsfoundation.lams.util.WebUtil;
@@ -480,6 +486,41 @@
return String.valueOf(plainText.hashCode());
}
+ @Override
+ public String getWhiteboardReadOnlyWid(String wid) throws WhiteboardApplicationException {
+ if (StringUtils.isBlank(wid)) {
+ return null;
+ }
+ // using Whiteboard API from https://cloud13.de/testwhiteboard/apidoc/index.html
+ String whiteboardServerUrl = getWhiteboardServerUrl();
+ StringBuilder url = new StringBuilder().append(whiteboardServerUrl).append("/api/getReadOnlyWid?wid=").append(wid);
+ String whiteboardAccessToken = getWhiteboardAccessTokenHash(wid, null);
+ if (whiteboardAccessToken != null) {
+ url.append("&at=").append(whiteboardAccessToken);
+ }
+
+ try {
+ HttpURLConnection connection = HttpUrlConnectionUtil.getConnection(url.toString());
+ connection.connect();
+ int code = connection.getResponseCode();
+ if (code != 200) {
+ throw new IOException(
+ "When getting Whiteboard read-only ID for wid " + wid + " server responded with code " + code);
+ }
+
+ InputStream responseStream = connection.getInputStream();
+ if (responseStream != null) {
+ StringWriter writer = new StringWriter();
+ IOUtils.copy(responseStream, writer, Charset.defaultCharset());
+ return writer.toString();
+ }
+ } catch (IOException e) {
+ throw new WhiteboardApplicationException("Could not get Whiteboard read-only ID for wid: " + wid, e);
+ }
+
+ return null;
+ }
+
public static String getWhiteboardAuthorName(UserDTO user) throws UnsupportedEncodingException {
if (user == null) {
return null;
Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java
===================================================================
diff -u -r6583579862c8623515c9861dd8edec09b6d1898f -re9d22ce99dd49f9fd9495c9e78a3306ee07a74b0
--- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java (.../LearningController.java) (revision 6583579862c8623515c9861dd8edec09b6d1898f)
+++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java (.../LearningController.java) (revision e9d22ce99dd49f9fd9495c9e78a3306ee07a74b0)
@@ -219,7 +219,13 @@
String whiteboardAuthorName = WhiteboardService.getWhiteboardAuthorName(currentUserDto);
request.setAttribute("whiteboardAuthorName", whiteboardAuthorName);
+ // This is just a convention used for Whiteboard canvases in lessons.
+ // Authored canvases are recognised by their corresponding tool content ID without session ID part.
String wid = whiteboard.getContentId() + "-" + toolSessionId;
+ if (!hasEditRight) {
+ wid = whiteboardService.getWhiteboardReadOnlyWid(wid);
+ }
+ request.setAttribute("wid", wid);
String whiteboardAccessTokenHash = whiteboardService.getWhiteboardAccessTokenHash(wid, null);
request.setAttribute("whiteboardAccessToken", whiteboardAccessTokenHash);
Index: lams_tool_whiteboard/web/pages/learning/learning.jsp
===================================================================
diff -u -r6583579862c8623515c9861dd8edec09b6d1898f -re9d22ce99dd49f9fd9495c9e78a3306ee07a74b0
--- lams_tool_whiteboard/web/pages/learning/learning.jsp (.../learning.jsp) (revision 6583579862c8623515c9861dd8edec09b6d1898f)
+++ lams_tool_whiteboard/web/pages/learning/learning.jsp (.../learning.jsp) (revision e9d22ce99dd49f9fd9495c9e78a3306ee07a74b0)
@@ -216,7 +216,7 @@