From bc241f9c77b415b6091ef1368ba5558d213ba259 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Wed, 3 Jun 2020 15:13:47 +0200 Subject: [PATCH] OO-4726: Learning path symbolisation if user has not role participant (CP) --- .../org/olat/course/nodes/cp/CPRunController.java | 2 +- .../org/olat/ims/cp/ui/CPEditMainController.java | 2 +- .../org/olat/modules/cp/CPAssessmentProvider.java | 2 ++ .../org/olat/modules/cp/CPDisplayController.java | 6 ++++-- .../org/olat/modules/cp/CPManifestTreeModel.java | 4 +++- .../olat/modules/cp/DryRunAssessmentProvider.java | 5 +++++ .../modules/cp/PersistingAssessmentProvider.java | 14 +++++++++++--- .../org/olat/repository/handlers/ImsCPHandler.java | 2 +- 8 files changed, 28 insertions(+), 9 deletions(-) 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 160ec30744f..ec0a89ed267 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 2996dc554fb..8cfa79b7c0a 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 c8305fb35eb..21d1404fa1b 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 2e1a8eb3490..991ebd8bfd4 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 e939daa7d05..ce66b0bc415 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 46eb53be33d..2513643c5e5 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 af87aad28f7..08fa9e87cce 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 902fea30e09..ae5e4e4ce39 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()); -- GitLab