Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r16f9388f679b52d0d2e010cc3588bb33fc73459b -rd9bba88902d84e240e6449b62980469091f6a6e2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 16f9388f679b52d0d2e010cc3588bb33fc73459b) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision d9bba88902d84e240e6449b62980469091f6a6e2) @@ -723,7 +723,53 @@ } return data; } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getSummaryDataForExcel(org.lamsfoundation.lams.lesson.Lesson) + */ + @SuppressWarnings("unchecked") + public ExcelCell[][] getCourseDataForExcel(Integer userId, Integer organisationId) { + // The entire data list + List rowList = new LinkedList(); + + List lessons = lessonService.getLessonsByGroupAndUser(userId, organisationId); + for (Lesson lesson : lessons) { + // 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.export.total.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); + userDataRow[1] = new ExcelCell(userRow.getStatus(), 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 =================================================================== diff -u -r2f21856ec2ab85b47c93cfcc3fa2c8769be65077 -rd9bba88902d84e240e6449b62980469091f6a6e2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 2f21856ec2ab85b47c93cfcc3fa2c8769be65077) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision d9bba88902d84e240e6449b62980469091f6a6e2) @@ -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 =================================================================== diff -u -rffafd64613340f1eff7781c7b138b805400df8cf -rd9bba88902d84e240e6449b62980469091f6a6e2 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java (.../GradebookMonitoringAction.java) (revision ffafd64613340f1eff7781c7b138b805400df8cf) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java (.../GradebookMonitoringAction.java) (revision d9bba88902d84e240e6449b62980469091f6a6e2) @@ -294,6 +294,9 @@ return null; } + /** + * Exports Lesson Gradebook into excel. + */ public ActionForward exportExcelLessonGradebook(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { @@ -329,7 +332,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 =================================================================== diff -u -rce3e782fd6844641f7298e09104f8d7554f073ff -rd9bba88902d84e240e6449b62980469091f6a6e2 --- lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision ce3e782fd6844641f7298e09104f8d7554f073ff) +++ lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision d9bba88902d84e240e6449b62980469091f6a6e2) @@ -183,6 +183,13 @@
+ + + + +
+
+