Index: lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.52 -r1.53 --- lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties 10 Jan 2015 22:08:02 -0000 1.52 +++ lams_tool_forum/conf/language/lams/ApplicationResources_en_AU.properties 12 Jan 2015 15:55:33 -0000 1.53 @@ -235,5 +235,5 @@ label.number.of.posts =Number of posts label.number.of.replies =Number of replies -label.latest.posting =The latest posting +label.latest.posting.date =The latest posting's date #======= End labels: Exported 226 labels for en AU ===== Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java,v diff -u -r1.3 -r1.4 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java 17 Sep 2006 06:22:31 -0000 1.3 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java 12 Jan 2015 15:55:33 -0000 1.4 @@ -21,35 +21,49 @@ * **************************************************************** */ -/* $$Id$$ */ +/* $$Id$$ */ package org.lamsfoundation.lams.tool.forum.dto; +import java.util.List; +import java.util.Map; + +import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; + /** * * @author Anthony Sukkar - * + * */ public class SessionDTO { - private Long sessionID; - - private String sessionName; + private Long sessionID; + private String sessionName; + //used for storing data for MonitoringAction.getUsers() serving tablesorter paging + private Map> topicsByUser; - public Long getSessionID() { - return sessionID; - } + public Long getSessionID() { + return sessionID; + } - public void setSessionID(Long sessionID) { - this.sessionID = sessionID; - } + public void setSessionID(Long sessionID) { + this.sessionID = sessionID; + } - public String getSessionName() { - return sessionName; - } + public String getSessionName() { + return sessionName; + } - public void setSessionName(String sessionName) { - this.sessionName = sessionName; - } - + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + public Map> getTopicsByUser() { + return topicsByUser; + } + + public void setTopicsByUser(Map> topicsByUser) { + this.topicsByUser = topicsByUser; + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUserDao.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUserDao.java,v diff -u -r1.11 -r1.12 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUserDao.java 10 Jan 2015 22:08:02 -0000 1.11 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUserDao.java 12 Jan 2015 15:55:33 -0000 1.12 @@ -95,10 +95,10 @@ sortingOrder = "user.lastName DESC, user.firstName DESC"; break; case ForumConstants.SORT_BY_LAST_POSTING_ASC: - sortingOrder = " message.body ASC"; + sortingOrder = " MAX(message.created) ASC"; break; case ForumConstants.SORT_BY_LAST_POSTING_DESC: - sortingOrder = " message.body DESC"; + sortingOrder = " MAX(message.created) DESC"; break; case ForumConstants.SORT_BY_NUMBER_OF_POSTS_ASC: sortingOrder = " COUNT(message) ASC"; Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java,v diff -u -r1.65 -r1.66 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 10 Jan 2015 22:08:02 -0000 1.65 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 12 Jan 2015 15:55:33 -0000 1.66 @@ -108,6 +108,8 @@ public static final String ATTR_USER_FINISHED = "userFinished"; public static final String ATTR_UPLOAD_MAX_FILE_SIZE = "uploadMaxFileSize"; + + public static final String ATTR_SESSION_DTOS = "sessionDtos"; // for submission deadline Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java,v diff -u -r1.49 -r1.50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 10 Jan 2015 22:08:02 -0000 1.49 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 12 Jan 2015 15:55:33 -0000 1.50 @@ -188,22 +188,33 @@ Long toolContentId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); forumService = getForumService(); + // create sessionMap + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + Forum forum = forumService.getForumByContentId(toolContentId); - request.setAttribute("forum", forum); + sessionMap.put("forum", forum); List sessions = forumService.getSessionsByContentId(toolContentId); Set sessionDtos = new TreeSet(new SessionDTOComparator()); // build a map with all users in the forumSessionList for (ForumToolSession session : sessions) { + Long sessionId = session.getSessionId(); SessionDTO sessionDto = new SessionDTO(); - sessionDto.setSessionID(session.getSessionId()); + 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); + sessionDto.setTopicsByUser(topicsByUser); + sessionDtos.add(sessionDto); } - request.setAttribute("sessionDtos", sessionDtos); + sessionMap.put(ForumConstants.ATTR_SESSION_DTOS, sessionDtos); // check if there is submission deadline Date submissionDeadline = forum.getSubmissionDeadline(); @@ -213,11 +224,11 @@ .getAttribute(AttributeNames.USER); TimeZone learnerTimeZone = learnerDto.getTimeZone(); Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline); - request.setAttribute(ForumConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); + sessionMap.put(ForumConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); } boolean isGroupedActivity = forumService.isGroupedActivity(toolContentId); - request.setAttribute("isGroupedActivity", isGroupedActivity); + sessionMap.put("isGroupedActivity", isGroupedActivity); } /** @@ -226,14 +237,17 @@ public ActionForward getUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException, JSONException { forumService = getForumService(); + String sessionMapId = WebUtil.readStrParam(request, ForumConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + sessionMapId); + + // teacher timezone HttpSession ss = SessionManager.getSession(); org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss .getAttribute(AttributeNames.USER); TimeZone teacherTimeZone = teacher.getTimeZone(); Long sessionId = WebUtil.readLongParam(request, "sessionId"); - Boolean isReflectOnActivity = WebUtil.readBooleanParam(request, "isReflectOnActivity"); - Boolean isAllowRichEditor = WebUtil.readBooleanParam(request, "isAllowRichEditor"); // paging parameters of tablesorter int size = WebUtil.readIntParam(request, "size"); @@ -254,20 +268,26 @@ } else if ((isSort2 != null) && isSort2.equals(1)) { sorting = ForumConstants.SORT_BY_LAST_POSTING_DESC; - + } else if ((isSort3 != null) && isSort3.equals(0)) { sorting = ForumConstants.SORT_BY_NUMBER_OF_POSTS_ASC; } else if ((isSort3 != null) && isSort3.equals(1)) { sorting = ForumConstants.SORT_BY_NUMBER_OF_POSTS_DESC; } + Set sessionDtos = (Set) sessionMap.get(ForumConstants.ATTR_SESSION_DTOS); + SessionDTO currentSessionDto = null; + for (SessionDTO sessionDto : sessionDtos) { + if (sessionDto.getSessionID().equals(sessionId)) { + currentSessionDto = sessionDto; + break; + } + } + Map> topicsByUser = currentSessionDto.getTopicsByUser(); + List users = forumService.getUsersForTablesorter(sessionId, page, size, sorting); - // sort and create DTO list - List topics = forumService.getAllTopicsFromSession(sessionId); - Map> topicsByUser = getTopicsSortedByAuthor(topics); - JSONArray rows = new JSONArray(); JSONObject responcedata = new JSONObject(); @@ -287,21 +307,13 @@ TreeSet messages = new TreeSet(new MessageDTOByDateComparator()); messages.addAll(topicsByUser.get(user)); - //encode lastMessage suitable for tablesorter MessageDTO lastMessage = messages.last(); - String lastMessageText = lastMessage.getMessage().getBody(); - lastMessageText = StringEscapeUtils.escapeCsv(lastMessageText); - if (isAllowRichEditor && lastMessageText.startsWith("\"") && lastMessageText.length()>2) { - lastMessageText = lastMessageText.substring(1, lastMessageText.length()-1); - } - responseRow.put("lastMessage", lastMessageText); - //format lastEdited date - Date lastEdited = (lastMessage.getMessage().getUpdated() == null) ? lastMessage.getMessage() - .getCreated() : lastMessage.getMessage().getUpdated(); - lastEdited = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, lastEdited); - DateFormat dateFormatter = new SimpleDateFormat("d-MMM-yyyy h:mm a"); - responseRow.put("lastEdited", dateFormatter.format(lastEdited)); + // format lastEdited date + Date lastMessageDate = lastMessage.getMessage().getCreated(); + lastMessageDate = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, lastMessageDate); + DateFormat dateFormatter = new SimpleDateFormat("d MMMM yyyy h:mm:ss a"); + responseRow.put("lastMessageDate", dateFormatter.format(lastMessageDate)); numberOfPosts = messages.size(); for (MessageDTO message : messages) { @@ -314,7 +326,8 @@ responseRow.put("anyPostsMarked", isAnyPostsMarked); responseRow.put("numberOfPosts", numberOfPosts); - if (isReflectOnActivity) { + Forum forum = (Forum) sessionMap.get("forum"); + if (forum.isReflectOnActivity()) { NotebookEntry notebookEntry = forumService.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, ForumConstants.TOOL_SIGNATURE, user.getUserId().intValue()); @@ -642,13 +655,14 @@ Long sessionId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); // create sessionMap - SessionMap sessionMap = new SessionMap(); - request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + String sessionMapId = WebUtil.readStrParam(request, ForumConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + sessionMapId); + request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMapId); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); sessionMap.put(ForumConstants.PARAM_UPDATE_MODE, ForumConstants.MARK_UPDATE_FROM_USER); - request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); // get this user's all topics forumService = getForumService(); List messages = forumService.getMessagesByUserUid(userUid, sessionId); Index: lams_tool_forum/web/jsps/monitoring/summary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/monitoring/summary.jsp,v diff -u -r1.35 -r1.36 --- lams_tool_forum/web/jsps/monitoring/summary.jsp 10 Jan 2015 22:08:02 -0000 1.35 +++ lams_tool_forum/web/jsps/monitoring/summary.jsp 12 Jan 2015 15:55:33 -0000 1.36 @@ -1,6 +1,11 @@ <%@ include file="/common/taglibs.jsp"%> + + + + + <%-- If you change this file, remember to update the copy made for CNG-12 --%> @@ -28,19 +33,13 @@ width: 97%; margin-left: 10px; } - - .posted-date { - font-size: 10px; - color: #666; - padding-left: 30px; - }