Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java =================================================================== diff -u -r3855ec1f9f8b64f3b500b97615d359c3fe9cc2a2 -re7df9c322cd3d1d3c84c2117419750a34c3cdab8 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (.../GBUserGridRowDTO.java) (revision 3855ec1f9f8b64f3b500b97615d359c3fe9cc2a2) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (.../GBUserGridRowDTO.java) (revision e7df9c322cd3d1d3c84c2117419750a34c3cdab8) @@ -39,6 +39,7 @@ // For excel export String firstName; String lastName; + String currentActivity; public GBUserGridRowDTO() { } @@ -133,5 +134,13 @@ public void setLastName(String lastName) { this.lastName = lastName; } + + public String getCurrentActivity() { + return currentActivity; + } + + public void setCurrentActivity(String currentActivity) { + this.currentActivity = currentActivity; + } } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r3855ec1f9f8b64f3b500b97615d359c3fe9cc2a2 -re7df9c322cd3d1d3c84c2117419750a34c3cdab8 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 3855ec1f9f8b64f3b500b97615d359c3fe9cc2a2) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision e7df9c322cd3d1d3c84c2117419750a34c3cdab8) @@ -106,8 +106,8 @@ @SuppressWarnings("unchecked") public List getGBActivityRowsForLearner(Lesson lesson, User learner) { - GradebookService.logger.debug("Getting gradebook user data for lesson: " + lesson.getLessonId() - + ". For user: " + learner.getUserId()); + logger.debug("Getting gradebook user data for lesson: " + lesson.getLessonId() + ". For user: " + + learner.getUserId()); List gradebookActivityDTOs = new ArrayList(); @@ -116,7 +116,7 @@ properties.put("user", learner); LearnerProgress learnerProgress = getLearnerProgress(lesson, learner); - Set activities = lesson.getLearningDesign().getActivities(); + Set activities = (Set) lesson.getLearningDesign().getActivities(); /* * Hibernate CGLIB is failing to load the first activity in the sequence as a ToolActivity for some mysterious @@ -156,7 +156,7 @@ @SuppressWarnings("unchecked") public List getGBActivityRowsForLesson(Lesson lesson) { - GradebookService.logger.debug("Getting gradebook data for lesson: " + lesson.getLessonId()); + logger.debug("Getting gradebook data for lesson: " + lesson.getLessonId()); List gradebookActivityDTOs = new ArrayList(); @@ -311,6 +311,13 @@ // Setting the status and time taken for the user's lesson LearnerProgress learnerProgress = getLearnerProgress(lesson, learner); gradebookUserDTO.setStatus(getLessonStatusStr(learnerProgress)); + + //set current activity if available + if ((learnerProgress != null) && (learnerProgress.getCurrentActivity() != null)) { + gradebookUserDTO.setCurrentActivity(learnerProgress.getCurrentActivity().getTitle()); + } + + //calculate time taken if (learnerProgress != null) { if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { gradebookUserDTO.setTimeTaken(learnerProgress.getFinishDate().getTime() @@ -526,7 +533,7 @@ } } else { - GradebookService.logger.error("Request for gradebook grid with a null organisation"); + logger.error("Request for gradebook grid with a null organisation"); } return lessonRows; @@ -568,7 +575,7 @@ for (Activity act : activityViewMap.keySet()) { - ExcelCell[] activityTitleRow = new ExcelCell[4]; + ExcelCell[] activityTitleRow = new ExcelCell[5]; activityTitleRow[0] = new ExcelCell(act.getTitle(), true); rowList.add(activityTitleRow); ExcelCell[] titleRow = new ExcelCell[5]; @@ -592,7 +599,7 @@ rowList.add(userDataRow); } - rowList.add(GradebookService.EMPTY_ROW); + rowList.add(EMPTY_ROW); } data = rowList.toArray(new ExcelCell[][] {}); @@ -637,7 +644,7 @@ rowList.add(activityDataRow); } - rowList.add(GradebookService.EMPTY_ROW); + rowList.add(EMPTY_ROW); } data = rowList.toArray(new ExcelCell[][] {}); @@ -665,10 +672,9 @@ ExcelCell[] lessonAverageTimeTaken = new ExcelCell[2]; lessonAverageTimeTaken[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.time.taken"), true); - lessonAverageTimeTaken[1] = new ExcelCell(gradebookDAO.getAverageDurationLesson(lesson.getLessonId()), - false); + lessonAverageTimeTaken[1] = new ExcelCell(gradebookDAO.getAverageDurationLesson(lesson.getLessonId()), false); rowList.add(lessonAverageTimeTaken); - rowList.add(GradebookService.EMPTY_ROW); + rowList.add(EMPTY_ROW); // ------------------------------------------------------------------ // Adding the activity average data to the summary ----------------- @@ -696,7 +702,7 @@ activityDataRow[3] = new ExcelCell(activityRow.getAverageMark(), false); rowList.add(activityDataRow); } - rowList.add(GradebookService.EMPTY_ROW); + rowList.add(EMPTY_ROW); // ------------------------------------------------------------------ // Adding the user lesson marks to the summary---------------------- @@ -709,7 +715,7 @@ // Setting up the user marks table ExcelCell[] userTitleRow = new ExcelCell[4]; - userTitleRow[0] = new ExcelCell(getMessage("gradebook.export.last.name"), true);int s =2; + userTitleRow[0] = new ExcelCell(getMessage("gradebook.export.last.name"), true); userTitleRow[1] = new ExcelCell(getMessage("gradebook.export.first.name"), true); userTitleRow[2] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); userTitleRow[3] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); @@ -739,10 +745,17 @@ 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); @@ -766,7 +779,15 @@ ExcelCell[] userDataRow = new ExcelCell[6]; userDataRow[0] = new ExcelCell(userRow.getLastName(), false); userDataRow[1] = new ExcelCell(userRow.getFirstName(), false); - userDataRow[2] = new ExcelCell(userRow.getStatus(), 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.current.activity", new String[] { userRow.getCurrentActivity()}); + } else { + status = "-"; + } + userDataRow[2] = new ExcelCell(status, false); userDataRow[3] = new ExcelCell(userRow.getTimeTakenSeconds(), false); userDataRow[4] = new ExcelCell(userRow.getFeedback(), false); userDataRow[5] = new ExcelCell(userRow.getMark(), false); @@ -908,8 +929,8 @@ private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, User learner, LearnerProgress learnerProgress) { - GradebookService.logger.debug("Getting gradebook data for activity: " + activity.getActivityId() - + ". For user: " + learner.getUserId()); + logger.debug("Getting gradebook data for activity: " + activity.getActivityId() + ". For user: " + + learner.getUserId()); GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); gactivityDTO.setId(activity.getActivityId().toString()); @@ -1013,7 +1034,7 @@ status = ""; } else if (learnerProgress.getAttemptedActivities() != null && learnerProgress.getAttemptedActivities().size() > 0) { - status = ""; + status = ""; } } return status; @@ -1032,7 +1053,7 @@ if (learnerProgress != null) { byte statusByte = learnerProgress.getProgressState(activity); if (statusByte == LearnerProgress.ACTIVITY_ATTEMPTED) { - return ""; + return ""; } else if (statusByte == LearnerProgress.ACTIVITY_COMPLETED) { return ""; } @@ -1078,7 +1099,7 @@ } } catch (RuntimeException e) { - GradebookService.logger.debug("Runtime exception when attempted to get outputs for activity: " + logger.debug("Runtime exception when attempted to get outputs for activity: " + toolAct.getActivityId() + ", continuing for other activities", e); } } @@ -1158,6 +1179,10 @@ return messageService.getMessage(key); } + public String getMessage(String key, Object[] args) { + return messageService.getMessage(key, args); + } + // Getter and setter methods ----------------------------------------------- public ILamsCoreToolService getToolService() { Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== diff -u -rfb9b47215dd9680e3bc2cc45fecb0458a51b88f8 -re7df9c322cd3d1d3c84c2117419750a34c3cdab8 --- lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision fb9b47215dd9680e3bc2cc45fecb0458a51b88f8) +++ lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision e7df9c322cd3d1d3c84c2117419750a34c3cdab8) @@ -135,7 +135,7 @@ colModel:[ {name:'id', index:'id', sortable:false, editable:false, hidden:true, search:false, hidedlg:true}, {name:'rowName',index:'rowName', sortable:true, editable:false}, - {name:'status', index:'status', sortable:false, editable:false, search:false, width:50, align:"center"}, + {name:'status', index:'status', sortable:false, editable:false, search:false, title:false, width:50, align:"center"}, {name:'timeTaken', index:'timeTaken', sortable:true, editable:false, search:false, width:80, align:"center"}, {name:'feedback',index:'feedback', sortable:false, editable:true, edittype:'textarea', editoptions:{rows:'4',cols:'20'} , search:false}, {name:'mark',index:'mark', sortable:true, editable:true, editrules:{number:true}, search:false, width:50, align:"center"}