Index: lams_tool_forum/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r1079ea24a56ed171c7d70985cf72de279765d386 -rcaa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab --- lams_tool_forum/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 1079ea24a56ed171c7d70985cf72de279765d386) +++ lams_tool_forum/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) @@ -219,6 +219,7 @@ - + @@ -303,6 +304,11 @@ + + + errors.footer= Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== diff -u -r1079ea24a56ed171c7d70985cf72de279765d386 -rcaa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 1079ea24a56ed171c7d70985cf72de279765d386) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) @@ -20,6 +20,10 @@ */ package org.lamsfoundation.lams.tool.forum.web.actions; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.text.DateFormat; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -29,8 +33,12 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; -import org.apache.poi.util.StringUtil; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.struts.action.Action; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; @@ -102,10 +110,14 @@ if (param.equals("statistic")) { return statistic(mapping,form, request, response); } - + //***************** Miscellaneous ******************** + if (param.equals("viewTopic")) { + return viewTopic(mapping,form, request, response); + } return mapping.findForward("error"); } + private ActionForward listContentUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //get content ID from URL @@ -130,23 +142,135 @@ private ActionForward viewAllMarks(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.getRootTopics(sessionID); - + Map topicsByUser = getTopicsSortedByAuthor(topicList); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID,sessionID); + request.setAttribute("report",topicsByUser); return mapping.findForward("success"); } + private ActionForward releaseMarks(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + + Long sessionID =new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_TOOL_SESSION_ID)); + //get service then update report table + forumService = getForumService(); + forumService.releaseMarksForSession(sessionID); return mapping.findForward("success"); } 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.getRootTopics(sessionID); + //construct Excel file format and download + ActionMessages errors = new ActionMessages(); + try { + //create an empty excel file + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet("Marks"); + sheet.setColumnWidth((short)0,(short)5000); + HSSFRow row,row1=null,row2=null,row3=null,row4=null,row5=null; + HSSFCell cell; + Iterator iter = getTopicsSortedByAuthor(topicList).values().iterator(); + Iterator dtoIter; + boolean first = true; + int idx = 0; + int fileCount = 0; + while(iter.hasNext()){ + List list = (List) iter.next(); + dtoIter = list.iterator(); + first = true; + + while(dtoIter.hasNext()){ + MessageDTO dto = (MessageDTO) dtoIter.next(); + if(first){ + first = false; + row1 = sheet.createRow(0); + cell = row1.createCell((short) idx); + cell.setCellValue("Subject"); + sheet.setColumnWidth((short)idx,(short)8000); + ++idx; + + cell = row1.createCell((short) idx); + cell.setCellValue("Author"); + sheet.setColumnWidth((short)idx,(short)8000); + ++idx; + + cell = row1.createCell((short) idx); + cell.setCellValue("Date"); + sheet.setColumnWidth((short)idx,(short)8000); + ++idx; + + cell = row1.createCell((short) idx); + cell.setCellValue("Marks"); + sheet.setColumnWidth((short)idx,(short)8000); + ++idx; + + cell = row1.createCell((short) idx); + cell.setCellValue("Comments"); + sheet.setColumnWidth((short)idx,(short)8000); + ++idx; + } + ++fileCount; + idx = 0; + row1 = sheet.createRow(fileCount); + cell = row1.createCell((short) idx++); + cell.setCellValue(dto.getMessage().getSubject()); + + cell = row1.createCell((short) idx++); + cell.setCellValue(dto.getAuthor()); + + cell = row1.createCell((short) idx++); + cell.setCellValue(DateFormat.getInstance().format(dto.getMessage().getCreated())); + + cell = row1.createCell((short) idx++); + + if(dto.getMessage() != null && dto.getMessage().getReport() != null) + cell.setCellValue(new Double(dto.getMessage().getReport().getMark()).doubleValue()); + else + cell.setCellValue(""); + + cell = row1.createCell((short) idx++); + if(dto.getMessage() != null && dto.getMessage().getReport() != null) + cell.setCellValue(dto.getMessage().getReport().getComment()); + else + cell.setCellValue(""); + } + } + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + wb.write(bos); + //construct download file response header + String fileName = "marks" + sessionID+".xls"; + String mineType = "application/vnd.ms-excel"; + String header = "attachment; filename=\"" + fileName + "\";"; + response.setContentType(mineType); + response.setHeader("Content-Disposition",header); + + byte[] data = bos.toByteArray(); + response.getOutputStream().write(data,0,data.length); + response.getOutputStream().flush(); + } catch (IOException e) { + log.error(e); + errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("monitoring.download.error",e.toString())); + } + + if(!errors.isEmpty()){ + saveErrors(request,errors); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID,sessionID); + return mapping.getInputForward(); + } + - - return mapping.findForward("success"); + return null; } private ActionForward viewUserMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -321,6 +445,17 @@ return mapping.findForward("success"); } + private ActionForward viewTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + Long msgUid = new Long(WebUtil.readLongParam(request,ForumConstants.MESSAGE_UID)); + + forumService = getForumService(); + Message topic = forumService.getMessage(msgUid); + + request.setAttribute(ForumConstants.AUTHORING_TOPIC,MessageDTO.getMessageDTO(topic)); + return mapping.findForward("success"); + } //========================================================================================== // Utility methods @@ -337,4 +472,28 @@ } return forumService; } + + + /** + * @param topicList + * @return + */ + private Map getTopicsSortedByAuthor(List topicList) { + Map topicsByUser = new HashMap(); + Iterator iter = topicList.iterator(); + while(iter.hasNext()){ + MessageDTO dto = (MessageDTO) iter.next(); + ForumReport report = dto.getMessage().getReport(); + if(report != null){ + log.info("REPROT MARK" + report.getMark()); + } + List list = (List) topicsByUser.get(dto.getMessage().getCreatedBy()); + if(list == null){ + list = new ArrayList(); + topicsByUser.put(dto.getMessage().getCreatedBy(),list); + } + list.add(dto); + } + return topicsByUser; + } } Index: lams_tool_forum/web/WEB-INF/struts-config.xml =================================================================== diff -u -r1079ea24a56ed171c7d70985cf72de279765d386 -rcaa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab --- lams_tool_forum/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 1079ea24a56ed171c7d70985cf72de279765d386) +++ lams_tool_forum/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) @@ -253,6 +253,7 @@ - + + + + + + + + @@ -98,6 +102,11 @@ + + + + + Index: lams_tool_forum/web/includes/header.jsp =================================================================== diff -u -r811003bdaefc92c8f7ddc49a1caaa9116cb8f729 -rcaa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab --- lams_tool_forum/web/includes/header.jsp (.../header.jsp) (revision 811003bdaefc92c8f7ddc49a1caaa9116cb8f729) +++ lams_tool_forum/web/includes/header.jsp (.../header.jsp) (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) @@ -6,8 +6,8 @@ <bean:message key="appName" /> -/css/aqua.css" rel="stylesheet" type="text/css"> - +css/aqua.css" rel="stylesheet" type="text/css"> + Following files have been submitted by , @@ -9,9 +10,9 @@ - + - + Index: lams_tool_forum/web/jsps/monitoring/viewallmarks.jsp =================================================================== diff -u -r811003bdaefc92c8f7ddc49a1caaa9116cb8f729 -rcaa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab --- lams_tool_forum/web/jsps/monitoring/viewallmarks.jsp (.../viewallmarks.jsp) (revision 811003bdaefc92c8f7ddc49a1caaa9116cb8f729) +++ lams_tool_forum/web/jsps/monitoring/viewallmarks.jsp (.../viewallmarks.jsp) (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) @@ -1,96 +1,87 @@ -<%@include file="../sharing/share.jsp" %> - - - - All Learner Submission Details - - - - - - +<%@ include file="/includes/taglibs.jsp" %> + - - - - - -

- - -

- - - - - - - - - - - - - - - - - - - - - - - - -
- , - , provides following submisstion: -
File Path: - File Path: - - - - - -   - - - - - - -
File Description:
Date of Submission:
Marks: - - - - - - - -
Comments: - - - - - - - - -
-
- > - > - > + + + + + + +

+ + +

+ + + + + + + + + + + + + + + + + + + + + + - - - + + + + -
+ , + , + provides following submisstion: +
+ + + + + + + + + "> + + + + + + + + +
Marks: + + + + + + + + +
Comments: + + + + + + + + +
+ + > > + > - -
- - - + +
Index: lams_tool_forum/web/jsps/monitoring/viewtopic.jsp =================================================================== diff -u --- lams_tool_forum/web/jsps/monitoring/viewtopic.jsp (revision 0) +++ lams_tool_forum/web/jsps/monitoring/viewtopic.jsp (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) @@ -0,0 +1,8 @@ + +<%@ include file="/includes/taglibs.jsp" %> + +
+ <%@ include file="message/topicview.jsp" %> +
+close +