Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatUserDAO.java =================================================================== diff -u -r163c36804b5a47c0466569b804bc81878db49e5c -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatUserDAO.java (.../IChatUserDAO.java) (revision 163c36804b5a47c0466569b804bc81878db49e5c) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatUserDAO.java (.../IChatUserDAO.java) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -57,4 +57,11 @@ * @return */ ChatUser getByJabberIDAndJabberRoom(String jabberID, String jabberRoom); + + /** + * + * @param uid + * @return + */ + ChatUser getByUID(Long uid); } \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatUserDAO.java =================================================================== diff -u -r163c36804b5a47c0466569b804bc81878db49e5c -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatUserDAO.java (.../ChatUserDAO.java) (revision 163c36804b5a47c0466569b804bc81878db49e5c) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatUserDAO.java (.../ChatUserDAO.java) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -47,6 +47,9 @@ + ChatUser.class.getName() + " as f where jabber_id=? and f.chatSession.jabberRoom=?"; + private static final String SQL_QUERY_FIND_BY_UID = "from " + + ChatUser.class.getName() + " where uid=?"; + public ChatUser getByUserIdAndSessionId(Long userId, Long toolSessionId) { List list = this.getHibernateTemplate().find( SQL_QUERY_FIND_BY_USER_ID_SESSION_ID, @@ -71,7 +74,7 @@ return (ChatUser) list.get(0); } - + public ChatUser getByJabberIDAndJabberRoom(String jabberID, String jabberRoom) { @@ -84,9 +87,19 @@ return (ChatUser) list.get(0); } - + public void saveOrUpdate(ChatUser chatUser) { this.getHibernateTemplate().saveOrUpdate(chatUser); this.getHibernateTemplate().flush(); } + + public ChatUser getByUID(Long uid) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_UID, + new Object[] { uid }); + + if (list == null || list.isEmpty()) + return null; + + return (ChatUser) list.get(0); + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/ChatUser.java =================================================================== diff -u -r02da6e10aeb146e718dcfcc3c6655eafa7568077 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/ChatUser.java (.../ChatUser.java) (revision 02da6e10aeb146e718dcfcc3c6655eafa7568077) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/ChatUser.java (.../ChatUser.java) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -71,6 +71,7 @@ this.lastName = user.getLastName(); this.loginName = user.getLogin(); this.chatSession = chatSession; + this.finishedActivity = false; } /** full constructor */ Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== diff -u -rf3b9fb85e85dae50e18544e46f7be746ee182429 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision f3b9fb85e85dae50e18544e46f7be746ee182429) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -392,7 +392,11 @@ String jabberRoom) { return chatUserDAO.getByJabberIDAndJabberRoom(jabberID, jabberRoom); } - + + public ChatUser getUserByUID(Long uid) { + return chatUserDAO.getByUID(uid); + } + public List getMessagesForUser(ChatUser chatUser) { return chatMessageDAO.getForUser(chatUser); } @@ -954,5 +958,4 @@ public void setExportContentService(IExportToolContentService exportContentService) { this.exportContentService = exportContentService; } - } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java =================================================================== diff -u -rf3b9fb85e85dae50e18544e46f7be746ee182429 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java (.../IChatService.java) (revision f3b9fb85e85dae50e18544e46f7be746ee182429) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java (.../IChatService.java) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -140,6 +140,13 @@ /** * + * @param uid + * @return + */ + public ChatUser getUserByUID(Long uid); + + /** + * * @param chatUser */ public void saveOrUpdateChatUser(ChatUser chatUser); Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java =================================================================== diff -u -rff20896b171dd911f58f729fcb3e2ed1e9f53ed8 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java (.../LearningAction.java) (revision ff20896b171dd911f58f729fcb3e2ed1e9f53ed8) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java (.../LearningAction.java) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -36,6 +36,7 @@ import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.chat.model.Chat; import org.lamsfoundation.lams.tool.chat.model.ChatSession; import org.lamsfoundation.lams.tool.chat.model.ChatUser; import org.lamsfoundation.lams.tool.chat.service.ChatServiceProxy; @@ -95,14 +96,20 @@ chatService.saveOrUpdateChatSession(chatSession); } + Chat chat = chatSession.getChat(); + request.setAttribute("XMPPDOMAIN", ChatConstants.XMPPDOMAIN); request.setAttribute("USERNAME", chatUser.getUserId()); request.setAttribute("PASSWORD", chatUser.getUserId()); request.setAttribute("CONFERENCEROOM", chatSession.getJabberRoom()); request.setAttribute("NICK", chatUser.getLoginName()); + request.setAttribute("MODE", "learner"); + request.setAttribute("USER_UID", chatUser.getUid()); + request.setAttribute("LEARNER_FINISHED", chatUser.getFinishedActivity()); + request.setAttribute("LOCK_ON_FINISHED", chat.getLockOnFinished()); - request.setAttribute("chatTitle", chatSession.getChat().getTitle()); - request.setAttribute("chatInstructions", chatSession.getChat().getInstructions()); + request.setAttribute("chatTitle", chat.getTitle()); + request.setAttribute("chatInstructions", chat.getInstructions()); return mapping.findForward("success"); @@ -125,6 +132,17 @@ public ActionForward finishActivity (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + Long chatUserUID = WebUtil.readLongParam(request, "chatUserUID"); + + // set the finished flag + ChatUser chatUser = chatService.getUserByUID(chatUserUID); + if (chatUser != null) { + chatUser.setFinishedActivity(true); + chatService.saveOrUpdateChatUser(chatUser); + } else { + log.error("finishActivity(): couldn't find ChatUser with uid: " + chatUserUID ); + } + ToolSessionManager sessionMgrService = ChatServiceProxy .getChatSessionManager(getServlet().getServletContext()); Index: lams_tool_chat/web/chat_client/chat_app.js =================================================================== diff -u -rde8021aaecd7e02c31b9297045f028992d903c80 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/web/chat_client/chat_app.js (.../chat_app.js) (revision de8021aaecd7e02c31b9297045f028992d903c80) +++ lams_tool_chat/web/chat_client/chat_app.js (.../chat_app.js) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -45,9 +45,6 @@ for (var i = 0; i < roster.users.length; i++) { if (roster.users[i].status != "unavailable") { nick = roster.users[i].nick; - if ((NICK == nick)) { - continue; - } oOption = new Option(nick, nick); oSelect.options[oSelect.options.length] = oOption; } @@ -154,6 +151,19 @@ function handleConnected() { document.getElementById("login_pane").style.display = "none"; document.getElementById("chat_pane").style.display = ""; + + if (MODE == "learner") { + if ( LEARNER_FINISHED == "true") { + if (LOCK_ON_FINISHED == "true") { + // disable sending messages. + document.getElementById("msgArea").disabled="disabled"; + document.getElementById("sendButton").disabled="disabled"; + document.getElementById("clearButton").disabled="disabled"; + } + } else { + document.getElementById("finishButtonDiv").style.display =""; + } + } // send presence var aPresence = new JSJaCPresence(); @@ -214,7 +224,7 @@ // apending the private message to the incoming window, // since the jabber server will not echo sent private messages. // TODO: need to check if this is correct behaviour - updateMessageDisplay(generateMessageHTML(NICK, aForm.msg.value, PRIVATE_MSG)); + // updateMessageDisplay(generateMessageHTML(NICK, aForm.msg.value, PRIVATE_MSG)); } else { aMsg.setTo(CONFERENCEROOM); aMsg.setType("groupchat"); Index: lams_tool_chat/web/chat_client/chat_style.css =================================================================== diff -u -r6b63bb5d8724c2bd120e62b48b99894dc030a1c1 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/web/chat_client/chat_style.css (.../chat_style.css) (revision 6b63bb5d8724c2bd120e62b48b99894dc030a1c1) +++ lams_tool_chat/web/chat_client/chat_style.css (.../chat_style.css) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -35,11 +35,6 @@ height: 100%; } -#send_button { - float: right; - width: 160px; -} - #msgArea { width: 100%; height: 100%; @@ -49,3 +44,7 @@ #msgAreaDiv { height: 45px; } + +#finishButtonDiv { + float: right; +} Index: lams_tool_chat/web/chat_client/chat_ui.jsp =================================================================== diff -u -rff20896b171dd911f58f729fcb3e2ed1e9f53ed8 -rbcdab60f1b29cd37575646fc3fe5241ac17bcd56 --- lams_tool_chat/web/chat_client/chat_ui.jsp (.../chat_ui.jsp) (revision ff20896b171dd911f58f729fcb3e2ed1e9f53ed8) +++ lams_tool_chat/web/chat_client/chat_ui.jsp (.../chat_ui.jsp) (revision bcdab60f1b29cd37575646fc3fe5241ac17bcd56) @@ -19,6 +19,9 @@ var NICK = "${NICK}"; var RESOURCE = "lams_chatclient"; var MODE = "${MODE}"; + var USER_UID = "${USER_UID}"; + var LEARNER_FINISHED = "${LEARNER_FINISHED}"; + var LOCK_ON_FINISHED = "${LOCK_ON_FINISHED}"; @@ -32,16 +35,19 @@ + +