[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