Index: lams_build/lib/lams/lams-gradebook.jar =================================================================== diff -u -rc3db10fe6622ab0bb74375275547f75608241c65 -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision 2485ce33e55a921bdcde94e4f242da5da3cf1fc4) @@ -70,7 +70,7 @@ // Leader selection tool Constants private static final String LEADER_SELECTION_TOOL_OUTPUT_NAME_LEADER_USERID = "leader.user.id"; - + private static final String TOOL_SIGNATURE_ASSESSMENT = "laasse10"; private static final String TOOL_SIGNATURE_MCQ = "lamc11"; @@ -161,6 +161,7 @@ @Override public void setActivityEvaluation(Long toolContentId, String toolOutputDefinition) { if (StringUtils.isEmpty(toolOutputDefinition)) { + gradebookService.removeActivityMark(toolContentId); return; } @@ -273,7 +274,7 @@ return activity; } - //in case of a floating activity + //in case of a floating activity } else if (activityClass.equals(FloatingActivity.class)) { LearnerProgress learnerProgress = lessonService.getUserProgressForLesson(userId, lessonId); Map completedActivities = learnerProgress.getCompletedActivities(); @@ -318,34 +319,36 @@ return null; } - + @Override public Set getPrecedingConfidenceLevelsActivities(Long toolContentId) { ToolActivity specifiedActivity = activityDAO.getToolActivityByToolContentId(toolContentId); - + //if specifiedActivity is null - most likely author hasn't saved the sequence yet if (specifiedActivity == null) { return null; } - + Set confidenceProvidingActivityIds = new LinkedHashSet(); findPrecedingConfidenceProvidingActivities(specifiedActivity, confidenceProvidingActivityIds); - + Set confidenceProvidingActivities = new LinkedHashSet(); for (Long confidenceProvidingActivityId : confidenceProvidingActivityIds) { - ToolActivity confidenceProvidingActivity = (ToolActivity) activityDAO.getActivityByActivityId(confidenceProvidingActivityId, ToolActivity.class); + ToolActivity confidenceProvidingActivity = (ToolActivity) activityDAO + .getActivityByActivityId(confidenceProvidingActivityId, ToolActivity.class); confidenceProvidingActivities.add(confidenceProvidingActivity); } return confidenceProvidingActivities; } - + /** * Finds all preceding activities that can provide confidence levels (currently only Assessment and MCQ provide * them). Please note, it does not check whether enableConfidenceLevels advanced option is ON in those activities. */ @SuppressWarnings("rawtypes") - private void findPrecedingConfidenceProvidingActivities(Activity activity, Set confidenceProvidingActivityIds) { + private void findPrecedingConfidenceProvidingActivities(Activity activity, + Set confidenceProvidingActivityIds) { // check if current activity is Leader Select one. if so - stop searching and return it. Class activityClass = Hibernate.getClass(activity); if (activityClass.equals(ToolActivity.class)) { @@ -366,7 +369,7 @@ confidenceProvidingActivityIds.add(toolActivity.getActivityId()); } - //in case of a floating activity - return all available confidence providing activities + //in case of a floating activity - return all available confidence providing activities } else if (activityClass.equals(FloatingActivity.class)) { Set activities = activity.getLearningDesign().getActivities(); for (Activity activityIter : activities) { @@ -396,10 +399,10 @@ return; } } - + @Override - public List getConfidenceLevelsByActivity(Integer confidenceLevelActivityUiid, Integer requestorUserId, - Long requestorToolSessionId) { + public List getConfidenceLevelsByActivity(Integer confidenceLevelActivityUiid, + Integer requestorUserId, Long requestorToolSessionId) { User user = (User) activityDAO.find(User.class, requestorUserId); if (user == null) { throw new ToolException("No user found for userId=" + requestorUserId); @@ -414,7 +417,8 @@ requestorSession.getToolActivity().getLearningDesign()); ToolSession confidenceLevelSession = toolSessionDAO.getToolSessionByLearner(user, confidenceLevelActivity); - List confidenceLevelDtos = lamsCoreToolService.getConfidenceLevelsByToolSession(confidenceLevelSession); + List confidenceLevelDtos = lamsCoreToolService + .getConfidenceLevelsByToolSession(confidenceLevelSession); return confidenceLevelDtos; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rf59c54692eae777e0f10c71f59c1f104280a320b -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision f59c54692eae777e0f10c71f59c1f104280a320b) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 2485ce33e55a921bdcde94e4f242da5da3cf1fc4) @@ -1745,22 +1745,35 @@ ToolActivity activity = toolSession.getToolActivity(); GradebookUserActivity gradebookUserActivity = getGradebookUserActivity(activity.getActivityId(), userID); if (gradebookUserActivity != null) { - // set mark to null so lesson mark recalculates correctly - Double oldActivityMark = gradebookUserActivity.getMark(); - gradebookUserActivity.setMark(null); - Lesson lesson = (Lesson) activity.getLearningDesign().getLessons().iterator().next(); - boolean isWeightedMarks = toolService.isWeightedMarks(lesson.getLearningDesign()); - GradebookUserLesson gradebookUserLesson = getGradebookUserLesson(lesson.getLessonId(), userID); - aggregateTotalMarkForLesson(isWeightedMarks, gradebookUserLesson, gradebookUserActivity, - oldActivityMark); - - // finally completely remove the activity mark - gradebookDAO.delete(gradebookUserActivity); + removeActivityMark(activity, gradebookUserActivity); } } } @Override + public void removeActivityMark(Long toolContentID) { + Activity activity = activityDAO.getToolActivityByToolContentId(toolContentID); + List userActivities = getGradebookUserActivities(activity.getActivityId()); + for (GradebookUserActivity gradebookUserActivity : userActivities) { + removeActivityMark(activity, gradebookUserActivity); + } + } + + private void removeActivityMark(Activity activity, GradebookUserActivity gradebookUserActivity) { + // set mark to null so lesson mark recalculates correctly + Double oldActivityMark = gradebookUserActivity.getMark(); + gradebookUserActivity.setMark(null); + Lesson lesson = (Lesson) activity.getLearningDesign().getLessons().iterator().next(); + boolean isWeightedMarks = toolService.isWeightedMarks(lesson.getLearningDesign()); + GradebookUserLesson gradebookUserLesson = getGradebookUserLesson(lesson.getLessonId(), + gradebookUserActivity.getLearner().getUserId()); + aggregateTotalMarkForLesson(isWeightedMarks, gradebookUserLesson, gradebookUserActivity, oldActivityMark); + + // finally completely remove the activity mark + gradebookDAO.delete(gradebookUserActivity); + } + + @Override public Activity getActivityById(Long activityID) { return activityDAO.getActivityByActivityId(activityID); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -r352e16d0ad309caa12c5422fddebfc221c83714b -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 352e16d0ad309caa12c5422fddebfc221c83714b) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 2485ce33e55a921bdcde94e4f242da5da3cf1fc4) @@ -45,7 +45,8 @@ /** * Gets all the activity rows for a lesson, with the mark for each activity being the average for all users in the - * lesson. Only set escapeTitles to false if the output is *not* going to a webpage, but is instead going to a spreadsheet. + * lesson. Only set escapeTitles to false if the output is *not* going to a webpage, but is instead going to a + * spreadsheet. * * @param lesson * @return @@ -284,6 +285,8 @@ */ void removeActivityMark(Integer userID, Long toolSessionID); + void removeActivityMark(Long toolContentID); + /** * Get an activity from the db by id * Index: lams_tool_assessment/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -red828f338307e10d6efbea1533d6a4d0f9f08d74 -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 --- lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision ed828f338307e10d6efbea1533d6a4d0f9f08d74) +++ lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 2485ce33e55a921bdcde94e4f242da5da3cf1fc4) @@ -289,6 +289,7 @@ label.number.learners.per.session =Number of learners per session label.tool.output =Tool Output output.desc.best.score =Best score +output.desc.none =No score label.tool.output.has.been.changed =Tool Output has been changed output.desc.first.score =First score output.desc.average.score =Average score Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java =================================================================== diff -u -red828f338307e10d6efbea1533d6a4d0f9f08d74 -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision ed828f338307e10d6efbea1533d6a4d0f9f08d74) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 2485ce33e55a921bdcde94e4f242da5da3cf1fc4) @@ -325,7 +325,7 @@ .getAttribute(sessionMapID); Long contentID = (Long) sessionMap.get(AssessmentConstants.ATTR_TOOL_CONTENT_ID); - String activityEvaluation = WebUtil.readStrParam(request, AssessmentConstants.ATTR_ACTIVITY_EVALUATION); + String activityEvaluation = WebUtil.readStrParam(request, AssessmentConstants.ATTR_ACTIVITY_EVALUATION, true); service.setActivityEvaluation(contentID, activityEvaluation); // update the session ready for stats tab to be reloaded otherwise flicking between tabs @@ -506,7 +506,7 @@ userData.put(questionResultUid); userData.put(questionResult.getMaxMark()); userData.put(fullName); - //LDEV_NTU-11 Swapping Mark and Response columns in Assessment Monitor + //LDEV_NTU-11 Swapping Mark and Response columns in Assessment Monitor userData.put(questionResult.getMark()); // show confidence levels if this feature is turned ON if (assessment.isEnableConfidenceLevels()) { Index: lams_tool_assessment/web/pages/monitoring/parts/toolOutput.jsp =================================================================== diff -u -rfb2d35766faadf7fa8e0247feb943da34f8fba4f -r2485ce33e55a921bdcde94e4f242da5da3cf1fc4 --- lams_tool_assessment/web/pages/monitoring/parts/toolOutput.jsp (.../toolOutput.jsp) (revision fb2d35766faadf7fa8e0247feb943da34f8fba4f) +++ lams_tool_assessment/web/pages/monitoring/parts/toolOutput.jsp (.../toolOutput.jsp) (revision 2485ce33e55a921bdcde94e4f242da5da3cf1fc4) @@ -13,7 +13,7 @@