From 7fe9ad1492d668c145e38be1df7a6c3b6e786c1e Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Fri, 25 Oct 2019 15:08:28 +0200 Subject: [PATCH] OO-4207: Respect user visibility when get the fully assessed from passed --- .../assessment/manager/CourseAssessmentManagerImpl.java | 2 +- .../course/condition/ConditionNodeAccessProvider.java | 2 +- .../org/olat/course/learningpath/LearningPathConfigs.java | 2 +- .../manager/LearningPathNodeAccessProvider.java | 5 +++-- .../learningpath/model/ModuleLearningPathConfigs.java | 8 ++++---- .../model/UnsupportedLearningPathConfigs.java | 2 +- .../org/olat/course/nodeaccess/NodeAccessProvider.java | 2 +- .../org/olat/course/nodeaccess/NodeAccessService.java | 4 +++- .../course/nodeaccess/manager/NodeAccessServiceImpl.java | 5 +++-- src/main/java/org/olat/course/nodes/ScormCourseNode.java | 2 +- .../course/nodes/st/assessment/STLearningPathConfigs.java | 2 +- .../manager/LearningPathNodeAccessProviderTest.java | 4 ++-- 12 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java index 12c8a81160a..7b5f7735d7e 100644 --- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java @@ -530,7 +530,7 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { assessmentEntry = assessmentService.updateAssessmentEntry(assessmentEntry); DBFactory.getInstance().commit(); - nodeAccessService.onPassedUpdated(courseNode, userCourseEnv, passed, Role.auto); + nodeAccessService.onPassedUpdated(courseNode, userCourseEnv, passed, assessmentEntry.getUserVisibility(), by); nodeAccessService.onStatusUpdated(courseNode, userCourseEnv, assessmentEntry.getAssessmentStatus(), by); DBFactory.getInstance().commit(); diff --git a/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java b/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java index e3223daba4c..7d38882dcb4 100644 --- a/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java +++ b/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java @@ -105,7 +105,7 @@ public class ConditionNodeAccessProvider implements NodeAccessProvider { } @Override - public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Role by) { + public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Boolean userVisibility, Role by) { // nothing to do } diff --git a/src/main/java/org/olat/course/learningpath/LearningPathConfigs.java b/src/main/java/org/olat/course/learningpath/LearningPathConfigs.java index 3601181bf2d..5c74add4f22 100644 --- a/src/main/java/org/olat/course/learningpath/LearningPathConfigs.java +++ b/src/main/java/org/olat/course/learningpath/LearningPathConfigs.java @@ -40,7 +40,7 @@ public interface LearningPathConfigs { public FullyAssessedResult isFullyAssessedOnConfirmation(); - public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed); + public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed, Boolean userVisibility); public FullyAssessedResult isFullyAssessedOnStatus(AssessmentEntryStatus status); diff --git a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java index 015d4a62cad..8c1955b7106 100644 --- a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java +++ b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java @@ -120,8 +120,9 @@ public class LearningPathNodeAccessProvider implements NodeAccessProvider { } @Override - public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Role by) { - FullyAssessedResult result = getConfigs(courseNode).isFullyAssessedOnPassed(passed); + public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, + Boolean userVisibility, Role by) { + FullyAssessedResult result = getConfigs(courseNode).isFullyAssessedOnPassed(passed, userVisibility); updateFullyAssessed(courseNode, userCourseEnv, by, result); } diff --git a/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java b/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java index 0c9c1562b05..bb0c94d8224 100644 --- a/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java +++ b/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java @@ -98,10 +98,10 @@ public class ModuleLearningPathConfigs implements LearningPathConfigs { } @Override - public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed) { + public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed, Boolean userVisibility) { String doneTriggerName = getDoneTriggerName(); if (CONFIG_VALUE_TRIGGER_PASSED.equals(doneTriggerName)) { - boolean fullyAssessed = Boolean.TRUE.equals(passed); + boolean fullyAssessed = Boolean.TRUE.equals(passed) && Boolean.TRUE.equals(userVisibility); return LearningPathConfigs.fullyAssessed(true, fullyAssessed, doneOnFullyAssessed); } return LearningPathConfigs.notFullyAssessed(); @@ -115,8 +115,8 @@ public class ModuleLearningPathConfigs implements LearningPathConfigs { public FullyAssessedResult isFullyAssessedOnStatus(AssessmentEntryStatus status) { String doneTriggerName = getDoneTriggerName(); if (CONFIG_VALUE_TRIGGER_STATUS_DONE.equals(doneTriggerName)) { - boolean fulylAssessed = AssessmentEntryStatus.done.equals(status); - return LearningPathConfigs.fullyAssessed(true, fulylAssessed, false); + boolean fullyAssessed = AssessmentEntryStatus.done.equals(status); + return LearningPathConfigs.fullyAssessed(true, fullyAssessed, false); } return LearningPathConfigs.notFullyAssessed(); } diff --git a/src/main/java/org/olat/course/learningpath/model/UnsupportedLearningPathConfigs.java b/src/main/java/org/olat/course/learningpath/model/UnsupportedLearningPathConfigs.java index 9611843403c..5c5ee3b3ad9 100644 --- a/src/main/java/org/olat/course/learningpath/model/UnsupportedLearningPathConfigs.java +++ b/src/main/java/org/olat/course/learningpath/model/UnsupportedLearningPathConfigs.java @@ -57,7 +57,7 @@ public class UnsupportedLearningPathConfigs implements LearningPathConfigs { } @Override - public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed) { + public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed, Boolean userVisibility) { return LearningPathConfigs.notFullyAssessed(); } diff --git a/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java b/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java index 14eb08f05d2..50ffc57e96b 100644 --- a/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java +++ b/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java @@ -50,7 +50,7 @@ public interface NodeAccessProvider extends NodeAccessProviderIdentifier { public void onAssessmentConfirmed(CourseNode courseNode, UserCourseEnvironment userCourseEnv); - public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Role by); + public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Boolean userVisibility, Role by); public void onStatusUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, AssessmentEntryStatus status, Role by); diff --git a/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java b/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java index 3d2e21423f0..5e8117e7e24 100644 --- a/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java +++ b/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java @@ -91,9 +91,11 @@ public interface NodeAccessService { * @param courseNode * @param userCourseEnv * @param passed + * @param userVisibility * @param by */ - public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Role by); + public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, + Boolean userVisibility, Role by); /** * Hook after the completion and the run status is updated. diff --git a/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java b/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java index c5d6e3b9b6a..99b04341fef 100644 --- a/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java +++ b/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java @@ -104,9 +104,10 @@ public class NodeAccessServiceImpl implements NodeAccessService, NodeVisitedList } @Override - public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, Role by) { + public void onPassedUpdated(CourseNode courseNode, UserCourseEnvironment userCourseEnv, Boolean passed, + Boolean userVisibility, Role by) { NodeAccessType type = NodeAccessType.of(userCourseEnv); - getNodeAccessProvider(type).onPassedUpdated(courseNode, userCourseEnv, passed, by); + getNodeAccessProvider(type).onPassedUpdated(courseNode, userCourseEnv, passed, userVisibility, by); } @Override diff --git a/src/main/java/org/olat/course/nodes/ScormCourseNode.java b/src/main/java/org/olat/course/nodes/ScormCourseNode.java index 5ff52f1b040..89c3db9a872 100644 --- a/src/main/java/org/olat/course/nodes/ScormCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ScormCourseNode.java @@ -178,7 +178,7 @@ public class ScormCourseNode extends AbstractAccessableCourseNode { boolean hasPassed = new ScormAssessmentConfig(getModuleConfiguration()).hasPassed(); boolean isPassedTrigger = CoreSpringFactory.getImpl(ScormLearningPathNodeHandler.class) .getConfigs(this) - .isFullyAssessedOnPassed(null) + .isFullyAssessedOnPassed(null, null) .isFullyAssessed(); return isPassedTrigger && !hasPassed; } diff --git a/src/main/java/org/olat/course/nodes/st/assessment/STLearningPathConfigs.java b/src/main/java/org/olat/course/nodes/st/assessment/STLearningPathConfigs.java index d725d8a87a3..f8e3e921869 100644 --- a/src/main/java/org/olat/course/nodes/st/assessment/STLearningPathConfigs.java +++ b/src/main/java/org/olat/course/nodes/st/assessment/STLearningPathConfigs.java @@ -57,7 +57,7 @@ public class STLearningPathConfigs implements LearningPathConfigs { } @Override - public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed) { + public FullyAssessedResult isFullyAssessedOnPassed(Boolean passed, Boolean userVisibility) { return LearningPathConfigs.notFullyAssessed(); } diff --git a/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java b/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java index e38ce95a5da..7f7c72ee62b 100644 --- a/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java +++ b/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java @@ -234,9 +234,9 @@ public class LearningPathNodeAccessProviderTest { @Test public void shouldInvokePassedConfig() { - sut.onPassedUpdated(courseNodeMock, coachCourseEnv, null, null); + sut.onPassedUpdated(courseNodeMock, coachCourseEnv, null, null, null); - verify(configMock).isFullyAssessedOnPassed(any()); + verify(configMock).isFullyAssessedOnPassed(any(), null); } @Test -- GitLab