From e02f308da68e09444e04f2f9533a02fd4a0e06ac Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Sun, 8 Feb 2015 17:11:20 +0100 Subject: [PATCH] OO-1349: deactivate the popup, fix an issue with students stressed by several exams --- .../fullWebApp/BaseFullWebappController.java | 19 ++++++++++++++++--- .../ui/AssessmentModeGuardController.java | 4 ++++ .../assessment/ui/_content/choose_mode.html | 7 ++++++- 3 files changed, 26 insertions(+), 4 deletions(-) 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 0ab4cac1d66..82920aa2e1d 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 0e721a45609..ad44e24f1e1 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 91bfb6984b2..4ca36921b9b 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> -- GitLab