diff --git a/src/main/java/org/olat/course/nodes/cp/CPRunController.java b/src/main/java/org/olat/course/nodes/cp/CPRunController.java index 160ec30744f82ffba46198838b2448a841e76172..ec0a89ed267f5081b30d14ed10319055fdebed69 100644 --- a/src/main/java/org/olat/course/nodes/cp/CPRunController.java +++ b/src/main/java/org/olat/course/nodes/cp/CPRunController.java @@ -205,7 +205,7 @@ public class CPRunController extends BasicController implements ControllerEventL cpAssessmentProvider = userCourseEnv.getIdentityEnvironment().getRoles().isGuestOnly() ? DryRunAssessmentProvider.create() - : PersistingAssessmentProvider.create(re, getIdentity()); + : PersistingAssessmentProvider.create(re, getIdentity(), userCourseEnv.isParticipant()); } // else cpRoot is already set (save some db access if the user opens / // closes / reopens the cp from the same CPRuncontroller instance) diff --git a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java index 2996dc554fbf0d67411cba883015d2b8b5f64b5b..8cfa79b7c0ae059a065aac6d78f1872fe66b6287 100644 --- a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java +++ b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java @@ -108,7 +108,7 @@ public class CPEditMainController extends BasicController implements ToolbarAwar } else { showInfo("contentcontroller.no.lock"); - CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(cpEntry, getIdentity()); + CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(cpEntry, getIdentity(), false); Controller cpCtr = CPUIFactory.getInstance() .createMainLayoutController(ureq, wControl, cpContainer, true, deliveryOptions, cpAssessmentProvider); putInitialPanel(cpCtr.getInitialComponent()); diff --git a/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java b/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java index c8305fb35eb4a969efde3e336204ae6875754bdc..21d1404fa1b41cc36b3002391bf58b0e5857b5f9 100644 --- a/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java +++ b/src/main/java/org/olat/modules/cp/CPAssessmentProvider.java @@ -29,6 +29,8 @@ import org.olat.modules.assessment.model.AssessmentEntryStatus; */ public interface CPAssessmentProvider { + boolean isLearningPathCSS(); + AssessmentEntryStatus onPageVisited(String itemIdentifier); AssessmentEntryStatus getStatus(String itemIdentifier); diff --git a/src/main/java/org/olat/modules/cp/CPDisplayController.java b/src/main/java/org/olat/modules/cp/CPDisplayController.java index 2e1a8eb349060cdfa5b88894888f9a59761f5902..991ebd8bfd4155cff8f73bb9b2d7ac45d02bf9c5 100644 --- a/src/main/java/org/olat/modules/cp/CPDisplayController.java +++ b/src/main/java/org/olat/modules/cp/CPDisplayController.java @@ -498,8 +498,10 @@ public class CPDisplayController extends BasicController implements Activateable UserObject userObject = (UserObject)treeNode.getUserObject(); String identifier = userObject.getIdentifier(); AssessmentEntryStatus status = cpAssessmentProvider.onPageVisited(identifier); - String cssClass = CPManifestTreeModel.getItemCssClass(status); - ((GenericTreeNode)treeNode).setCssClass(cssClass); + if (cpAssessmentProvider.isLearningPathCSS()) { + String cssClass = CPManifestTreeModel.getItemCssClass(status); + ((GenericTreeNode)treeNode).setCssClass(cssClass); + } } @Override diff --git a/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java b/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java index e939daa7d058eb45e940931fa0094359072d3c1a..ce66b0bc41545dc1f586c3a09b0dee7138e9ba6c 100644 --- a/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java +++ b/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java @@ -212,7 +212,9 @@ public class CPManifestTreeModel extends GenericTreeModel { } } else if (item.getName().equals("item")) { gtn.setIconCssClass("o_cp_item"); - gtn.setCssClass(getItemCssClass(identifier)); + if (cpAssessmentProvider.isLearningPathCSS()) { + gtn.setCssClass(getItemCssClass(identifier)); + } //set resolved file path directly String identifierref = item.attributeValue("identifierref"); if(identifierref != null) { diff --git a/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java b/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java index 46eb53be33d31851aee827a2794f5855c7108a70..2513643c5e54de90ca9a875d1618c406fb9958b5 100644 --- a/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java +++ b/src/main/java/org/olat/modules/cp/DryRunAssessmentProvider.java @@ -38,6 +38,11 @@ public class DryRunAssessmentProvider implements CPAssessmentProvider { private DryRunAssessmentProvider() { // } + + @Override + public boolean isLearningPathCSS() { + return false; + } @Override public AssessmentEntryStatus onPageVisited(String itemIdentifier) { diff --git a/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java b/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java index af87aad28f7cea642fd84eac80484ea2ee8fe4e6..08fa9e87cce587c6a0026fc21b03bcbbfd8ec09a 100644 --- a/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java +++ b/src/main/java/org/olat/modules/cp/PersistingAssessmentProvider.java @@ -39,24 +39,32 @@ public class PersistingAssessmentProvider implements CPAssessmentProvider { private final Identity identity; private final RepositoryEntry cpEntry; + private final boolean learningPathCSS; private Map<String, AssessmentEntryStatus> identifierToStatus; private AssessmentService assessmentService; - public static final CPAssessmentProvider create(RepositoryEntry cpEntry, Identity identity) { - return new PersistingAssessmentProvider(cpEntry, identity); + public static final CPAssessmentProvider create(RepositoryEntry cpEntry, Identity identity, + boolean learningPathCSS) { + return new PersistingAssessmentProvider(cpEntry, identity, learningPathCSS); } - private PersistingAssessmentProvider(RepositoryEntry cpEntry, Identity identity) { + private PersistingAssessmentProvider(RepositoryEntry cpEntry, Identity identity, boolean learningPathCSS) { this.identity = identity; this.cpEntry = cpEntry; + this.learningPathCSS = learningPathCSS; this.assessmentService = CoreSpringFactory.getImpl(AssessmentService.class); this.identifierToStatus = assessmentService.loadAssessmentEntriesByAssessedIdentity(identity, cpEntry).stream() .filter(ae -> ae.getSubIdent() != null && ae.getAssessmentStatus() != null) .collect(Collectors.toMap(AssessmentEntry::getSubIdent, AssessmentEntry::getAssessmentStatus)); } + @Override + public boolean isLearningPathCSS() { + return learningPathCSS; + } + @Override public AssessmentEntryStatus onPageVisited(String itemIdentifier) { AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(identity, null, cpEntry, itemIdentifier, false, null); diff --git a/src/main/java/org/olat/repository/handlers/ImsCPHandler.java b/src/main/java/org/olat/repository/handlers/ImsCPHandler.java index 902fea30e09bbfbfd91af7f1addb0ee399d1a4bd..ae5e4e4ce3992961f9fdc4f40e4fa2e06438f84b 100644 --- a/src/main/java/org/olat/repository/handlers/ImsCPHandler.java +++ b/src/main/java/org/olat/repository/handlers/ImsCPHandler.java @@ -230,7 +230,7 @@ public class ImsCPHandler extends FileHandler { CoreSpringFactory.getImpl(UserCourseInformationsManager.class) .updateUserCourseInformations(entry.getOlatResource(), uureq.getIdentity()); - CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(re, uureq.getIdentity()); + CPAssessmentProvider cpAssessmentProvider = PersistingAssessmentProvider.create(re, uureq.getIdentity(), false); CPDisplayController cpCtr = new CPDisplayController(uureq, wwControl, vfsWrapper, true, true, activateFirstPage, true, deliveryOptions, initialUri, entry.getOlatResource(), "", false, cpAssessmentProvider); LayoutMain3ColsController ctr = new LayoutMain3ColsController(uureq, wwControl, cpCtr.getMenuComponent(), cpCtr.getInitialComponent(), vfsWrapper.getName());