Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java =================================================================== diff -u -r2bbb1206137d5ff2a03d6d08101e4617d0fe02eb -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 2bbb1206137d5ff2a03d6d08101e4617d0fe02eb) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (.../GBActivityGridRowDTO.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -46,7 +46,16 @@ // Properties for activity view String monitorUrl; + Long groupId; + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + public GBActivityGridRowDTO() { } @@ -71,7 +80,8 @@ ret.add((mark != null) ? mark.toString() : CELL_EMPTY); } else if (view == GBGridView.MON_ACTIVITY) { - + + ret.add(groupId != null ? groupId.toString() : ""); if (monitorUrl != null && monitorUrl.length() != 0) { ret.add("" + rowName + ""); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (.../GradebookGridRowDTO.java) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (.../GradebookGridRowDTO.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -34,7 +34,7 @@ public static final String CELL_EMPTY = "-"; // The id for a row, might be activityId, userId, lessonID etc - public Long id; + public String id; // The name for the row, every gradebook row has some sort of name // Be it the user's name, the activity name, the lesson name etc @@ -101,11 +101,11 @@ this.mark = mark; } - public Long getId() { + public String getId() { return id; } - public void setId(Long id) { + public void setId(String id) { this.id = id; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java (.../GBIDComparator.java) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java (.../GBIDComparator.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -33,8 +33,14 @@ if (gradebookRow instanceof GradebookGridRowDTO && anotherGradebookRow instanceof GradebookGridRowDTO) { - Long id1 = ((GradebookGridRowDTO) gradebookRow).getId(); - Long id2 = ((GradebookGridRowDTO) anotherGradebookRow).getId(); + Long id1; + Long id2; + try { + id1 = Long.parseLong(((GradebookGridRowDTO) gradebookRow).getId()); + id2 = Long.parseLong(((GradebookGridRowDTO) anotherGradebookRow).getId()); + } catch (NumberFormatException e) { + return 0; + } if (id1 == null || id2 == null) { return 0; Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java =================================================================== diff -u -r2bbb1206137d5ff2a03d6d08101e4617d0fe02eb -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java (.../GBStartDateComparator.java) (revision 2bbb1206137d5ff2a03d6d08101e4617d0fe02eb) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBStartDateComparator.java (.../GBStartDateComparator.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -27,6 +27,7 @@ import java.util.Date; import org.lamsfoundation.lams.gradebook.dto.GBActivityGridRowDTO; +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; @SuppressWarnings("unchecked") public class GBStartDateComparator implements Comparator { @@ -36,10 +37,18 @@ Date startDate1 = ((GBActivityGridRowDTO) actGridRow).getStartDate(); Date startDate2 = ((GBActivityGridRowDTO) anotherActGridRow).getStartDate(); - Long id1 = ((GBActivityGridRowDTO) actGridRow).getId(); - Long id2 = ((GBActivityGridRowDTO) anotherActGridRow).getId(); - if (startDate1 == null && startDate2 == null) { + + Long id1 = null; + Long id2 = null; + + try { + id1 = Long.parseLong(((GradebookGridRowDTO) actGridRow).getId()); + id2 = Long.parseLong(((GradebookGridRowDTO) anotherActGridRow).getId()); + } catch (NumberFormatException e) { + return 0; + } + if (id1 == null || id2 == null) { return 0; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r2bbb1206137d5ff2a03d6d08101e4617d0fe02eb -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 2bbb1206137d5ff2a03d6d08101e4617d0fe02eb) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -45,6 +45,8 @@ import org.lamsfoundation.lams.gradebook.util.GBGridView; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.CompetenceMapping; +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.CompletedActivityProgress; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -156,15 +158,46 @@ .getActivityId()); if (firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { - GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, lesson); - gradebookActivityDTOs.add(activityDTO); + Grouping grouping = firstActivity.getGrouping(); + if (grouping != null) { + Set groups = (Set) grouping.getGroups(); + if (groups != null) { + + for (Group group : groups) { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, + lesson, group.getGroupName(), group.getGroupId()); + gradebookActivityDTOs.add(activityDTO); + } + + } + } else { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, lesson, null, + null); + gradebookActivityDTOs.add(activityDTO); + } } for (Activity activity : activities) { if (activity.getActivityId().longValue() != firstActivity.getActivityId().longValue() && activity instanceof ToolActivity) { - GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson); - gradebookActivityDTOs.add(activityDTO); + + Grouping grouping = activity.getGrouping(); + if (grouping != null) { + Set groups = (Set) grouping.getGroups(); + if (groups != null) { + + for (Group group : groups) { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson, + group.getGroupName(), group.getGroupId()); + gradebookActivityDTOs.add(activityDTO); + } + + } + } else { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson, null, + null); + gradebookActivityDTOs.add(activityDTO); + } } } @@ -177,17 +210,27 @@ * org.lamsfoundation.lams.learningdesign.Activity) */ @SuppressWarnings("unchecked") - public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity) { + public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId) { List gradebookUserDTOs = new ArrayList(); - Set learners = (Set) lesson.getAllLearners(); + Set learners = null; + if (groupId != null) { + Group group = (Group) userService.findById(Group.class, groupId); + if (group != null) { + learners = (Set) group.getUsers(); + } else { + learners = (Set) lesson.getAllLearners(); + } + } else { + learners = (Set) lesson.getAllLearners(); + } if (learners != null) { for (User learner : learners) { GBUserGridRowDTO gUserDTO = new GBUserGridRowDTO(); gUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); - gUserDTO.setId(new Long(learner.getUserId())); + gUserDTO.setId(learner.getUserId().toString()); GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(activity .getActivityId(), learner.getUserId()); @@ -242,7 +285,7 @@ for (User learner : learners) { GBUserGridRowDTO gradebookUserDTO = new GBUserGridRowDTO(); - gradebookUserDTO.setId(new Long(learner.getUserId())); + gradebookUserDTO.setId(learner.getUserId().toString()); gradebookUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); // Setting the status and time taken for the user's lesson @@ -374,13 +417,13 @@ 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))) { + && lesson.getAllLearners().contains(user) && lesson.getMarksReleased())) { continue; } GBLessonGridRowDTO lessonRow = new GBLessonGridRowDTO(); lessonRow.setLessonName(lesson.getLessonName()); - lessonRow.setId(lesson.getLessonId()); + lessonRow.setId(lesson.getLessonId().toString()); lessonRow.setStartDate(getLocaleDateString(user, lesson.getStartDateTime())); if (view == GBGridView.MON_COURSE) { @@ -466,15 +509,32 @@ * @param lesson * @return */ - private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, Lesson lesson) { + private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, Lesson lesson, String groupName, + Long groupId) { + GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); - gactivityDTO.setId(activity.getActivityId()); + gactivityDTO.setId(activity.getActivityId().toString()); + + // Setting name + // If grouped acitivty, append group name gactivityDTO.setRowName(activity.getTitle()); + if (groupName != null && groupId != null) { + gactivityDTO.setGroupId(groupId); + gactivityDTO.setRowName(activity.getTitle() + " (" + groupName + ")"); + + // Need to make the id unique, so appending the group id for this row + gactivityDTO.setId(activity.getActivityId().toString() + "_" + groupId.toString()); + + // Setting averages for group + gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForGroupedActivity(activity.getActivityId(), groupId)); + gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForGroupedActivity(activity.getActivityId(), groupId)); + + } else { + // Setting averages for lesson + gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); + gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); + } - // Setting averages - gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); - gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); - String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getMonitorUrl() + "?" + AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" + lesson.getLearningDesign().getContentFolderID() + "&" + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + activity.getToolContentId(); @@ -513,8 +573,17 @@ + learner.getUserId()); GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); - gactivityDTO.setId(activity.getActivityId()); + gactivityDTO.setId(activity.getActivityId().toString()); + + // Set the title + // If it is a grouped activity, and the user has a group get the group title as well gactivityDTO.setRowName(activity.getTitle()); + if (activity.getGrouping() != null) { + Group group = activity.getGroupFor(learner); + if (group != null) { + gactivityDTO.setRowName(activity.getTitle() + " (" + group.getGroupName() + ")"); + } + } GradebookUserActivity gradebookActivity = gradebookDAO.getGradebookUserDataForActivity( activity.getActivityId(), learner.getUserId()); @@ -557,10 +626,10 @@ + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + "&toolSessionID=" + toolSession.getToolSessionId().toString()); gactivityDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); - + if (activityState == LearnerProgress.ACTIVITY_ATTEMPTED) { gactivityDTO.setStartDate(learnerProgress.getAttemptedActivities().get(activity)); - }else { + } else { gactivityDTO.setStartDate(learnerProgress.getCompletedActivities().get(activity).getStartDate()); } } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -64,9 +64,10 @@ * * @param lesson * @param activity + * @param groupId * @return */ - public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity); + public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId); /** * Gets the user rows and the user's entire lesson mark for all users Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java =================================================================== diff -u -r2bbb1206137d5ff2a03d6d08101e4617d0fe02eb -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java (.../GradebookConstants.java) (revision 2bbb1206137d5ff2a03d6d08101e4617d0fe02eb) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/util/GradebookConstants.java (.../GradebookConstants.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -53,6 +53,7 @@ public static final String PARAM_AVG_MARK = "avgMark"; public static final String PARAM_VIEW = "view"; public static final String PARAM_START_DATE = "startDate"; + public static final String PARAM_GROUP_ID = "groupId"; // Sort public static final String SORT_DESC = "desc"; Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== diff -u -r2bbb1206137d5ff2a03d6d08101e4617d0fe02eb -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java (.../GradebookAction.java) (revision 2bbb1206137d5ff2a03d6d08101e4617d0fe02eb) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java (.../GradebookAction.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -44,6 +44,7 @@ import org.lamsfoundation.lams.gradebook.util.GradebookConstants; import org.lamsfoundation.lams.gradebook.util.GradebookUtil; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; @@ -221,11 +222,24 @@ if (view == GBGridView.MON_USER || view == GBGridView.MON_COURSE) { gradebookUserDTOs = gradebookService.getGBUserRowsForLesson(lesson); } else if (view == GBGridView.MON_ACTIVITY) { - Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - + String rowID = WebUtil.readStrParam(request, AttributeNames.PARAM_ACTIVITY_ID); + + Long activityID = null; + + // Splitting the rowID param to get the activity/group id pair + String[] split = rowID.split("_"); + if (split.length == 2) { + activityID = Long.parseLong(split[0]); + } else { + activityID = Long.parseLong(rowID); + } + + // Getting the group id if it is there + Long groupId = WebUtil.readLongParam(request, GradebookConstants.PARAM_GROUP_ID, true); + Activity activity = monitoringService.getActivityById(activityID); if (activity != null && activity instanceof ToolActivity) { - gradebookUserDTOs = gradebookService.getGBUserRowsForActivity(lesson, (ToolActivity)activity); + gradebookUserDTOs = gradebookService.getGBUserRowsForActivity(lesson, (ToolActivity)activity, groupId); } else { // return null and the grid will report an error logger.error("No activity found for: " + activityID); Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java =================================================================== diff -u -re074865bde063cd3ac9e531a90857d07de9d121c -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java (.../GradebookMonitoringAction.java) (revision e074865bde063cd3ac9e531a90857d07de9d121c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java (.../GradebookMonitoringAction.java) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -63,8 +63,7 @@ * @struts.action path="/gradebookMonitoring" parameter="dispatch" * scope="request" name="monitoringForm" validate="false" * - * @struts:action-forward name="monitorgradebook" - * path="/gradebookMonitor.jsp" + * @struts:action-forward name="monitorgradebook" path="/gradebookMonitor.jsp" * @struts:action-forward name="monitorcoursegradebook" * path="/gradebookCourseMonitor.jsp" * @struts:action-forward name="error" path=".error" @@ -108,6 +107,8 @@ LessonDetailsDTO lessonDetatilsDTO = lesson.getLessonDetails(); request.setAttribute("lessonDetails", lessonDetatilsDTO); + request.setAttribute("marksReleased", lesson.getMarksReleased()); + return mapping.findForward("monitorgradebook"); } @@ -116,23 +117,23 @@ return mapping.findForward("error"); } } - + @SuppressWarnings("unchecked") public ActionForward courseMonitor(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { initServices(); Integer oranisationID = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID); - + logger.debug("request monitorGradebook for organisation: " + oranisationID.toString()); UserDTO user = getUser(); if (user == null) { logger.error("User missing from session. "); return mapping.findForward("error"); } else { - - Organisation organisation = (Organisation)userService.findById(Organisation.class, oranisationID); + + Organisation organisation = (Organisation) userService.findById(Organisation.class, oranisationID); if (organisation == null) { logger.error("Organisation " + oranisationID + " does not exist. Unable to load gradebook"); return mapping.findForward("error"); @@ -146,17 +147,17 @@ } logger.debug("user is staff"); - + request.setAttribute("organisationID", oranisationID); request.setAttribute("organisationName", organisation.getName()); - + return mapping.findForward("monitorcoursegradebook"); } } catch (Exception e) { logger.error("Failed to load gradebook monitor", e); return mapping.findForward("error"); } - } + } /** * Updates a user's mark or feedback for an entire lesson @@ -174,17 +175,17 @@ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); Integer userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_ID); String markStr = WebUtil.readStrParam(request, GradebookConstants.PARAM_MARK, true); - String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); + String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); Lesson lesson = lessonService.getLesson(lessonID); - User learner = (User)userService.findById(User.class, userID); + User learner = (User) userService.findById(User.class, userID); if (lesson != null || learner != null) { - + if (markStr != null && !markStr.equals("")) { Double mark = Double.parseDouble(markStr); gradebookService.updateUserLessonGradebookMark(lesson, learner, mark); } - + if (feedback != null) { gradebookService.updateUserLessonGradebookFeedback(lesson, learner, feedback); } @@ -196,8 +197,8 @@ } /** - * Updates a user's mark or feedback for an activity, - * then aggregates their total lesson mark + * Updates a user's mark or feedback for an activity, then aggregates their + * total lesson mark * * @param mapping * @param form @@ -210,46 +211,80 @@ HttpServletRequest request, HttpServletResponse response) throws Exception { initServices(); Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - + GBGridView view = GradebookUtil.readGBGridViewParam(request, GradebookConstants.PARAM_VIEW, false); Long activityID = null; Integer userID = null; - + // Fetch the id based on which grid it came from if (view == GBGridView.MON_ACTIVITY) { - activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_ID); + String rowID = WebUtil.readStrParam(request, AttributeNames.PARAM_ACTIVITY_ID); + // Splitting the rowID param to get the activity/group id pair + String[] split = rowID.split("_"); + if (split.length == 2) { + activityID = Long.parseLong(split[0]); + } else { + activityID = Long.parseLong(rowID); + } + + userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_ID); + } else if (view == GBGridView.MON_USER) { activityID = WebUtil.readLongParam(request, GradebookConstants.PARAM_ID); userID = WebUtil.readIntParam(request, GradebookConstants.PARAM_USERID); } String markStr = WebUtil.readStrParam(request, GradebookConstants.PARAM_MARK, true); - String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); + String feedback = WebUtil.readStrParam(request, GradebookConstants.PARAM_FEEDBACK, true); Activity activity = monitoringService.getActivityById(activityID); - User learner = (User)userService.findById(User.class, userID); + User learner = (User) userService.findById(User.class, userID); Lesson lesson = lessonService.getLesson(lessonID); if (lesson != null && activity != null && learner != null && activity.isToolActivity()) { - + if (markStr != null && !markStr.equals("")) { Double mark = Double.parseDouble(markStr); gradebookService.updateUserActivityGradebookMark(lesson, learner, activity, mark); } - + if (feedback != null) { gradebookService.updateUserActivityGradebookFeedback(activity, learner, feedback); } - + } else { logger.error("Lesson or activity missing for lesson: " + lessonID + "and activity: " + activityID); } return null; } + + /** + * Toggles the release mark flag for a lesson + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws Exception + */ + public ActionForward toggleReleaseMarks(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) throws Exception { + initServices(); + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + Lesson lesson = lessonService.getLesson(lessonID); + + lesson.setMarksReleased(!lesson.getMarksReleased()); + userService.save(lesson); + + response.setContentType("text/plain"); + response.getWriter().write("success"); + return null; + } + private UserDTO getUser() { HttpSession ss = SessionManager.getSession(); return (UserDTO) ss.getAttribute(AttributeNames.USER); @@ -270,7 +305,7 @@ getMonitoringServiceService(); getGradebookService(); } - + private IUserManagementService getUserService() { if (userService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() @@ -288,7 +323,7 @@ } return lessonService; } - + private IMonitoringService getMonitoringServiceService() { if (monitoringService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() @@ -297,7 +332,7 @@ } return monitoringService; } - + private IGradebookService getGradebookService() { if (gradebookService == null) { WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== diff -u -r824584ee2b82bea619fbe38b470de7cca15868ea -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision 824584ee2b82bea619fbe38b470de7cca15868ea) +++ lams_gradebook/web/gradebookCourseMonitor.jsp (.../gradebookCourseMonitor.jsp) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -74,7 +74,7 @@ '', '', '', - '', + '', '' ], colModel:[ Index: lams_gradebook/web/gradebookMonitor.jsp =================================================================== diff -u -r2bbb1206137d5ff2a03d6d08101e4617d0fe02eb -r12673718843ca7b082dee1c8a42e73f5fc6c805a --- lams_gradebook/web/gradebookMonitor.jsp (.../gradebookMonitor.jsp) (revision 2bbb1206137d5ff2a03d6d08101e4617d0fe02eb) +++ lams_gradebook/web/gradebookMonitor.jsp (.../gradebookMonitor.jsp) (revision 12673718843ca7b082dee1c8a42e73f5fc6c805a) @@ -11,12 +11,56 @@ <fmt:message key="gradebook.title.window.lessonMonitor"/> + +