Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v diff -u -r1.1.2.14.2.1 -r1.1.2.14.2.2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 16 Jul 2009 04:05:31 -0000 1.1.2.14.2.1 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 5 Nov 2010 20:10:19 -0000 1.1.2.14.2.2 @@ -729,7 +729,65 @@ } return data; } + + @SuppressWarnings("unchecked") + public ExcelCell[][] getCourseDataForExcel(Integer userId, Integer organisationId) { + // The entire data list + List rowList = new LinkedList(); + + User user = (User) getUserService().findById(User.class, userId); + List lessons = lessonService.getLessonsByGroupAndUser(userId, organisationId); + for (Lesson lesson : lessons) { + + // Dont include lesson in list if the user doesnt have permission + if (!(lesson.getLessonClass().isStaffMember(user) || userService.isUserInRole(userId, organisationId, + Role.GROUP_MANAGER))) { + continue; + } + // Adding the user lesson marks to the summary---------------------- + ExcelCell[] lessonTitle = new ExcelCell[1]; + lessonTitle[0] = new ExcelCell(messageService.getMessage("gradebook.exportcourse.lesson", new Object[] {lesson.getLessonName()}), true); + rowList.add(lessonTitle); + + // Fetching the user data + ArrayList userRows = getGBUserRowsForLesson(lesson); + + // Setting up the user marks table + ExcelCell[] userTitleRow = new ExcelCell[5]; + userTitleRow[0] = new ExcelCell(getMessage("gradebook.exportcourse.learner.name"), true); + userTitleRow[1] = new ExcelCell(getMessage("gradebook.exportcourse.progress"), true); + userTitleRow[2] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); + userTitleRow[3] = new ExcelCell(getMessage("gradebook.exportcourse.lessonFeedback"), true); + userTitleRow[4] = new ExcelCell(getMessage("gradebook.exportcourse.mark"), true); + rowList.add(userTitleRow); + + for (GBUserGridRowDTO userRow : userRows) { + // Adding the user data for the lesson + ExcelCell[] userDataRow = new ExcelCell[5]; + userDataRow[0] = new ExcelCell(userRow.getRowName(), false); + String status; + if (userRow.getStatus().contains("tick.png")) { + status = getMessage("gradebook.exportcourse.ok"); + } else if (userRow.getStatus().contains("cog.png")) { + status = getMessage("gradebook.exportcourse.attempted"); + } else { + status = "-"; + } + userDataRow[1] = new ExcelCell(status, false); + userDataRow[2] = new ExcelCell(userRow.getTimeTakenSeconds(), false); + userDataRow[3] = new ExcelCell(userRow.getFeedback(), false); + userDataRow[4] = new ExcelCell(userRow.getMark(), false); + rowList.add(userDataRow); + } + + rowList.add(GradebookService.EMPTY_ROW); + rowList.add(GradebookService.EMPTY_ROW); + } + + return rowList.toArray(new ExcelCell[][] {}); + } + /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#updateActivityMark(java.lang.Double, * java.lang.String, java.lang.Integer, java.lang.Long) Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java,v diff -u -r1.1.2.6 -r1.1.2.6.2.1 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 10 Jun 2009 05:08:26 -0000 1.1.2.6 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 5 Nov 2010 20:10:19 -0000 1.1.2.6.2.1 @@ -206,5 +206,14 @@ * @return */ public ExcelCell[][] getSummaryDataForExcel(Lesson lesson); + + /** + * Get the summary data for course for an excel export + * + * @param userId + * @param organisationId + * @return + */ + ExcelCell[][] getCourseDataForExcel(Integer userId, Integer organisationId); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java,v diff -u -r1.1.2.8 -r1.1.2.8.2.1 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 15 Jun 2009 05:49:56 -0000 1.1.2.8 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 5 Nov 2010 20:10:19 -0000 1.1.2.8.2.1 @@ -323,7 +323,40 @@ } return null; } + + /** + * Exports Course Gradebook into excel. + */ + public ActionForward exportExcelCourseGradebook(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + initServices(); + Integer oranisationID = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID); + User user = getRealUser(getUser()); + + Organisation organisation = (Organisation) userService.findById(Organisation.class, oranisationID); + if (organisation == null || user == null) { + logger.error("Organisation " + oranisationID + " does not exist or user is null. Unable to load gradebook"); + return mapping.findForward("error"); + } + + Integer organisationId = organisation.getOrganisationId(); + logger.debug("Exporting to a spreadsheet course: " + organisationId); + + LinkedHashMap dataToExport = new LinkedHashMap(); + ExcelCell[][] summaryData = gradebookService.getCourseDataForExcel(user.getUserId(), organisationId); + dataToExport.put(gradebookService.getMessage("gradebook.exportcourse.course.summary"), summaryData); + + String fileName = organisation.getName().replaceAll(" ", "_") + ".xls"; + response.setContentType("application/x-download"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + ServletOutputStream out = response.getOutputStream(); + GradebookUtil.exportGradebookLessonToExcel(out, gradebookService.getMessage("gradebook.export.dateheader"), + dataToExport); + + return null; + } + private UserDTO getUser() { HttpSession ss = SessionManager.getSession(); return (UserDTO) ss.getAttribute(AttributeNames.USER); Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookCourseMonitor.jsp,v diff -u -r1.1.2.7.4.1 -r1.1.2.7.4.2 --- lams_gradebook/web/gradebookCourseMonitor.jsp 16 Nov 2009 02:25:07 -0000 1.1.2.7.4.1 +++ lams_gradebook/web/gradebookCourseMonitor.jsp 5 Nov 2010 20:10:19 -0000 1.1.2.7.4.2 @@ -183,6 +183,13 @@
+ + + + +
+
+