--- loncom/homework/grades.pm 2024/12/10 17:04:38 1.803
+++ loncom/homework/grades.pm 2024/12/13 05:04:49 1.805
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.803 2024/12/10 17:04:38 raeburn Exp $
+# $Id: grades.pm,v 1.805 2024/12/13 05:04:49 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1441,27 +1441,31 @@ sub do_passback {
}
if ($no_passback) {
&Apache::lonnet::log($udom,$uname,$uhome,$no_passback." score: $score; total: $total; possible: $possible");
+ my $key = &Time::HiRes::time().':'.$uname.':'.$udom.':'.
+ "$linkuri\0$linkprotector\0$scope";
my $ltigrade = {
- 'ltinum' => $ltinum,
- 'lti' => $lti_in_use,
- 'crsdef' => $crsdef,
- 'cid' => $cdom.'_'.$cnum,
- 'uname' => $uname,
- 'udom' => $udom,
- 'uhome' => $uhome,
- 'pbid' => $id,
- 'pburl' => $url,
- 'pbtype' => $pb{'type'},
- 'pbscope' => $pbscope,
- 'pbmap' => $pbmap,
- 'pbsymb' => $pbsymb,
- 'format' => $scoretype,
- 'scope' => $scope,
- 'clientip' => $pb{'clientip'},
- 'linkprot' => $linkprotector.':'.$linkuri,
- 'total' => $total,
- 'possible' => $possible,
- 'score' => $score,
+ $key => {
+ 'ltinum' => $ltinum,
+ 'lti' => $lti_in_use,
+ 'crsdef' => $crsdef,
+ 'cid' => $cdom.'_'.$cnum,
+ 'uname' => $uname,
+ 'udom' => $udom,
+ 'uhome' => $uhome,
+ 'pbid' => $id,
+ 'pburl' => $url,
+ 'pbtype' => $pb{'type'},
+ 'pbscope' => $pbscope,
+ 'pbmap' => $pbmap,
+ 'pbsymb' => $pbsymb,
+ 'format' => $scoretype,
+ 'scope' => $scope,
+ 'clientip' => $pb{'clientip'},
+ 'linkprot' => $linkprotector.':'.$linkuri,
+ 'total' => $total,
+ 'possible' => $possible,
+ 'score' => $score,
+ },
};
&Apache::lonnet::put('linkprot_passback_pending',$ltigrade,$cdom,$cnum);
}
@@ -12591,6 +12595,10 @@ sub assign_clicker_grades {
if ($res_error) {
return &navmap_errormsg();
}
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my %needpb = &passbacks_for_symb($cdom,$cnum,$symb);
+ my (%skip_passback,%pbsave);
# FIXME: This should probably look for the first handgradeable part
my $part=$$partlist[0];
# Start screen output
@@ -12700,7 +12708,15 @@ sub assign_clicker_grades {
$result.="
Failed to save student $username:$domain. Message when trying to save was ($returncode)";
} else {
$storecount++;
- #FIXME Do passback for $user if required
+ if (keys(%needpb)) {
+ my (%weights,%awardeds,%excuseds);
+ my $usec = &Apache::lonnet::getsection($domain,$username,$env{'request.course.id'});
+ $weights{$symb}{$part} = &Apache::lonnet::EXT("resource.$part.weight",$symb,$domain,$username,$usec);
+ $awardeds{$symb}{$part} = $ave;
+ $excuseds{$symb}{$part} = '';
+ &process_passbacks('clickergrade',[$symb],$cdom,$cnum,$domain,$username,$usec,\%weights,
+ \%awardeds,\%excuseds,\%needpb,\%skip_passback,\%pbsave);
+ }
}
}
}