Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2c0e35f7c458cedfc3d6849224a151a9568546b6 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java (.../SessionDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java (.../SessionDTO.java) (revision 2c0e35f7c458cedfc3d6849224a151a9568546b6) @@ -20,14 +20,14 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.dokumaran.dto; public class SessionDTO { private Long sessionId; private String sessionName; private String padId; + private String readOnlyPadId; private boolean sessionFaulty; public Long getSessionId() { @@ -45,20 +45,28 @@ public void setSessionName(String sessionName) { this.sessionName = sessionName; } - + public String getPadId() { return padId; } public void setPadId(String padId) { this.padId = padId; } - + + public String getReadOnlyPadId() { + return readOnlyPadId; + } + + public void setReadOnlyPadId(String readOnlyPadId) { + this.readOnlyPadId = readOnlyPadId; + } + public boolean isSessionFaulty() { return sessionFaulty; } public void setSessionFaulty(boolean sessionFaulty) { this.sessionFaulty = sessionFaulty; } -} +} \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java =================================================================== diff -u -rf4ea83a53fc9d9b6e3a3607aa0214f4721517959 -r2c0e35f7c458cedfc3d6849224a151a9568546b6 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision f4ea83a53fc9d9b6e3a3607aa0214f4721517959) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 2c0e35f7c458cedfc3d6849224a151a9568546b6) @@ -429,10 +429,9 @@ SessionDTO group = new SessionDTO(); group.setSessionId(session.getSessionId()); group.setSessionName(session.getSessionName()); + group.setPadId(session.getPadId()); + group.setReadOnlyPadId(session.getEtherpadReadOnlyId()); - String padId = session.getPadId(); - group.setPadId(padId); - //mark all session that has had problems with pad initializations so that they could be fixed in monitoring by a teacher if (StringUtils.isEmpty(session.getEtherpadReadOnlyId()) || StringUtils.isEmpty(session.getEtherpadGroupId())) { Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java =================================================================== diff -u -r5ce80833bb0828de219fc5b59e9e73c365da8559 -r2c0e35f7c458cedfc3d6849224a151a9568546b6 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java (.../LearningController.java) (revision 5ce80833bb0828de219fc5b59e9e73c365da8559) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java (.../LearningController.java) (revision 2c0e35f7c458cedfc3d6849224a151a9568546b6) @@ -27,6 +27,7 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Date; +import java.util.Iterator; import java.util.List; import javax.servlet.http.Cookie; @@ -41,6 +42,7 @@ import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.dokumaran.DokumaranConstants; +import org.lamsfoundation.lams.tool.dokumaran.dto.SessionDTO; import org.lamsfoundation.lams.tool.dokumaran.model.Dokumaran; import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranSession; import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranUser; @@ -57,8 +59,10 @@ import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -80,7 +84,7 @@ * method run successfully. * * This method will avoid read database again and lost un-saved resouce item lost when user "refresh page", - * + * * @throws EtherpadException * * @throws DokumaranConfigurationException @@ -96,15 +100,14 @@ request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); request.setAttribute(DokumaranConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, true); - Long toolSessionId = new Long(request.getParameter(DokumaranConstants.PARAM_TOOL_SESSION_ID)); + Long toolSessionId = WebUtil.readLongParam(request, DokumaranConstants.PARAM_TOOL_SESSION_ID); Dokumaran dokumaran = dokumaranService.getDokumaranBySessionId(toolSessionId); - request.setAttribute(DokumaranConstants.ATTR_TOOL_CONTENT_ID, dokumaran.getContentId()); DokumaranSession session = dokumaranService.getDokumaranSessionBySessionId(toolSessionId); // get back the dokumaran and item list and display them on page DokumaranUser user = null; boolean isFirstTimeAccess = false; + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, true); if ((mode != null) && mode.isTeacher()) { // monitoring mode - user is specified in URL // dokumaranUser may be null if the user was force completed. @@ -128,7 +131,6 @@ : new ArrayList<>(); // forwards to the leaderSelection page if (dokumaran.isUseSelectLeaderToolOuput() && leaders.isEmpty() && !mode.isTeacher()) { - // get group users and store it to request as DTO objects List groupUsers = dokumaranService.getUsersBySession(toolSessionId); List groupUserDtos = new ArrayList<>(); @@ -164,6 +166,7 @@ sessionMap.put(DokumaranConstants.ATTR_IS_LEADER_RESPONSE_FINALIZED, dokumaranService.isLeaderResponseFinalized(leaders)); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionId); + sessionMap.put(DokumaranConstants.ATTR_TOOL_CONTENT_ID, dokumaran.getContentId()); sessionMap.put(AttributeNames.ATTR_MODE, mode); // reflection information @@ -216,6 +219,7 @@ return "pages/learning/notconfigured"; } } + request.setAttribute(DokumaranConstants.ATTR_PAD_ID, padId); //add new sessionID cookie in order to access pad @@ -254,7 +258,7 @@ * @return */ @RequestMapping("/finish") - private String finish(@ModelAttribute("reflectionForm") ReflectionForm reflectionForm, HttpServletRequest request) { + private String finish(HttpServletRequest request) { // get back SessionMap String sessionMapID = request.getParameter(DokumaranConstants.ATTR_SESSION_MAP_ID); @@ -290,6 +294,7 @@ * @param response * @return */ + @SuppressWarnings("unchecked") @RequestMapping("/newReflection") private String newReflection(@ModelAttribute("reflectionForm") ReflectionForm reflectionForm, HttpServletRequest request) { @@ -316,6 +321,36 @@ return "pages/learning/notebook"; } + @SuppressWarnings("unchecked") + @RequestMapping("/startGalleryWalk") + private String startGalleryWalk(@RequestParam String sessionMapID, HttpServletResponse response, + HttpSession session, Model model) throws EtherpadException { + SessionMap map = (SessionMap) session.getAttribute(sessionMapID); + Long toolSessionID = (Long) map.get(AttributeNames.PARAM_TOOL_SESSION_ID); + Dokumaran dokumaran = dokumaranService.getDokumaranBySessionId(toolSessionID); + List groupList = dokumaranService.getSummary(dokumaran.getContentId()); + + SessionDTO currentGroupSession = null; + Iterator groupIterator = groupList.iterator(); + while (groupIterator.hasNext()) { + currentGroupSession = groupIterator.next(); + if (currentGroupSession.getSessionId().equals(toolSessionID)) { + groupIterator.remove(); + break; + } + } + currentGroupSession.setSessionName("My group"); + groupList.add(0, currentGroupSession); + + model.addAttribute(DokumaranConstants.ATTR_SUMMARY_LIST, groupList); + + UserDTO userDto = (UserDTO) session.getAttribute(AttributeNames.USER); + Cookie cookie = dokumaranService.createEtherpadCookieForMonitor(userDto, dokumaran.getContentId()); + response.addCookie(cookie); + + return "pages/learning/galleryWalk"; + } + /** * Submit reflection form input database. * @@ -350,7 +385,7 @@ dokumaranService.updateEntry(entry); } - return finish(reflectionForm, request); + return finish(request); } // ************************************************************************************* Index: lams_tool_doku/web/pages/learning/galleryWalk.jsp =================================================================== diff -u --- lams_tool_doku/web/pages/learning/galleryWalk.jsp (revision 0) +++ lams_tool_doku/web/pages/learning/galleryWalk.jsp (revision 2c0e35f7c458cedfc3d6849224a151a9568546b6) @@ -0,0 +1,102 @@ + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="label.learning.title" /> + <%@ include file="/common/header.jsp"%> + + + + + + + + + + + + + + + +
+ + +
+
+ + + +
+ +
+ + +
+
+
+
+
+ +
Index: lams_tool_doku/web/pages/learning/learning.jsp =================================================================== diff -u -r3d9d1f01b663c30badb319231a3a8b43e2b7646d -r2c0e35f7c458cedfc3d6849224a151a9568546b6 --- lams_tool_doku/web/pages/learning/learning.jsp (.../learning.jsp) (revision 3d9d1f01b663c30badb319231a3a8b43e2b7646d) +++ lams_tool_doku/web/pages/learning/learning.jsp (.../learning.jsp) (revision 2c0e35f7c458cedfc3d6849224a151a9568546b6) @@ -106,11 +106,15 @@ document.location.href=''; } + function startGalleryWalk(){ + document.location.href=''; + } + //init the connection with server using server URL but with different protocol var dokuWebsocketInitTime = Date.now(), dokuWebsocket = new WebSocket(''.replace('http', 'ws') - + 'learningWebsocket?toolContentID=' + ${toolContentID}), + + 'learningWebsocket?toolContentID=' + ${sessionMap.toolContentID}), dokuWebsocketPingTimeout = null, dokuWebsocketPingFunc = null; @@ -271,6 +275,12 @@
+ + +