diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java index 051262b4cdcf90ec23140cbdb1a86ca60ee7b168..0187455754cc7f0a4acbe8ba9dc0475529c500d7 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java @@ -149,6 +149,7 @@ public class JSDateChooser extends TextElementImpl implements DateChooser { @Override public void evalFormRequest(UserRequest ureq) { super.evalFormRequest(ureq); + if(!isEnabled()) return; try { String receiverId = component.getFormDispatchId(); diff --git a/src/main/java/org/olat/core/util/CodeHelper.java b/src/main/java/org/olat/core/util/CodeHelper.java index 0553412c201e4afe26f1692929c66133742b0dda..05279b53c923e2e4ac5aa96af9e4ecf37d163eea 100644 --- a/src/main/java/org/olat/core/util/CodeHelper.java +++ b/src/main/java/org/olat/core/util/CodeHelper.java @@ -83,9 +83,7 @@ public class CodeHelper { } public static long getUniqueIDFromString(String base){ - int code = Math.abs(base.hashCode()); - Long l = new Long(code); - return l; + return Math.abs(base.hashCode()); } /** diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java index 9fec4bd44c49779bda4b9bd77cdf311f56bcd930..ea5c8491c06c1a7bae3c43547d2992f094617cda 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java @@ -340,16 +340,14 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor cal.setTime(now); long nowInMillis = cal.getTimeInMillis(); - if(nowInMillis > programmedBeginInMillis) { - Date end = mode.getEnd(); - cal.setTime(end); - cal.add(Calendar.MILLISECOND, (int)(nowInMillis - programmedBeginInMillis)); - - Date movedEnd = cal.getTime(); - ((AssessmentModeImpl)mode).setEnd(movedEnd); - Date endWithFollowupTime = assessmentModeManager.evaluateFollowupTime(movedEnd, mode.getFollowupTime()); - ((AssessmentModeImpl)mode).setEndWithFollowupTime(endWithFollowupTime); - } + Date end = mode.getEnd(); + cal.setTime(end); + cal.add(Calendar.MILLISECOND, (int)(nowInMillis - programmedBeginInMillis)); + + Date movedEnd = cal.getTime(); + ((AssessmentModeImpl)mode).setEnd(movedEnd); + Date endWithFollowupTime = assessmentModeManager.evaluateFollowupTime(movedEnd, mode.getFollowupTime()); + ((AssessmentModeImpl)mode).setEndWithFollowupTime(endWithFollowupTime); } private void sendEvent(String cmd, AssessmentMode mode, Set<Long> assessedIdentityKeys) { diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewListController.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewListController.java index 3c6532738c0bb2c61565dda04b1ef787f7a39ce9..9843ce8601c6fb47c2d5221fbfb314444a20f652 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewListController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewListController.java @@ -189,9 +189,10 @@ public class AssessmentModeOverviewListController extends FormBasicController im Calendar cal = Calendar.getInstance(); long now = cal.getTimeInMillis(); cal.setTime(mode.getEnd()); - boolean endSoon = ((cal.getTimeInMillis() - now) < (5l * 60l * 1000l)) + long endInMillseconds = cal.getTimeInMillis() - now; + boolean endSoon = (endInMillseconds < (5l * 60l * 1000l)) && (mode.getStatus() == Status.assessment || mode.getStatus() == Status.followup); - AssessmentModeOverviewRow row = new AssessmentModeOverviewRow(mode, isToday, endSoon); + AssessmentModeOverviewRow row = new AssessmentModeOverviewRow(mode, isToday, endSoon, endInMillseconds); LectureBlock block = mode.getLectureBlock(); boolean allowToStartStop = assessmentCallback.canStartStopAllAssessments() diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewRow.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewRow.java index d96fb724c92bbd7591c346e847f57ffad424944c..50c14a4a295eba3b3fccbf96082c33bb0d84cb09 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewRow.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentModeOverviewRow.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.List; import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.util.CodeHelper; import org.olat.course.assessment.AssessmentMode; /** @@ -36,14 +37,22 @@ public class AssessmentModeOverviewRow { private FormLink actionButton; private final List<FormLink> elementLinks = new ArrayList<>(); + private final String id; private final boolean today; private final boolean endSoon; + private final long endInMilliSeconds; private final AssessmentMode assessmentMode; - public AssessmentModeOverviewRow(AssessmentMode assessmentMode, boolean today, boolean endSoon) { + public AssessmentModeOverviewRow(AssessmentMode assessmentMode, boolean today, boolean endSoon, long endInMilliSeconds) { this.today = today; this.endSoon = endSoon; this.assessmentMode = assessmentMode; + this.endInMilliSeconds = endInMilliSeconds; + id = "m" + CodeHelper.getRAMUniqueID(); + } + + public String getId() { + return id; } public String getName() { @@ -58,6 +67,10 @@ public class AssessmentModeOverviewRow { return endSoon; } + public long getEndInMilliSeconds() { + return endInMilliSeconds; + } + public AssessmentMode getAssessmentMode() { return assessmentMode; } diff --git a/src/main/java/org/olat/course/assessment/ui/tool/_content/assessment_mode_overview_row.html b/src/main/java/org/olat/course/assessment/ui/tool/_content/assessment_mode_overview_row.html index bd79f34824c233eb8ca52804d8ac2ad857fd47c1..266a9d54b4067a000e2cc38e11d7d94e9af90560 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/_content/assessment_mode_overview_row.html +++ b/src/main/java/org/olat/course/assessment/ui/tool/_content/assessment_mode_overview_row.html @@ -1,4 +1,4 @@ -<div class="o_assessment_mode_row #if($r.isTrue(${row.isEndSoon()})) o_assessment_end_soon #end #if($r.isTrue(${row.isToday()})) o_assessment_today #end clearfix"> +<div id="$row.id" class="o_assessment_mode_row #if($r.isTrue(${row.isEndSoon()})) o_assessment_end_soon #end #if($r.isTrue(${row.isToday()})) o_assessment_today #end clearfix"> <h4>$r.escapeHtml($row.name) <small>${helper.getBeginEndDate($row.assessmentMode)}</small></h4> <p>$r.translate("table.header.assessmentStatus"): <span><i class="o_icon o_icon-fw $helper.getCssClass($row.assessmentMode)"> </i> ${helper.getStatusLabel($row.assessmentMode)}</span> #if($r.isNotNull($row.actionButtonName)) $r.render($row.actionButton) #end</p> #set($elementLinks = ${row.getElementLinkNames()}) @@ -9,4 +9,13 @@ #end </ul> #end + #if($row.endInMilliSeconds > 300000) + <script> + jQuery(function() { + setTimeout(function() { + jQuery('#${row.id}').addClass('o_assessment_end_soon'); + }, ($row.endInMilliSeconds - 300000)); + }); + </script> + #end </div> \ No newline at end of file