Index: lams_central/src/java/org/lamsfoundation/lams/web/DisplayGroupAction.java =================================================================== diff -u -r194da62c33b3687379f2d5810af8ddb0ce6e7971 -rcd5cef591859ae82025af74f79cf6bf6f9151568 --- lams_central/src/java/org/lamsfoundation/lams/web/DisplayGroupAction.java (.../DisplayGroupAction.java) (revision 194da62c33b3687379f2d5810af8ddb0ce6e7971) +++ lams_central/src/java/org/lamsfoundation/lams/web/DisplayGroupAction.java (.../DisplayGroupAction.java) (revision cd5cef591859ae82025af74f79cf6bf6f9151568) @@ -170,7 +170,7 @@ + org.getOrganisationId(), "index.searchlesson.tooltip")); // Adding gradebook course monitor links if enabled - if (org.getEnableGradebookForMonitors() && contains(roles, Role.ROLE_GROUP_MANAGER)) { + if (org.getEnableGradebookForMonitors() && (contains(roles, Role.ROLE_GROUP_MANAGER) || contains(roles, Role.ROLE_MONITOR))) { String link = "javascript:openGradebookCourseMonitorPopup(" + "'" + org.getName() + "','" + Configuration.get(ConfigurationKeys.SERVER_URL) + "/gradebook/gradebookMonitoring.do?dispatch=courseMonitor&organisationID=" Index: lams_gradebook/conf/xdoclet/web-security.xml =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -rcd5cef591859ae82025af74f79cf6bf6f9151568 --- lams_gradebook/conf/xdoclet/web-security.xml (.../web-security.xml) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/conf/xdoclet/web-security.xml (.../web-security.xml) (revision cd5cef591859ae82025af74f79cf6bf6f9151568) @@ -9,6 +9,8 @@ GROUP MANAGER GROUP ADMIN SYSADMIN + LEARNER + MONITOR @@ -35,4 +37,10 @@ SYSADMIN + + LEARNER + + + MONITOR + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -rcd5cef591859ae82025af74f79cf6bf6f9151568 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (.../gradebookApplicationContext.xml) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (.../gradebookApplicationContext.xml) (revision cd5cef591859ae82025af74f79cf6bf6f9151568) @@ -9,7 +9,8 @@ - + + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r824584ee2b82bea619fbe38b470de7cca15868ea -rcd5cef591859ae82025af74f79cf6bf6f9151568 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 824584ee2b82bea619fbe38b470de7cca15868ea) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision cd5cef591859ae82025af74f79cf6bf6f9151568) @@ -57,7 +57,9 @@ import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -77,6 +79,7 @@ private ILamsCoreToolService toolService; private IGradebookDAO gradebookDAO; private ILessonService lessonService; + private IUserManagementService userService; /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBActivityRowsForLearner(org.lamsfoundation.lams.lesson.Lesson, @@ -127,7 +130,7 @@ } return gradebookActivityDTOs; } - + /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBActivityRowsForLesson(org.lamsfoundation.lams.lesson.Lesson) */ @@ -221,8 +224,6 @@ } - - /** * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBUserRowsForLesson(org.lamsfoundation.lams.lesson.Lesson) */ @@ -365,56 +366,64 @@ if (lessons != null) { for (Lesson lesson : lessons) { - if (lesson.getLessonClass().isStaffMember(user)) { - GBLessonGridRowDTO lessonRow = new GBLessonGridRowDTO(); - lessonRow.setLessonName(lesson.getLessonName()); - lessonRow.setId(lesson.getLessonId()); - lessonRow.setStartDate(getLocaleDateString(user, lesson.getStartDateTime())); - if (view == GBGridView.MON_COURSE) { - - // Setting the averages for monitor view - lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); - lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); + // Dont include lesson in list if the user doesnt have permission + if (!(view == GBGridView.MON_COURSE + && (lesson.getLessonClass().isStaffMember(user) || userService.isUserInRole(user + .getUserId(), organisation.getOrganisationId(), Role.GROUP_MANAGER)) || view == GBGridView.LRN_COURSE + && lesson.getAllLearners().contains(user))) { + continue; + } - // Set the gradebook monitor url - String gbMonURL = Configuration.get(ConfigurationKeys.SERVER_URL) - + "gradebook/gradebookMonitoring.do?lessonID=" + lesson.getLessonId().toString(); - lessonRow.setGradebookMonitorURL(gbMonURL); - } else if (view == GBGridView.LRN_COURSE) { - - GradebookUserLesson gbLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), user.getUserId()); - - lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); - lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); - - if (gbLesson != null) { - lessonRow.setMark(gbLesson.getMark()); - lessonRow.setFeedback(gbLesson.getFeedback()); - } - - LearnerProgress learnerProgress = monitoringService.getLearnerProgress(user.getUserId(), lesson - .getLessonId()); - lessonRow.setStatus(getLessonStatusStr(learnerProgress)); - if (learnerProgress != null) { - if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { - lessonRow.setTimeTaken(learnerProgress.getFinishDate().getTime() - - learnerProgress.getStartDate().getTime()); - } - - lessonRow.setFinishDate(getLocaleDateString(user, learnerProgress.getFinishDate())); - } - } + GBLessonGridRowDTO lessonRow = new GBLessonGridRowDTO(); + lessonRow.setLessonName(lesson.getLessonName()); + lessonRow.setId(lesson.getLessonId()); + lessonRow.setStartDate(getLocaleDateString(user, lesson.getStartDateTime())); - if (lesson.getOrganisation().getOrganisationId() != organisation.getOrganisationId()) { - lessonRow.setSubGroup(lesson.getOrganisation().getName()); - } else { - lessonRow.setSubGroup("-"); + if (view == GBGridView.MON_COURSE) { + + // Setting the averages for monitor view + lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); + + // Set the gradebook monitor url + String gbMonURL = Configuration.get(ConfigurationKeys.SERVER_URL) + + "gradebook/gradebookMonitoring.do?lessonID=" + lesson.getLessonId().toString(); + lessonRow.setGradebookMonitorURL(gbMonURL); + } else if (view == GBGridView.LRN_COURSE) { + + GradebookUserLesson gbLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), + user.getUserId()); + + lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); + + if (gbLesson != null) { + lessonRow.setMark(gbLesson.getMark()); + lessonRow.setFeedback(gbLesson.getFeedback()); } - lessonRows.add(lessonRow); + LearnerProgress learnerProgress = monitoringService.getLearnerProgress(user.getUserId(), lesson + .getLessonId()); + lessonRow.setStatus(getLessonStatusStr(learnerProgress)); + if (learnerProgress != null) { + if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { + lessonRow.setTimeTaken(learnerProgress.getFinishDate().getTime() + - learnerProgress.getStartDate().getTime()); + } + lessonRow.setFinishDate(getLocaleDateString(user, learnerProgress.getFinishDate())); + } } + + if (lesson.getOrganisation().getOrganisationId() != organisation.getOrganisationId()) { + lessonRow.setSubGroup(lesson.getOrganisation().getName()); + } else { + lessonRow.setSubGroup("-"); + } + + lessonRows.add(lessonRow); + } } @@ -429,7 +438,7 @@ if (user == null || date == null) { return null; } - + Locale locale = new Locale(user.getLocale().getLanguageIsoCode(), user.getLocale().getCountryIsoCode()); String dateStr = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale).format(date); return dateStr; @@ -699,5 +708,13 @@ this.lessonService = lessonService; } + public IUserManagementService getUserService() { + return userService; + } + + public void setUserService(IUserManagementService userService) { + this.userService = userService; + } + // ------------------------------------------------------------------------- } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookLearningAction.java =================================================================== diff -u -r824584ee2b82bea619fbe38b470de7cca15868ea -rcd5cef591859ae82025af74f79cf6bf6f9151568 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookLearningAction.java (.../GradebookLearningAction.java) (revision 824584ee2b82bea619fbe38b470de7cca15868ea) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookLearningAction.java (.../GradebookLearningAction.java) (revision cd5cef591859ae82025af74f79cf6bf6f9151568) @@ -95,7 +95,7 @@ } // Validate whether this user is a monitor for this organisation - if (!userService.isUserInRole(user.getUserID(), oranisationID, Role.MONITOR)) { + if (!userService.isUserInRole(user.getUserID(), oranisationID, Role.LEARNER)) { logger.error("User " + user.getLogin() + " is not a learner in the requested course. Cannot access the course for gradebook."); return displayMessage(mapping, request, "error.authorisation"); Index: lams_gradebook/web/WEB-INF/web.xml =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -rcd5cef591859ae82025af74f79cf6bf6f9151568 --- lams_gradebook/web/WEB-INF/web.xml (.../web.xml) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/web/WEB-INF/web.xml (.../web.xml) (revision cd5cef591859ae82025af74f79cf6bf6f9151568) @@ -254,6 +254,8 @@ GROUP MANAGER GROUP ADMIN SYSADMIN + LEARNER + MONITOR @@ -280,5 +282,11 @@ SYSADMIN + + LEARNER + + + MONITOR +