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

raeburn raeburn at source.lon-capa.org
Sat Jan 18 16:14:59 EST 2025


raeburn		Sat Jan 18 21:14:59 2025 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  - Handle case where weight in effect for a problem part for a user is 0 
    when passing scores back to launcher CMS for students who accessed via 
    deep-link with LTI-mediated link protection, when course personnel use
    "Select individual students to grade" to change a student's score.
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.807 loncom/homework/grades.pm:1.808
--- loncom/homework/grades.pm:1.807	Sat Jan 18 05:06:35 2025
+++ loncom/homework/grades.pm	Sat Jan 18 21:14:59 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.807 2025/01/18 05:06:35 raeburn Exp $
+# $Id: grades.pm,v 1.808 2025/01/18 21:14:59 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -4463,7 +4463,8 @@
 
 #---- Save the score and award for each student, if changed
 sub saveHandGrade {
-    my ($request,$symb,$stuname,$domain,$newflg,$submitter,$part,$queueable,$needpb,$skip_passback,$pbsave) = @_;
+    my ($request,$symb,$stuname,$domain,$newflg,$submitter,
+        $part,$queueable,$needpb,$skip_passback,$pbsave) = @_;
     my @version_parts;
     my $usec = &Apache::lonnet::getsection($domain,$stuname,
 					   $env{'request.course.id'});
@@ -4471,7 +4472,7 @@
     my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$domain,$stuname);
     my @parts_graded;
     my %newrecord  = ();
-    my ($pts,$wgt,$totchg,$sendupdate) = ('','',0,0);
+    my ($pts,$wgt,$totchg,$sendupdate,$posspb) = ('','',0,0,0);
     my %aggregate = ();
     my $aggregateflag = 0;
     if ($env{'form.HIDE'.$newflg}) {
@@ -4479,13 +4480,19 @@
         my $numchgs = &makehidden($version,$parts,\%record,$symb,$domain,$stuname,1);
         $totchg += $numchgs;
     }
+    if ((ref($needpb) eq 'HASH') && (keys(%{$needpb}))) {
+        $poss_pb = 1;
+    }
     my (%weights,%awardeds,%excuseds);
     my @parts = split(/:/,$env{'form.partlist'.$newflg});
     foreach my $new_part (@parts) {
 	#collaborator ($submitter may vary for different parts)
 	if ($submitter && $new_part ne $part) { next; }
 	my $dropMenu = $env{'form.GD_SEL'.$newflg.'_'.$new_part};
-        if ($env{'form.WGT'.$newflg.'_'.$new_part} eq '') {
+        if ($poss_pb) {
+            $weights{$symb}{$new_part} =
+                &Apache::lonnet::EXT('resource.'.$new_part.'.weight',$symb,$udom,$uname);
+        } elsif ($env{'form.WGT'.$newflg.'_'.$new_part} eq '') {
             $weights{$symb}{$new_part} = 1;
         } else {
             $weights{$symb}{$new_part} = $env{'form.WGT'.$newflg.'_'.$new_part};
@@ -4596,12 +4603,9 @@
         &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,
 			      $cdom,$cnum);
     }
-    if (($sendupdate || $totchg) && (!$submitter)) {
-        if ((ref($needpb) eq 'HASH') &&
-            (keys(%{$needpb}))) {
-            &process_passbacks('handgrade',[$symb],$cdom,$cnum,$domain,$stuname,$usec,\%weights,
-                               \%awardeds,\%excuseds,$needpb,$skip_passback,$pbsave);
-        }
+    if (($sendupdate || $totchg) && (!$submitter) && ($poss_pb)) {
+        &process_passbacks('handgrade',[$symb],$cdom,$cnum,$domain,$stuname,$usec,\%weights,
+                           \%awardeds,\%excuseds,$needpb,$skip_passback,$pbsave);
     }
     return ('',$pts,$wgt,$totchg,$sendupdate);
 }




More information about the LON-CAPA-cvs mailing list