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
+