diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index 14447d9d6efa90478a9683d229d0c544f95d7547..23077fa46c787a8d9661c705b837eda84d74fc38 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -30,7 +30,6 @@ import java.util.Collections; import java.util.List; import java.util.Set; -import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -76,7 +75,6 @@ import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentChangedEvent; import org.olat.course.assessment.AssessmentMode; import org.olat.course.assessment.AssessmentMode.Status; -import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.config.CourseConfig; import org.olat.course.editor.PublishEvent; import org.olat.course.groupsandrights.CourseGroupManager; @@ -205,9 +203,6 @@ public class RunMainController extends MainLayoutBasicController implements Gene navHandler = new NavigationHandler(uce, treeFilter, false); updateTreeAndContent(ureq, currentCourseNode, null); - - //set the launch date after the evaluation - setLaunchDates(); if (courseRepositoryEntry != null && repositoryManager.createRepositoryEntryStatus(courseRepositoryEntry.getStatusCode()).isClosed()) { wControl.setWarning(translate("course.closed")); @@ -347,11 +342,6 @@ public class RunMainController extends MainLayoutBasicController implements Gene needsRebuildAfterRunDone = true; } - private void setLaunchDates() { - UserCourseInformationsManager userCourseInfoMgr = CoreSpringFactory.getImpl(UserCourseInformationsManager.class); - userCourseInfoMgr.updateUserCourseInformations(uce.getCourseEnvironment().getCourseGroupManager().getCourseResource(), getIdentity()); - } - private CourseNode updateAfterChanges(CourseNode courseNode) { if(currentCourseNode == null) return null; diff --git a/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java b/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java index ec7db0400500b2429395cf0764f7faa79201f803..20f86dded2ea00771f8c5ba7068f92266f0ec6f1 100644 --- a/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java +++ b/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java @@ -21,6 +21,7 @@ package org.olat.repository.ui; import java.util.Collections; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import org.olat.NewControllerFactory; import org.olat.core.commons.services.mark.Mark; @@ -60,6 +61,7 @@ import org.olat.core.util.resource.OresHelper; import org.olat.course.CourseModule; import org.olat.course.assessment.AssessmentMode; import org.olat.course.assessment.AssessmentModeManager; +import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.assessment.model.TransientAssessmentMode; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryManagedFlag; @@ -140,6 +142,7 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController private boolean assessmentLock;// by Assessment mode private AssessmentMode assessmentMode; private final RepositoryHandler handler; + private AtomicBoolean launchDateUpdated = new AtomicBoolean(false); private HistoryPoint launchedFromPoint; @@ -159,6 +162,8 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController private RepositoryHandlerFactory handlerFactory; @Autowired private AssessmentModeManager assessmentModeMgr; + @Autowired + private UserCourseInformationsManager userCourseInfoMgr; public RepositoryEntryRuntimeController(UserRequest ureq, WindowControl wControl, RepositoryEntry re, RepositoryEntrySecurity reSecurity, RuntimeControllerCreator runtimeControllerCreator) { @@ -906,6 +911,9 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController runtimeController = runtimeControllerCreator.create(ureq, getWindowControl(), toolbarPanel, re, reSecurity, assessmentMode); listenTo(runtimeController); toolbarPanel.rootController(re.getDisplayname(), runtimeController); + if(!launchDateUpdated.getAndSet(true)) { + userCourseInfoMgr.updateUserCourseInformations(re.getOlatResource(), getIdentity()); + } } else { runtimeController = new AccessRefusedController(ureq, getWindowControl()); listenTo(runtimeController);