[LON-CAPA-cvs] cvs: loncom /homework inputtags.pm

raeburn raeburn at source.lon-capa.org
Mon Aug 25 00:21:52 EDT 2025


raeburn		Mon Aug 25 04:21:52 2025 EDT

  Modified files:              
    /loncom/homework	inputtags.pm 
  Log:
  - Bug 6623.
    - Status shown to student includes: "Submitted late -- score reduced"
      if lateness penalty applies.
    - If a student made earlier submission during grace period, but duedate
      changed to date/time in the future, previously stored latefrac, endgrace
      and pastdue no longer apply after a changed award for a new submission.  
  
  
Index: loncom/homework/inputtags.pm
diff -u loncom/homework/inputtags.pm:1.371 loncom/homework/inputtags.pm:1.372
--- loncom/homework/inputtags.pm:1.371	Thu Aug 21 16:21:41 2025
+++ loncom/homework/inputtags.pm	Mon Aug 25 04:21:52 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
-# input  definitons
+# input definitions
 #
-# $Id: inputtags.pm,v 1.371 2025/08/21 16:21:41 raeburn Exp $
+# $Id: inputtags.pm,v 1.372 2025/08/25 04:21:52 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1072,7 +1072,7 @@
 }
 
 sub decideoutput {
-    my ($award,$awarded,$awardmsg,$solved,$previous,$target,$nocorrect,$tdclass)=@_;
+    my ($award,$awarded,$awardmsg,$solved,$previous,$target,$nocorrect,$tdclass,$latefrac)=@_;
 
     my $message='';
     my $button=0;
@@ -1129,6 +1129,12 @@
 	    }
 	    $added_computer_text=1;
 	    if ($awarded > 0) {
+                if ((($latefrac ne '') && ($latefrac >= 0) && ($latefrac < 1)) &&
+                    ($target eq 'web')) {
+                    $message.= '<br /><span style="font-style: italic">'.
+                               &mt('Submitted late -- score reduced').
+                               '</span>';
+                }
 		my ($symb) = &Apache::lonnet::whichuser();
 		if (($symb ne '') 
 		    &&
@@ -1629,7 +1635,7 @@
     if ($Apache::lonhomework::results{"resource.$id.duedate"} ne '') {
         my $now = time();
         my $pastdue = $now - $Apache::lonhomework::results{"resource.$id.duedate"};
-        if ($pastdue) {
+        if ($pastdue > 0) {
             my $overduedate = &Apache::lonhomework::overdue_date($id);
             if ($overduedate) {
                 $Apache::lonhomework::results{"resource.$id.endgrace"} = $overduedate;
@@ -1641,6 +1647,18 @@
                     }
                 }
             }
+        } else {
+            foreach my $item ('latefrac','endgrace','pastdue') {
+                if ($Apache::lonhomework::history{"resource.$id.$item"} ne '') {
+                    $Apache::lonhomework::results{"resource.$id.$item"} = '';
+                }
+            }
+        }
+    } else {
+        foreach my $item ('latefrac','endgrace','pastdue') {
+            if ($Apache::lonhomework::history{"resource.$id.$item"} ne '') {
+                $Apache::lonhomework::results{"resource.$id.$item"} = '';
+            }
         }
     }
 }
@@ -1732,12 +1750,14 @@
     my $solved = $Apache::lonhomework::history{"$prefix.solved"};
     my $previous = $Apache::lonhomework::history{"$prefix.previous"};
     my $awardmsg = $Apache::lonhomework::history{"$prefix.awardmsg"};
+    my $latefrac = $Apache::lonhomework::history{"$prefix.latefrac"};
     &Apache::lonxml::debug("Found Award |$award|$solved|$awardmsg");
     if ( $award ne '' || $solved ne '' || $status eq 'SHOW_ANSWER') {
 	&Apache::lonxml::debug('Getting message');
 	($showbutton,my $css_class,$message,$previousmsg) =
 	    &decideoutput($award,$awarded,$awardmsg,$solved,$previous,
-			  $target,(($status eq 'CAN_ANSWER') || $nocorrect),$tdclass);
+			  $target,(($status eq 'CAN_ANSWER') || $nocorrect),
+                          $tdclass,$latefrac);
 	if ($target eq 'tex') {
 	    $message='\vskip 2 mm '.$message.' ';
 	} else {
@@ -1812,9 +1832,20 @@
 	}
     }
 
-    if ($Apache::lonhomework::history{"$prefix.afterduedate"}) {
+    if ($Apache::lonhomework::history{"$prefix.aftergrace"}) {
+        #last submission was after end of grace period
+        $latemessage=&mt(' The last submission was after the end of the grace period for late submissions ');
+        if ($target eq 'web') {
+            if ($usediv) {
+                $latemessage = '<span class="'."LC_prob_status $tdclass LC_answer_late".'">'.
+                               $latemessage.'</span>';
+            } else {
+                $latemessage='<td class="'.$tdclass.' LC_answer_late">'.$latemessage.'</td>';
+            }
+        }
+    } elsif ($Apache::lonhomework::history{"$prefix.afterduedate"}) {
 	#last submissions was after due date
-	$latemessage=&mt(' The last submission was after the Due Date ');;
+	$latemessage=&mt(' The last submission was after the Due Date ');
 	if ($target eq 'web') {
             if ($usediv) {
                 $latemessage = '<span class="'."LC_prob_status $tdclass LC_answer_late".'">'.




More information about the LON-CAPA-cvs mailing list