From 942d88af4e394b810fa4263fe40f84b5f20a7e66 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 10 Apr 2017 09:37:45 +0200 Subject: [PATCH] OO-2680: reopen as 2 meaning, change the close status to inProgress or change the begin / end date of the section --- .../ui/BinderAssessmentController.java | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderAssessmentController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderAssessmentController.java index ee7b722a03e..5e6a97b8b82 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/BinderAssessmentController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/BinderAssessmentController.java @@ -21,6 +21,7 @@ package org.olat.modules.portfolio.ui; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,6 +45,7 @@ import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.id.Identity; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.StringHelper; @@ -88,6 +90,9 @@ public class BinderAssessmentController extends FormBasicController { private FormLink saveAndDoneLink, reopenLink; private BinderAssessmentDataModel model; + private CloseableModalController cmc; + private SectionDatesEditController editSectionDatesCtrl; + private boolean withScore; private boolean withPassed; @@ -238,6 +243,29 @@ public class BinderAssessmentController extends FormBasicController { protected void doDispose() { // } + + + + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if(editSectionDatesCtrl == source) { + if(event == Event.DONE_EVENT) { + loadModel(); + } + cmc.deactivate(); + cleanUp(); + } else if(cmc == source) { + cleanUp(); + } + super.event(ureq, source, event); + } + + private void cleanUp() { + removeAsListenerAndDispose(editSectionDatesCtrl); + removeAsListenerAndDispose(cmc); + editSectionDatesCtrl = null; + cmc = null; + } @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { @@ -260,7 +288,7 @@ public class BinderAssessmentController extends FormBasicController { fireEvent(ureq, Event.CHANGED_EVENT); } else if("reopen".equals(cmd)) { AssessmentSectionWrapper row = (AssessmentSectionWrapper)button.getUserObject(); - doReopen(row.getSection()); + doReopen(ureq, row.getSection()); loadModel(); fireEvent(ureq, Event.CHANGED_EVENT); } @@ -310,10 +338,20 @@ public class BinderAssessmentController extends FormBasicController { LoggingResourceable.wrap(section)); } - private void doReopen(Section section) { - portfolioService.changeSectionStatus(section, SectionStatus.inProgress, getIdentity()); - ThreadLocalUserActivityLogger.log(PortfolioLoggingAction.PORTFOLIO_SECTION_REOPEN, getClass(), - LoggingResourceable.wrap(section)); + private void doReopen(UserRequest ureq, Section section) { + if(section.getSectionStatus() != null && section.getSectionStatus().equals(SectionStatus.closed)) { + portfolioService.changeSectionStatus(section, SectionStatus.inProgress, getIdentity()); + ThreadLocalUserActivityLogger.log(PortfolioLoggingAction.PORTFOLIO_SECTION_REOPEN, getClass(), + LoggingResourceable.wrap(section)); + } else if(section.getEndDate() != null && section.getEndDate().compareTo(new Date()) < 0) { + editSectionDatesCtrl = new SectionDatesEditController(ureq, getWindowControl(), section); + listenTo(editSectionDatesCtrl); + + String title = translate("override.dates.section"); + cmc = new CloseableModalController(getWindowControl(), null, editSectionDatesCtrl.getInitialComponent(), true, title, true); + listenTo(cmc); + cmc.activate(); + } } private void doReopenBinder() { -- GitLab