diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java index 0ab4cac1d667bdc6548f5b907ac552fa0a679026..82920aa2e1d6f7c970bc290082afb8b81b573975 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -666,8 +666,11 @@ public class BaseFullWebappController extends BasicController implements ChiefCo lockStatus = LockStatus.locked; removeAsListenerAndDispose(assessmentGuardCtrl); assessmentGuardCtrl = null; - } else { + } else if("continue".equals(event.getCommand())) { initializeDefaultSite(ureq); + removeAsListenerAndDispose(assessmentGuardCtrl); + assessmentGuardCtrl = null; + lockStatus = null; } } else { int tabIndex = dtabsControllers.indexOf(source); @@ -1359,8 +1362,13 @@ public class BaseFullWebappController extends BasicController implements ChiefCo if(lockResource != null && lockResource.getResourceableId().equals(mode.getResource().getResourceableId())) { logAudit("Async unlock resource for user: " + getIdentity().getName() + " (" + mode.getResource() + ")", null); unlockResource(); + if(lockMode != null) { + //check if there is a locked resource first + lockStatus = LockStatus.need; + } else { + lockStatus = null; + } lockMode = null; - lockStatus = null; unlock = true; } else { unlock = false; @@ -1385,10 +1393,15 @@ public class BaseFullWebappController extends BasicController implements ChiefCo private boolean checkAssessmentGuard(UserRequest ureq, TransientAssessmentMode mode) { boolean needUpdate; + if(this.getIdentity() != null) { + System.out.println(getIdentity().getName() + " Lock status " + lockStatus); + } if(assessmentGuardCtrl == null) { if(lockStatus == LockStatus.need) { + List<TransientAssessmentMode> modes = mode == null ? + Collections.<TransientAssessmentMode>emptyList() : Collections.singletonList(mode); assessmentGuardCtrl = new AssessmentModeGuardController(ureq, getWindowControl(), - Collections.singletonList(mode), true); + modes , true); listenTo(assessmentGuardCtrl); assessmentGuardCtrl.getInitialComponent(); lockStatus = LockStatus.popup; diff --git a/src/main/java/org/olat/course/assessment/ui/AssessmentModeGuardController.java b/src/main/java/org/olat/course/assessment/ui/AssessmentModeGuardController.java index 0e721a45609a766d235debd0f4bf0e408864cb34..ad44e24f1e13ac517606b38bf4ebca66c1918174 100644 --- a/src/main/java/org/olat/course/assessment/ui/AssessmentModeGuardController.java +++ b/src/main/java/org/olat/course/assessment/ui/AssessmentModeGuardController.java @@ -354,6 +354,8 @@ public class AssessmentModeGuardController extends BasicController implements Ge boolean canContinue = guards.getSize() == 0; if(canContinue) { + cmc.deactivate(); + fireEvent(ureq, new Event("continue")); String businessPath = "[MyCoursesSite:0]"; NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl()); @@ -370,6 +372,8 @@ public class AssessmentModeGuardController extends BasicController implements Ge * @param mode */ private void launchAssessmentMode(UserRequest ureq, TransientAssessmentMode mode) { + cmc.deactivate(); + ureq.getUserSession().setAssessmentModes(null); OLATResourceable resource = mode.getResource(); ureq.getUserSession().setLockResource(resource, mode); diff --git a/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html b/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html index 91bfb6984b2f2e9c833262aa224bd646f3d489b3..4ca36921b9b82eee15cf2dd65a999667961f8eff 100644 --- a/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html +++ b/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html @@ -1,4 +1,9 @@ -<div class="o_info">$r.translate("current.mode.desc")</div> +#if($guards.list.empty) + <div class="o_info">$r.translate("current.mode.end.info")</div> +#else + <div class="o_info">$r.translate("current.mode.desc")</div> +#end + #foreach($mode in $guards.list) <h2>$mode.name <small>$r.translate("current.mode.course", $mode.displayName)</small></h2> <p><em>$r.translate("current.mode.datetimes", $mode.begin, $mode.end)</em>