Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.hbm.xml =================================================================== diff -u -r65efb0abb529cafc1977e284e2c9a4ed33722334 -r17599037f2f775fd6e66fada5c098966dad53b21 --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.hbm.xml (.../ForumReport.hbm.xml) (revision 65efb0abb529cafc1977e284e2c9a4ed33722334) +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.hbm.xml (.../ForumReport.hbm.xml) (revision 17599037f2f775fd6e66fada5c098966dad53b21) @@ -36,14 +36,6 @@ /> - - > topicsByUser; + public SessionDTO(ForumToolSession session) { + this.sessionID = session.getSessionId(); + this.sessionName = session.getSessionName(); + this.marksReleased = session.isMarkReleased(); + } + public Long getSessionID() { return sessionID; } @@ -57,7 +61,15 @@ public void setSessionName(String sessionName) { this.sessionName = sessionName; } + + public boolean isMarksReleased() { + return marksReleased; + } + public void setMarksReleased(boolean marksReleased) { + this.marksReleased = marksReleased; + } + public Map> getTopicsByUser() { return topicsByUser; } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r17599037f2f775fd6e66fada5c098966dad53b21 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.java (.../ForumReport.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.java (.../ForumReport.java) (revision 17599037f2f775fd6e66fada5c098966dad53b21) @@ -25,20 +25,11 @@ package org.lamsfoundation.lams.tool.forum.persistence; -import java.util.Date; - -/** - * - * - * - * - */ public class ForumReport { private Long uid; private Float mark; private String comment; - private Date dateMarksReleased; /** * @@ -67,18 +58,6 @@ * * @return */ - public Date getDateMarksReleased() { - return dateMarksReleased; - } - - public void setDateMarksReleased(Date dateMarksReleased) { - this.dateMarksReleased = dateMarksReleased; - } - - /** - * - * @return - */ public Float getMark() { return mark; } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r7665ade66b927eb4b1fa6cb20ad55f3c1d7c2778 -r17599037f2f775fd6e66fada5c098966dad53b21 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 7665ade66b927eb4b1fa6cb20ad55f3c1d7c2778) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 17599037f2f775fd6e66fada5c098966dad53b21) @@ -65,6 +65,7 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.logevent.LogEvent; import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; @@ -290,8 +291,15 @@ } @Override - public void updateContainedReport(Message message) { + public void updateMark(Message message) { messageDao.saveOrUpdate(message); + + // send marks to gradebook, if marks are released for that session + ForumUser user = message.getCreatedBy(); + ForumToolSession session = user.getSession(); + if (session.isMarkReleased()) { + sendMarksToGradebook(user, session.getSessionId()); + } } @Override @@ -420,7 +428,7 @@ } @Override - public List getTopicThread(Long rootTopicId) { + public List getTopicThread(Long rootTopicId) { List unsortedThread = messageSeqDao.getCompleteTopic(rootTopicId); Iterator iter = unsortedThread.iterator(); MessageSeq msgSeq; @@ -600,64 +608,61 @@ @Override public void releaseMarksForSession(Long sessionID) { // udate release mark date for each message. - List list = messageDao.getBySession(sessionID); - Iterator iter = list.iterator(); + List messages = messageDao.getBySession(sessionID); ForumToolSession session = forumToolSessionDao.getBySessionId(sessionID); Forum forum = session.getForum(); boolean notifyLearnersOnMarkRelease = getEventNotificationService().eventExists(ForumConstants.TOOL_SIGNATURE, ForumConstants.EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE, forum.getContentId()); - Map notificationMessages = null; - Object[] notificationMessageParameters = null; - if (notifyLearnersOnMarkRelease) { - notificationMessages = new TreeMap<>(); - notificationMessageParameters = new Object[3]; + + List users = getUsersBySessionId(sessionID); + if (users != null) { + for (ForumUser user : users) { + // send marks to gradebook where applicable + sendMarksToGradebook(user, sessionID); + } } - while (iter.hasNext()) { - Message msg = iter.next(); - ForumReport report = msg.getReport(); - if (report != null) { - report.setDateMarksReleased(new Date()); - if (notifyLearnersOnMarkRelease) { - ForumUser user = msg.getCreatedBy(); + // update session to set MarkRelease flag + session.setMarkReleased(true); + forumToolSessionDao.saveOrUpdate(session); + + // notify learners on mark release + if (notifyLearnersOnMarkRelease) { + Map notificationMessages = new TreeMap<>(); + + for (Message message : messages) { + ForumReport report = message.getReport(); + if (report != null) { + ForumUser user = message.getCreatedBy(); StringBuilder notificationMessage = notificationMessages.get(user.getUserId().intValue()); if (notificationMessage == null) { notificationMessage = new StringBuilder(); } - notificationMessageParameters[0] = msg.getSubject(); - notificationMessageParameters[1] = msg.getUpdated(); + Object[] notificationMessageParameters = new Object[3]; + notificationMessageParameters[0] = message.getSubject(); + notificationMessageParameters[1] = message.getUpdated(); notificationMessageParameters[2] = report.getMark(); notificationMessage .append(getLocalisedMessage("event.mark.release.mark", notificationMessageParameters)); notificationMessages.put(user.getUserId().intValue(), notificationMessage); } } - messageDao.saveOrUpdate(msg); - } - if (notifyLearnersOnMarkRelease) { - notificationMessageParameters = new Object[1]; for (Integer userID : notificationMessages.keySet()) { + Object[] notificationMessageParameters = new Object[1]; notificationMessageParameters[0] = notificationMessages.get(userID).toString(); getEventNotificationService().triggerForSingleUser(ForumConstants.TOOL_SIGNATURE, ForumConstants.EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE, forum.getContentId(), userID, notificationMessageParameters); } } + + //audit log event + String sessionName = session.getSessionName() + " (toolSessionId=" + session.getSessionId() + ")"; + String message = messageService.getMessage("tool.display.name") + ". " + messageService.getMessage("msg.mark.released", new String[] { sessionName }); + logEventService.logToolEvent(LogEvent.TYPE_TOOL_MARK_RELEASED, forum.getContentId(), null, message); - List users = getUsersBySessionId(sessionID); - if (users != null) { - for (ForumUser user : users) { - // send marks to gradebook where applicable - sendMarksToGradebook(user, sessionID); - } - } - - // update session to set MarkRelease flag. - session.setMarkReleased(true); - forumToolSessionDao.saveOrUpdate(session); - } @Override @@ -706,7 +711,7 @@ * @param map * @return */ - private List getSortedMessageDTO(SortedMap map) { + private List getSortedMessageDTO(SortedMap map) { Iterator iter; MessageSeq msgSeq; Message message; Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -r17599037f2f775fd6e66fada5c098966dad53b21 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 17599037f2f775fd6e66fada5c098966dad53b21) @@ -179,7 +179,7 @@ * @param rootTopicId * @return List of MessageDTO */ - List getTopicThread(Long rootTopicId); + List getTopicThread(Long rootTopicId); /** * Get topic and its children list by given root topic ID, starting from after the sequence number specified. @@ -342,12 +342,12 @@ ForumUser getUserByID(Long userId); /** - * Update report contained inside specified message. + * Update mark and mark comment. Send marks to gradebook, if marks are released for that session * * @param message * specified message */ - void updateContainedReport(Message message); + void updateMark(Message message); // ************************************************************************************ // Report Method Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== diff -u -reeb8faaea5372ccf5445d7172f726931e9f26098 -r17599037f2f775fd6e66fada5c098966dad53b21 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision eeb8faaea5372ccf5445d7172f726931e9f26098) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 17599037f2f775fd6e66fada5c098966dad53b21) @@ -125,7 +125,6 @@ if (param.equals("updateMark")) { return updateMark(mapping, form, request, response); } - if (param.equals("releaseMark")) { return releaseMark(mapping, form, request, response); } @@ -172,12 +171,6 @@ /** * The initial method for monitoring. List all users according to given Content ID. - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private void summary(HttpServletRequest request) { Long toolContentId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); @@ -197,11 +190,8 @@ // build a map with all users in the forumSessionList for (ForumToolSession session : sessions) { Long sessionId = session.getSessionId(); - SessionDTO sessionDto = new SessionDTO(); + SessionDTO sessionDto = new SessionDTO(session); - sessionDto.setSessionID(sessionId); - sessionDto.setSessionName(session.getSessionName()); - // used for storing data for MonitoringAction.getUsers() serving tablesorter paging List topics = forumService.getAllTopicsFromSession(sessionId); Map> topicsByUser = getTopicsSortedByAuthor(topics); @@ -354,18 +344,12 @@ /** * Download marks for all users in a speical session. - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private ActionForward downloadMarks(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); forumService = getForumService(); - List topicList = forumService.getAllTopicsFromSession(sessionID); + List topicList = forumService.getAllTopicsFromSession(sessionID); // construct Excel file format and download ActionMessages errors = new ActionMessages(); try { @@ -474,8 +458,6 @@ /** * View activity for content. - * - * @param request */ private void viewActivity(HttpServletRequest request) { Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); @@ -493,8 +475,6 @@ /** * View instruction information for a content. - * - * @param request */ private void viewInstructions(HttpServletRequest request) { Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); @@ -509,12 +489,6 @@ /** * Show statisitc page for a session. - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private ActionForward statistic(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { @@ -524,36 +498,34 @@ /** * Performs all necessary actions for showing statistic page. - * - * @param request */ private void statistic(HttpServletRequest request) { Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); forumService = getForumService(); - Map sessionTopicsMap = new TreeMap>(new SessionDTOComparator()); - Map sessionAvaMarkMap = new HashMap(); - Map sessionTotalMsgMap = new HashMap(); + Map> sessionTopicsMap = new TreeMap>(new SessionDTOComparator()); + Map sessionAvaMarkMap = new HashMap(); + Map sessionTotalMsgMap = new HashMap(); - List sessList = forumService.getSessionsByContentId(toolContentID); - Iterator sessIter = sessList.iterator(); + List sessList = forumService.getSessionsByContentId(toolContentID); + Iterator sessIter = sessList.iterator(); while (sessIter.hasNext()) { - ForumToolSession session = (ForumToolSession) sessIter.next(); - List topicList = forumService.getRootTopics(session.getSessionId()); - Iterator iter = topicList.iterator(); + ForumToolSession session = sessIter.next(); + List topicList = forumService.getRootTopics(session.getSessionId()); + Iterator iter = topicList.iterator(); int totalMsg = 0; int msgNum; float totalMsgMarkSum = 0; float msgMarkSum = 0; for (; iter.hasNext();) { - MessageDTO msgDto = (MessageDTO) iter.next(); + MessageDTO msgDto = iter.next(); // get all message under this topic - List topicThread = forumService.getTopicThread(msgDto.getMessage().getUid()); + List topicThread = forumService.getTopicThread(msgDto.getMessage().getUid()); // loop all message under this topic msgMarkSum = 0; - Iterator threadIter = topicThread.iterator(); + Iterator threadIter = topicThread.iterator(); for (msgNum = 0; threadIter.hasNext(); msgNum++) { - MessageDTO dto = (MessageDTO) threadIter.next(); + MessageDTO dto = threadIter.next(); if (dto.getMark() != null) { msgMarkSum += dto.getMark().floatValue(); } @@ -567,9 +539,7 @@ float averMark = totalMsg == 0 ? 0 : totalMsgMarkSum / totalMsg; - SessionDTO sessionDto = new SessionDTO(); - sessionDto.setSessionID(session.getSessionId()); - sessionDto.setSessionName(session.getSessionName()); + SessionDTO sessionDto = new SessionDTO(session); sessionTopicsMap.put(sessionDto, topicList); sessionAvaMarkMap.put(session.getSessionId(), averMark); @@ -584,12 +554,6 @@ /** * View all messages under one topic. - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private ActionForward viewTopicTree(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { @@ -604,13 +568,7 @@ } /** - * View topic subject, content and attachement. - * - * @param mapping - * @param form - * @param request - * @param response - * @return + * View topic subject, content and attachement */ private ActionForward viewTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { @@ -631,19 +589,6 @@ Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); forumService.releaseMarksForSession(sessionID); - try { - response.setContentType("text/html;charset=utf-8"); - PrintWriter out = response.getWriter(); - ForumToolSession session = forumService.getSessionBySessionId(sessionID); - String sessionName = ""; - if (session != null) { - sessionName = session.getSessionName(); - } - out.write(getMessageService().getMessage("msg.mark.released", new String[] { sessionName })); - out.flush(); - - } catch (IOException e) { - } return null; } @@ -653,12 +598,6 @@ /** * View a special user's mark - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private ActionForward viewUserMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { @@ -682,17 +621,13 @@ ForumUser user = forumService.getUser(userUid); request.setAttribute(ForumConstants.ATTR_USER, user); + ForumToolSession session = forumService.getSessionBySessionId(sessionId); + request.setAttribute("isMarksReleased", session.isMarkReleased()); return mapping.findForward("success"); } /** * Edit a special user's mark. - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private ActionForward editMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { @@ -738,15 +673,10 @@ /** * Update mark for a special user - * - * @param mapping - * @param form - * @param request - * @param response - * @return */ private ActionForward updateMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + forumService = getForumService(); MarkForm markForm = (MarkForm) form; request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, markForm.getSessionMapID()); @@ -765,7 +695,6 @@ } } - forumService = getForumService(); // echo back to web page Message msg = forumService.getMessage(markForm.getTopicID()); ForumUser user = msg.getCreatedBy(); @@ -779,8 +708,6 @@ } // update message report - - forumService = getForumService(); ForumReport report = msg.getReport(); if (report == null) { report = new ForumReport(); @@ -794,7 +721,7 @@ report.setMark(mark); report.setComment(markForm.getComment()); - forumService.updateContainedReport(msg); + forumService.updateMark(msg); // echo back to topic list page: it depends which screen is come from: view special user mark, or view all user // marks. @@ -820,13 +747,6 @@ /** * Set Submission Deadline - * - * @param mapping - * @param form - * @param request - * @param response - * @return - * @throws IOException */ public ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException { Index: lams_tool_forum/web/jsps/monitoring/summary.jsp =================================================================== diff -u -r60d9a173d5590295376322fc3e857ae2dca37717 -r17599037f2f775fd6e66fada5c098966dad53b21 --- lams_tool_forum/web/jsps/monitoring/summary.jsp (.../summary.jsp) (revision 60d9a173d5590295376322fc3e857ae2dca37717) +++ lams_tool_forum/web/jsps/monitoring/summary.jsp (.../summary.jsp) (revision 17599037f2f775fd6e66fada5c098966dad53b21) @@ -11,6 +11,14 @@ + + +
+ +
+
+

   @@ -46,55 +52,55 @@

-
+
" class="btn btn-default btn-sm" /> -
+
-
-
${topic.message.replyNumber}
-
-
-
-
- - - - - - - - +
+
${topic.message.replyNumber}
-
+
+
+
+ + + + + + + + +
+
-
-
-
- - - - - - - - +
+
+
+ + + + + + + + +
-
-
+
- + - - - - - - + + + + + +