Index: lams_tool_whiteboard/db/sql/create_lams_tool_whiteboard.sql =================================================================== diff -u -r06dfe96d3b38d6ffc312a070c505aea81f4970e3 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/db/sql/create_lams_tool_whiteboard.sql (.../create_lams_tool_whiteboard.sql) (revision 06dfe96d3b38d6ffc312a070c505aea81f4970e3) +++ lams_tool_whiteboard/db/sql/create_lams_tool_whiteboard.sql (.../create_lams_tool_whiteboard.sql) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -5,6 +5,7 @@ CREATE TABLE tl_lawhiteboard11_whiteboard ( uid bigint not null auto_increment, content_id bigint unique, + source_wid varchar(64), create_date datetime, update_date datetime, create_by bigint, Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/Whiteboard.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/Whiteboard.java (.../Whiteboard.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/Whiteboard.java (.../Whiteboard.java) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -60,6 +60,9 @@ @Column(name = "content_id") private Long contentId; + @Column(name = "source_wid") + private String sourceWid; + @Column private String title; @@ -131,6 +134,8 @@ Whiteboard toContent = new Whiteboard(); toContent = (Whiteboard) defaultContent.clone(); toContent.setContentId(contentId); + // copy whiteboard canvas on next open + toContent.setSourceWid(defaultContent.getContentId().toString()); return toContent; } @@ -227,6 +232,14 @@ this.uid = uid; } + public String getSourceWid() { + return sourceWid; + } + + public void setSourceWid(String sourceWid) { + this.sourceWid = sourceWid; + } + /** * @return Returns the title. */ Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java =================================================================== diff -u -re686259177d09bfb23c125b78ef1209d7d7f7e69 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision e686259177d09bfb23c125b78ef1209d7d7f7e69) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -130,4 +130,6 @@ WhiteboardConfigItem getConfigItem(String key); void saveOrUpdateWhiteboardConfigItem(WhiteboardConfigItem item); + + String getWhiteboardServerUrl() throws WhiteboardApplicationException; } \ No newline at end of file Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java =================================================================== diff -u -re686259177d09bfb23c125b78ef1209d7d7f7e69 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision e686259177d09bfb23c125b78ef1209d7d7f7e69) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -24,6 +24,8 @@ package org.lamsfoundation.lams.tool.whiteboard.service; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.security.InvalidParameterException; import java.time.LocalDateTime; import java.util.ArrayList; @@ -34,6 +36,7 @@ import java.util.SortedMap; import java.util.stream.Collectors; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.confidencelevel.ConfidenceLevelDTO; import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; @@ -74,7 +77,9 @@ import org.lamsfoundation.lams.usermanagement.User; 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.MessageService; +import org.lamsfoundation.lams.util.WebUtil; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -439,6 +444,44 @@ whiteboardConfigItemDao.saveOrUpdate(item); } + @Override + public String getWhiteboardServerUrl() throws WhiteboardApplicationException { + WhiteboardConfigItem whiteboardServerUrlConfigItem = getConfigItem(WhiteboardConfigItem.KEY_SERVER_URL); + if (whiteboardServerUrlConfigItem == null + || StringUtils.isBlank(whiteboardServerUrlConfigItem.getConfigValue())) { + throw new WhiteboardApplicationException( + "Whiteboard server URL is not configured on sysadmin tool management page"); + } + String whiteboardServerUrl = whiteboardServerUrlConfigItem.getConfigValue(); + if (whiteboardServerUrl.contains(WhiteboardConfigItem.SERVER_URL_PLACEHOLDER)) { + String lamsServerUrl = WebUtil.getBaseServerURL(); + if (lamsServerUrl.contains(":")) { + lamsServerUrl = lamsServerUrl.substring(0, lamsServerUrl.lastIndexOf(':')); + } + whiteboardServerUrl = whiteboardServerUrl.replace(WhiteboardConfigItem.SERVER_URL_PLACEHOLDER, + lamsServerUrl); + } + return whiteboardServerUrl; + } + + public static String getWhiteboardAuthorName(UserDTO user) throws UnsupportedEncodingException { + if (user == null) { + return null; + } + StringBuilder authorName = new StringBuilder(); + if (StringUtils.isNotBlank(user.getFirstName())) { + authorName.append(user.getFirstName()); + } + if (StringUtils.isNotBlank(user.getLastName())) { + if (authorName.length() > 0) { + authorName.append(" "); + } + authorName.append(user.getLastName()); + } + return URLEncoder.encode(authorName.length() == 0 ? user.getLogin() : authorName.toString(), + FileUtil.ENCODING_UTF_8); + } + // ***************************************************************************** // private methods // ***************************************************************************** Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java =================================================================== diff -u -rb1bfbd4d153f417655f051047d69a0dbb3582d11 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java (.../AuthoringController.java) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java (.../AuthoringController.java) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -23,7 +23,6 @@ package org.lamsfoundation.lams.tool.whiteboard.web.controller; -import java.net.URLEncoder; import java.sql.Timestamp; import java.util.Date; @@ -41,10 +40,10 @@ import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardUser; import org.lamsfoundation.lams.tool.whiteboard.service.IWhiteboardService; import org.lamsfoundation.lams.tool.whiteboard.service.WhiteboardApplicationException; +import org.lamsfoundation.lams.tool.whiteboard.service.WhiteboardService; import org.lamsfoundation.lams.tool.whiteboard.web.form.WhiteboardForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.CommonConstants; -import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -123,17 +122,11 @@ authoringForm.setWhiteboard(whiteboard); - String authorName = null; - if (whiteboard.getCreatedBy() == null) { - HttpSession ss = SessionManager.getSession(); - // get back login user DTO - UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - authorName = user.getFirstName() + " " + user.getLastName(); - } else { - authorName = whiteboard.getCreatedBy().getFirstName() + " " + whiteboard.getCreatedBy().getLastName(); - } + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + String authorName = WhiteboardService.getWhiteboardAuthorName(user); + authoringForm.setAuthorName(authorName); - authoringForm.setAuthorName(URLEncoder.encode(authorName, FileUtil.ENCODING_UTF_8)); } catch (Exception e) { AuthoringController.log.error(e); throw new ServletException(e); @@ -170,22 +163,7 @@ request.setAttribute(AttributeNames.ATTR_MODE, mode.toString()); authoringForm.setMode(mode.toString()); - WhiteboardConfigItem whiteboardServerUrlConfigItem = whiteboardService - .getConfigItem(WhiteboardConfigItem.KEY_SERVER_URL); - if (whiteboardServerUrlConfigItem == null - || StringUtils.isBlank(whiteboardServerUrlConfigItem.getConfigValue())) { - throw new WhiteboardApplicationException( - "Whiteboard server URL is not configured on sysadmin tool management page"); - } - String whiteboardServerUrl = whiteboardServerUrlConfigItem.getConfigValue(); - if (whiteboardServerUrl.contains(WhiteboardConfigItem.SERVER_URL_PLACEHOLDER)) { - String lamsServerUrl = WebUtil.getBaseServerURL(); - if (lamsServerUrl.contains(":")) { - lamsServerUrl = lamsServerUrl.substring(0, lamsServerUrl.lastIndexOf(':')); - } - whiteboardServerUrl = whiteboardServerUrl.replace(WhiteboardConfigItem.SERVER_URL_PLACEHOLDER, - lamsServerUrl); - } + String whiteboardServerUrl = whiteboardService.getWhiteboardServerUrl(); request.setAttribute("whiteboardServerUrl", whiteboardServerUrl); WhiteboardConfigItem whiteboardAccessTokenConfigItem = whiteboardService @@ -229,6 +207,10 @@ // get back UID whiteboardPO.setUid(uid); + // if whiteboard canvas was copied from another Learning Design, + // not it becomes the source, i.e. does not copy from anything anymore + whiteboardPO.setSourceWid(null); + // if it's a teacher - change define later status if (mode.isTeacher()) { whiteboardPO.setDefineLater(false); Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java (.../LearningController.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningController.java (.../LearningController.java) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.tool.whiteboard.web.controller; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -44,6 +45,7 @@ import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardUser; import org.lamsfoundation.lams.tool.whiteboard.service.IWhiteboardService; import org.lamsfoundation.lams.tool.whiteboard.service.WhiteboardApplicationException; +import org.lamsfoundation.lams.tool.whiteboard.service.WhiteboardService; import org.lamsfoundation.lams.tool.whiteboard.web.form.ReflectionForm; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -74,10 +76,12 @@ * * This method will avoid read database again and lost un-saved resouce item lost when user "refresh page", * + * @throws UnsupportedEncodingException + * */ @RequestMapping("/start") private String start(HttpServletRequest request, HttpServletResponse response) - throws WhiteboardApplicationException { + throws WhiteboardApplicationException, UnsupportedEncodingException { // initial Session Map SessionMap sessionMap = new SessionMap<>(); @@ -94,13 +98,12 @@ ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, true); // get back login user DTO HttpSession ss = SessionManager.getSession(); - UserDTO currentUserDto = null; + UserDTO currentUserDto = (UserDTO) ss.getAttribute(AttributeNames.USER); if ((mode != null) && mode.isTeacher()) { // monitoring mode - user is specified in URL // whiteboardUser may be null if the user was force completed. user = getSpecifiedUser(toolSessionId, WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID, false)); } else { - currentUserDto = (UserDTO) ss.getAttribute(AttributeNames.USER); user = whiteboardService.getUserByIDAndSession(currentUserDto.getUserID().longValue(), toolSessionId); if (user == null) { user = new WhiteboardUser(currentUserDto, session); @@ -209,6 +212,12 @@ boolean isTimeLimitExceeded = whiteboardService.checkTimeLimitExceeded(whiteboard, user.getUserId().intValue()); request.setAttribute("timeLimitExceeded", isTimeLimitExceeded); + String whiteboardServerUrl = whiteboardService.getWhiteboardServerUrl(); + request.setAttribute("whiteboardServerUrl", whiteboardServerUrl); + + String authorName = WhiteboardService.getWhiteboardAuthorName(currentUserDto); + request.setAttribute("whiteboardAuthorName", authorName); + return "pages/learning/learning"; } Index: lams_tool_whiteboard/web/pages/authoring/basic.jsp =================================================================== diff -u -rb1bfbd4d153f417655f051047d69a0dbb3582d11 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/web/pages/authoring/basic.jsp (.../basic.jsp) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) +++ lams_tool_whiteboard/web/pages/authoring/basic.jsp (.../basic.jsp) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -17,5 +17,5 @@ \ No newline at end of file Index: lams_tool_whiteboard/web/pages/learning/learning.jsp =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb5f4a44b664ee18ed97ef77d512c6480eb500826 --- lams_tool_whiteboard/web/pages/learning/learning.jsp (.../learning.jsp) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/web/pages/learning/learning.jsp (.../learning.jsp) (revision b5f4a44b664ee18ed97ef77d512c6480eb500826) @@ -29,9 +29,12 @@ color:#47bc23; text-align: center; } - - .lower-to-fit-countdown { - margin-top: 55px; + + #whiteboard-frame { + width: 100%; + height: 700px; + margin-bottom: 20px; + border: 1px solid #c1c1c1; } @@ -209,14 +212,13 @@ -

+

-
-
-
-
-
+ +