[LON-CAPA-cvs] cvs: loncom /interface lonnavmaps.pm

raeburn raeburn at source.lon-capa.org
Sat Jun 28 13:34:00 EDT 2025


raeburn		Sat Jun 28 17:34:00 2025 EDT

  Modified files:              
    /loncom/interface	lonnavmaps.pm 
  Log:
  - Bug 6623. 
  
  
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.576 loncom/interface/lonnavmaps.pm:1.577
--- loncom/interface/lonnavmaps.pm:1.576	Sat Jun 28 14:34:46 2025
+++ loncom/interface/lonnavmaps.pm	Sat Jun 28 17:34:00 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Navigate Maps Handler
 #
-# $Id: lonnavmaps.pm,v 1.576 2025/06/28 14:34:46 raeburn Exp $
+# $Id: lonnavmaps.pm,v 1.577 2025/06/28 17:34:00 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -425,6 +425,11 @@
 Convenience function, so others can use it: Is there only one try remaining for the
 part, with more than one try to begin with, not due yet and still can be done?
 
+=item graceEndsUnder24Hours()
+
+Convenience function, so others can use it: Is the problem past-due with a grace period
+which ends in less than 24 hours, and still can be done?
+
 =item advancedUser()
 
 This puts a human-readable name on the env variable.
@@ -759,8 +764,14 @@
             }
         }
         if ($due) {
-            return &mt("Due [_1]",&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'end'),$res->symb(),'duedate',$part)) .
-                " $triesString";
+            my $now = time;
+            if (($now >= $due) && ($overdue) && ($now < $overdue)) {
+                return &mt("Grace period ends [_1]",&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($overdue,'end'),$res->symb(),'grace',$part)).
+		       " $triesString";
+            } else {
+                return &mt("Due [_1]",&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'end'),$res->symb(),'duedate',$part)) .
+                       " $triesString";
+            }
         } else {
             return &Apache::lonhtmlcommon::direct_parm_link(&mt("No due date"),$res->symb(),'duedate',$part)." $triesString";
         }
@@ -794,6 +805,19 @@
         $res->duedate($part) > time();
 }
 
+sub graceEndsUnder24Hours {
+    my $res = shift;
+    my $part = shift;
+    my $status = $res->status($part);
+    my $now = time();
+
+    return ($status == $res->OPEN() ||
+            $status == $res->TRIES_LEFT()) &&
+            $res->duedate($part) && $res->duedate($part) < $now &&
+            $res->overduedate($part) && $res->overduedate($part) < time()+(24*60*60) &&
+            $res->duedate($part) && $res->duedate($part) < $now+(24*60*60) &&
+            $res->overduedate($part) > $now;
+}
 
 sub advancedUser {
     return $env{'request.role.adv'};
@@ -1264,6 +1288,9 @@
         if (dueInLessThan24Hours($resource, $part)) {
             $color = $hurryUpColor;
             $info = ' title="'.&mt('Due in less than 24 hours!').'"';
+        } elsif (graceEndsUnder24Hours($resource, $part)) {
+            $color = $hurryUpColor;
+            $info = ' title="'.&mt('Grace period ends in less than 24 hours!').'"';
         } elsif (lastTry($resource, $part)) {
             unless (($resource->problemstatus($part) eq 'no') ||
                     ($resource->problemstatus($part) eq 'no_feedback_ever')) {




More information about the LON-CAPA-cvs mailing list