Index: lams_tool_whiteboard/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r4c2fb2cb0520c75065cf86a44dc5e232517de623 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 4c2fb2cb0520c75065cf86a44dc5e232517de623) +++ lams_tool_whiteboard/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -135,6 +135,7 @@ label.monitoring.summary.time.limit.expired = Expired admin.whiteboard.url = Whiteboard server URL (use [LAMS_SERVER_URL] to mimic LAMS URL without its port) admin.access.token = Whiteboard access token +admin.id.prefix = ID prefix (use letters only) label.comment.textarea.tip = Type your comment here then click on the green tick warning.comment.blank = Comment text is missing. label.fullscreen.open = Show on full screen Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dbupdates/patch20210623.sql =================================================================== diff -u --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dbupdates/patch20210623.sql (revision 0) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dbupdates/patch20210623.sql (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -0,0 +1,17 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +-- LDEV-5210 Add optional prefix to Whiteboard canvas IDs + + +INSERT INTO tl_lawhiteboard11_configuration (config_key, config_value) VALUES ('WhiteboardIdPrefix', NULL); + + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/WhiteboardConfigItem.java =================================================================== diff -u -re686259177d09bfb23c125b78ef1209d7d7f7e69 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/WhiteboardConfigItem.java (.../WhiteboardConfigItem.java) (revision e686259177d09bfb23c125b78ef1209d7d7f7e69) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/WhiteboardConfigItem.java (.../WhiteboardConfigItem.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -36,6 +36,7 @@ public static final String KEY_SERVER_URL = "ServerURL"; public static final String KEY_ACCESS_TOKEN = "AccessToken"; + public static final String KEY_ID_PREFIX = "WhiteboardIdPrefix"; public static final String SERVER_URL_PLACEHOLDER = "[LAMS_SERVER_URL]"; Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java =================================================================== diff -u -r8619d599fd212a4b3b5d17bda4f340b76849684a -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -144,4 +144,6 @@ String getWhiteboardAccessTokenHash(String wid, String sourceWid); String getWhiteboardReadOnlyWid(String wid) throws WhiteboardApplicationException; + + String getWhiteboardPrefixedId(String wid); } \ No newline at end of file Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java =================================================================== diff -u -r8619d599fd212a4b3b5d17bda4f340b76849684a -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -335,6 +335,7 @@ group.setSessionFinished(WhiteboardConstants.COMPLETED == session.getStatus()); String wid = whiteboard.getContentId() + "-" + session.getSessionId(); + wid = getWhiteboardPrefixedId(wid); if (ratingUserId != null) { wid = getWhiteboardReadOnlyWid(wid); } @@ -599,10 +600,18 @@ return null; } + @Override + public String getWhiteboardPrefixedId(String wid) { + String prefix = getConfigItem(WhiteboardConfigItem.KEY_ID_PREFIX).getConfigValue(); + return StringUtils.isBlank(prefix) ? wid : prefix + wid; + } + private void copyWhiteboardContent(String sourceWid, String targetWid) throws WhiteboardApplicationException { if (StringUtils.isBlank(sourceWid) || StringUtils.isBlank(targetWid)) { return; } + sourceWid = getWhiteboardPrefixedId(sourceWid); + targetWid = getWhiteboardPrefixedId(targetWid); // using own method added to Whiteboard API String whiteboardServerUrl = getWhiteboardServerUrl(); StringBuilder url = new StringBuilder().append(whiteboardServerUrl).append("/api/copywhiteboard?sourceWid=") @@ -633,6 +642,8 @@ if (StringUtils.isBlank(wid) || StringUtils.isBlank(content)) { return; } + + wid = getWhiteboardPrefixedId(wid); // using own method added to Whiteboard API String whiteboardServerUrl = getWhiteboardServerUrl(); StringBuilder url = new StringBuilder().append(whiteboardServerUrl).append("/api/uploadwhiteboard"); @@ -675,6 +686,8 @@ if (StringUtils.isBlank(wid)) { return null; } + + wid = getWhiteboardPrefixedId(wid); // using Whiteboard API from https://cloud13.de/testwhiteboard/apidoc/index.html String whiteboardServerUrl = getWhiteboardServerUrl(); StringBuilder url = new StringBuilder().append(whiteboardServerUrl) Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AdminController.java =================================================================== diff -u -rd4f1a6a8733acbc55037d818870299bd89631fab -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AdminController.java (.../AdminController.java) (revision d4f1a6a8733acbc55037d818870299bd89631fab) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AdminController.java (.../AdminController.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -59,6 +59,12 @@ whiteboardAdminForm.setWhiteboardAccessToken(whiteboardAccessTokenConfigItem.getConfigValue()); } + WhiteboardConfigItem whiteboardIdPrefixConfigItem = whiteboardService + .getConfigItem(WhiteboardConfigItem.KEY_ID_PREFIX); + if (whiteboardIdPrefixConfigItem != null + && StringUtils.isNotBlank(whiteboardIdPrefixConfigItem.getConfigValue())) { + whiteboardAdminForm.setWhiteboardIdPrefix(whiteboardIdPrefixConfigItem.getConfigValue()); + } return "pages/admin/config"; } @@ -88,6 +94,17 @@ : whiteboardAdminForm.getWhiteboardAccessToken().strip()); whiteboardService.saveOrUpdateWhiteboardConfigItem(whiteboardAccessTokenConfigItem); + WhiteboardConfigItem whiteboardIdPrefixConfigItem = whiteboardService + .getConfigItem(WhiteboardConfigItem.KEY_ID_PREFIX); + if (whiteboardIdPrefixConfigItem == null) { + whiteboardIdPrefixConfigItem = new WhiteboardConfigItem(); + whiteboardIdPrefixConfigItem.setConfigKey(WhiteboardConfigItem.KEY_ID_PREFIX); + } + whiteboardIdPrefixConfigItem + .setConfigValue(StringUtils.isBlank(whiteboardAdminForm.getWhiteboardIdPrefix()) ? null + : whiteboardAdminForm.getWhiteboardIdPrefix().strip()); + whiteboardService.saveOrUpdateWhiteboardConfigItem(whiteboardIdPrefixConfigItem); + request.setAttribute("savedSuccess", true); return "pages/admin/config"; Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java =================================================================== diff -u -r645056c136b15a368e557dd13ea7154b0eea48a2 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 645056c136b15a368e557dd13ea7154b0eea48a2) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -166,8 +166,10 @@ request.setAttribute("whiteboardServerUrl", whiteboardServerUrl); String wid = authoringForm.getWhiteboard().getContentId().toString(); + wid = whiteboardService.getWhiteboardPrefixedId(wid); String whiteboardAccessTokenHash = whiteboardService.getWhiteboardAccessTokenHash(wid, null); request.setAttribute("whiteboardAccessToken", whiteboardAccessTokenHash); + request.setAttribute("wid", wid); return "pages/authoring/authoring"; } Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java =================================================================== diff -u -rd1b5adfc103345fa2525236c53313dcda1cfb7c0 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java (.../LearningController.java) (revision d1b5adfc103345fa2525236c53313dcda1cfb7c0) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java (.../LearningController.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -177,6 +177,9 @@ String whiteboardAuthorName = WhiteboardService.getWhiteboardAuthorName(currentUserDto); request.setAttribute("whiteboardAuthorName", whiteboardAuthorName); + String sourceWid = whiteboardService.getWhiteboardPrefixedId(whiteboard.getContentId().toString()); + request.setAttribute("sourceWid", sourceWid); + if (whiteboard.isGalleryWalkStarted()) { List groupList = null; try { @@ -216,17 +219,16 @@ boolean readOnly = !hasEditRight || finishedLock || isTimeLimitExceeded; // 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; + // Authored canvases are recognised by their corresponding (optionally prefixed) tool content ID without session ID part. + String wid = sourceWid + "-" + toolSessionId; if (readOnly) { wid = whiteboardService.getWhiteboardReadOnlyWid(wid); } request.setAttribute("wid", wid); String whiteboardAccessTokenHash = whiteboardService.getWhiteboardAccessTokenHash(wid, null); request.setAttribute("whiteboardAccessToken", whiteboardAccessTokenHash); - String whiteboardCopyAccessTokenHash = whiteboardService.getWhiteboardAccessTokenHash(wid, - whiteboard.getContentId().toString()); + String whiteboardCopyAccessTokenHash = whiteboardService.getWhiteboardAccessTokenHash(wid, sourceWid); request.setAttribute("whiteboardCopyAccessToken", whiteboardCopyAccessTokenHash); return "pages/learning/learning"; Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/MonitoringController.java =================================================================== diff -u -r1139c442d6bf00d3b8eb86f1a0c09d481c3169f1 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 1139c442d6bf00d3b8eb86f1a0c09d481c3169f1) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -154,6 +154,9 @@ String whiteboardServerUrl = whiteboardService.getWhiteboardServerUrl(); request.setAttribute("whiteboardServerUrl", whiteboardServerUrl); + String sourceWid = whiteboardService.getWhiteboardPrefixedId(whiteboard.getContentId().toString()); + request.setAttribute("sourceWid", sourceWid); + HttpSession ss = SessionManager.getSession(); UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); String authorName = WhiteboardService.getWhiteboardAuthorName(user); Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/form/AdminForm.java =================================================================== diff -u -re686259177d09bfb23c125b78ef1209d7d7f7e69 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/form/AdminForm.java (.../AdminForm.java) (revision e686259177d09bfb23c125b78ef1209d7d7f7e69) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/form/AdminForm.java (.../AdminForm.java) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -26,6 +26,7 @@ private String whiteboardServerUrl; private String whiteboardAccessToken; + private String whiteboardIdPrefix; public String getWhiteboardServerUrl() { return whiteboardServerUrl; @@ -42,4 +43,12 @@ public void setWhiteboardAccessToken(String whiteboardAccessToken) { this.whiteboardAccessToken = whiteboardAccessToken; } + + public String getWhiteboardIdPrefix() { + return whiteboardIdPrefix; + } + + public void setWhiteboardIdPrefix(String whiteboardIdPrefix) { + this.whiteboardIdPrefix = whiteboardIdPrefix; + } } \ No newline at end of file Index: lams_tool_whiteboard/web/pages/admin/config.jsp =================================================================== diff -u -re686259177d09bfb23c125b78ef1209d7d7f7e69 -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/web/pages/admin/config.jsp (.../config.jsp) (revision e686259177d09bfb23c125b78ef1209d7d7f7e69) +++ lams_tool_whiteboard/web/pages/admin/config.jsp (.../config.jsp) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -51,7 +51,14 @@ - + + + + + + + + Index: lams_tool_whiteboard/web/pages/authoring/basic.jsp =================================================================== diff -u -rc834a3c9964666b01df4eef7b31b6d12564c80dd -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/web/pages/authoring/basic.jsp (.../basic.jsp) (revision c834a3c9964666b01df4eef7b31b6d12564c80dd) +++ lams_tool_whiteboard/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -28,7 +28,7 @@
Index: lams_tool_whiteboard/web/pages/learning/galleryWalk.jsp =================================================================== diff -u -r2339f6d7f0f0832faaaf88bb17a29d8d979db4dc -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/web/pages/learning/galleryWalk.jsp (.../galleryWalk.jsp) (revision 2339f6d7f0f0832faaaf88bb17a29d8d979db4dc) +++ lams_tool_whiteboard/web/pages/learning/galleryWalk.jsp (.../galleryWalk.jsp) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -224,7 +224,7 @@
Index: lams_tool_whiteboard/web/pages/learning/learning.jsp =================================================================== diff -u -rbf36ff2e6f6e64539f4f6b4f61694e0ca7e9198a -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/web/pages/learning/learning.jsp (.../learning.jsp) (revision bf36ff2e6f6e64539f4f6b4f61694e0ca7e9198a) +++ lams_tool_whiteboard/web/pages/learning/learning.jsp (.../learning.jsp) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -256,7 +256,7 @@
Index: lams_tool_whiteboard/web/pages/monitoring/summary.jsp =================================================================== diff -u -r8cdae5e0d6330637c25295dfdc406440740accbb -r5739216c21c85ff9b4b11cba522b5ffd2875d55c --- lams_tool_whiteboard/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 8cdae5e0d6330637c25295dfdc406440740accbb) +++ lams_tool_whiteboard/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 5739216c21c85ff9b4b11cba522b5ffd2875d55c) @@ -873,7 +873,7 @@ <%-- If there is no grouping, data is loaded immediately. If there is grouping, data is loaded on panel expand. --%>