version 1.785, 2021/06/04 20:09:28
|
version 1.786, 2021/12/17 15:16:51
|
Line 3184 sub processHandGrade {
|
Line 3184 sub processHandGrade {
|
my $ntstu = $env{'form.NTSTU'}; |
my $ntstu = $env{'form.NTSTU'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my ($res_error,%queueable); |
|
my ($partlist,$handgrade,$responseType,$numresp,$numessay) = &response_type($symb,\$res_error); |
|
if ($res_error) { |
|
$request->print(&navmap_errormsg()); |
|
return; |
|
} else { |
|
foreach my $part (@{$partlist}) { |
|
if (ref($responseType->{$part}) eq 'HASH') { |
|
foreach my $id (keys(%{$responseType->{$part}})) { |
|
if (($responseType->{$part}->{$id} eq 'essay') || |
|
(lc($handgrade->{$part.'_'.$id}) eq 'yes')) { |
|
$queueable{$part} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
if ($button eq 'Save & Next') { |
if ($button eq 'Save & Next') { |
my $ctr = 0; |
my $ctr = 0; |
while ($ctr < $ngrade) { |
while ($ctr < $ngrade) { |
my ($uname,$udom) = split(/:/,$env{'form.unamedom'.$ctr}); |
my ($uname,$udom) = split(/:/,$env{'form.unamedom'.$ctr}); |
my ($errorflag,$pts,$wgt,$numhidden) = |
my ($errorflag,$pts,$wgt,$numhidden) = |
&saveHandGrade($request,$symb,$uname,$udom,$ctr); |
&saveHandGrade($request,$symb,$uname,$udom,$ctr,undef,undef,\%queueable); |
if ($errorflag eq 'no_score') { |
if ($errorflag eq 'no_score') { |
$ctr++; |
$ctr++; |
next; |
next; |
Line 3245 sub processHandGrade {
|
Line 3263 sub processHandGrade {
|
foreach my $collaborator (@collaborators) { |
foreach my $collaborator (@collaborators) { |
my ($errorflag,$pts,$wgt) = |
my ($errorflag,$pts,$wgt) = |
&saveHandGrade($request,$symb,$collaborator,$udom,$ctr, |
&saveHandGrade($request,$symb,$collaborator,$udom,$ctr, |
$env{'form.unamedom'.$ctr},$part); |
$env{'form.unamedom'.$ctr},$part,\%queueable); |
if ($errorflag eq 'not_allowed') { |
if ($errorflag eq 'not_allowed') { |
$request->print("<span class=\"LC_error\">".&mt('Not allowed to modify grades for [_1]',"$collaborator:$udom")."</span>"); |
$request->print("<span class=\"LC_error\">".&mt('Not allowed to modify grades for [_1]',"$collaborator:$udom")."</span>"); |
next; |
next; |
Line 3267 sub processHandGrade {
|
Line 3285 sub processHandGrade {
|
} |
} |
} |
} |
|
|
my $res_error; |
|
my ($partlist,$handgrade,$responseType,$numresp,$numessay) = &response_type($symb,\$res_error); |
|
if ($res_error) { |
|
$request->print(&navmap_errormsg()); |
|
return; |
|
} |
|
|
|
my %keyhash = (); |
my %keyhash = (); |
if ($numessay) { |
if ($numessay) { |
# Keywords sorted in alphabatical order |
# Keywords sorted in alphabatical order |
Line 3425 sub processHandGrade {
|
Line 3436 sub processHandGrade {
|
|
|
#---- Save the score and award for each student, if changed |
#---- Save the score and award for each student, if changed |
sub saveHandGrade { |
sub saveHandGrade { |
my ($request,$symb,$stuname,$domain,$newflg,$submitter,$part) = @_; |
my ($request,$symb,$stuname,$domain,$newflg,$submitter,$part,$queueable) = @_; |
my @version_parts; |
my @version_parts; |
my $usec = &Apache::lonnet::getsection($domain,$stuname, |
my $usec = &Apache::lonnet::getsection($domain,$stuname, |
$env{'request.course.id'}); |
$env{'request.course.id'}); |
Line 3537 sub saveHandGrade {
|
Line 3548 sub saveHandGrade {
|
&Apache::lonnet::cstore(\%newrecord,$symb, |
&Apache::lonnet::cstore(\%newrecord,$symb, |
$env{'request.course.id'},$domain,$stuname); |
$env{'request.course.id'},$domain,$stuname); |
&check_and_remove_from_queue(\@parts,\%record,\%newrecord,$symb, |
&check_and_remove_from_queue(\@parts,\%record,\%newrecord,$symb, |
$cdom,$cnum,$domain,$stuname); |
$cdom,$cnum,$domain,$stuname,$queueable); |
} |
} |
if ($aggregateflag) { |
if ($aggregateflag) { |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
Line 3577 sub makehidden {
|
Line 3588 sub makehidden {
|
} |
} |
|
|
sub check_and_remove_from_queue { |
sub check_and_remove_from_queue { |
my ($parts,$record,$newrecord,$symb,$cdom,$cnum,$domain,$stuname) = @_; |
my ($parts,$record,$newrecord,$symb,$cdom,$cnum,$domain,$stuname,$queueable) = @_; |
my @ungraded_parts; |
my @ungraded_parts; |
foreach my $part (@{$parts}) { |
foreach my $part (@{$parts}) { |
if ( $record->{ 'resource.'.$part.'.awarded'} eq '' |
if ( $record->{ 'resource.'.$part.'.awarded'} eq '' |
Line 3585 sub check_and_remove_from_queue {
|
Line 3596 sub check_and_remove_from_queue {
|
&& $newrecord->{'resource.'.$part.'.awarded'} eq '' |
&& $newrecord->{'resource.'.$part.'.awarded'} eq '' |
&& $newrecord->{'resource.'.$part.'.solved' } ne 'excused' |
&& $newrecord->{'resource.'.$part.'.solved' } ne 'excused' |
) { |
) { |
push(@ungraded_parts, $part); |
if ($queueable->{$part}) { |
|
push(@ungraded_parts, $part); |
|
} |
} |
} |
} |
} |
if ( !@ungraded_parts ) { |
if ( !@ungraded_parts ) { |
Line 4478 sub editgrades {
|
Line 4491 sub editgrades {
|
&Apache::loncommon::end_data_table_header_row(); |
&Apache::loncommon::end_data_table_header_row(); |
my @noupdate; |
my @noupdate; |
my ($updateCtr,$noupdateCtr) = (1,1); |
my ($updateCtr,$noupdateCtr) = (1,1); |
|
my ($got_types,%queueable); |
for ($i=0; $i<$env{'form.total'}; $i++) { |
for ($i=0; $i<$env{'form.total'}; $i++) { |
my $user = $env{'form.ctr'.$i}; |
my $user = $env{'form.ctr'.$i}; |
my ($uname,$udom)=split(/:/,$user); |
my ($uname,$udom)=split(/:/,$user); |
Line 4577 sub editgrades {
|
Line 4591 sub editgrades {
|
$udom,$uname); |
$udom,$uname); |
my $all_graded = 1; |
my $all_graded = 1; |
my $none_graded = 1; |
my $none_graded = 1; |
|
unless ($got_types) { |
|
my $error; |
|
my ($plist,$handgrd,$resptype) = &response_type($symb,\$error); |
|
unless ($error) { |
|
foreach my $part (@parts) { |
|
if (ref($resptype->{$part}) eq 'HASH') { |
|
foreach my $id (keys(%{$resptype->{$part}})) { |
|
if (($resptype->{$part}->{$id} eq 'essay') || |
|
(lc($handgrd->{$part.'_'.$id}) eq 'yes')) { |
|
$queueable{$part} = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$got_types = 1; |
|
} |
foreach my $part (@parts) { |
foreach my $part (@parts) { |
if ( $record{'resource.'.$part.'.awarded'} eq '' ) { |
if ($queueable{$part}) { |
$all_graded = 0; |
if ( $record{'resource.'.$part.'.awarded'} eq '' ) { |
} else { |
$all_graded = 0; |
$none_graded = 0; |
} else { |
|
$none_graded = 0; |
|
} |
} |
} |
} |
} |
|
|
if ($all_graded || $none_graded) { |
if ($all_graded || $none_graded) { |
&Apache::bridgetask::remove_from_queue('gradingqueue', |
&Apache::bridgetask::remove_from_queue('gradingqueue', |
$symb,$cdom,$cnum, |
$symb,$cdom,$cnum, |
Line 5707 sub updateGradeByPage {
|
Line 5740 sub updateGradeByPage {
|
foreach my $partid (@{$parts}) { |
foreach my $partid (@{$parts}) { |
my $newpts = $env{'form.GD_BOX'.$question.'_'.$partid}; |
my $newpts = $env{'form.GD_BOX'.$question.'_'.$partid}; |
my $oldpts = $env{'form.oldpts'.$question.'_'.$partid}; |
my $oldpts = $env{'form.oldpts'.$question.'_'.$partid}; |
|
my @types = $curRes->responseType($part); |
|
if (grep(/^essay$/,@types)) { |
|
$queueable{$partid} = 1; |
|
} else { |
|
my @ids = $curRes->responseIds($part); |
|
for (my $i=0; $i < scalar(@ids); $i++) { |
|
my $hndgrd = &Apache::lonnet::EXT('resource.'.$part.'_'.$ids[$i]. |
|
'.handgrade',$symb); |
|
if (lc($hndgrd) eq 'yes') { |
|
$queueable{$partid} = 1; |
|
last; |
|
} |
|
} |
|
} |
my $wgt = $env{'form.WGT'.$question.'_'.$partid} != 0 ? |
my $wgt = $env{'form.WGT'.$question.'_'.$partid} != 0 ? |
$env{'form.WGT'.$question.'_'.$partid} : 1; |
$env{'form.WGT'.$question.'_'.$partid} : 1; |
my $partial = $newpts/$wgt; |
my $partial = $newpts/$wgt; |
Line 5773 sub updateGradeByPage {
|
Line 5819 sub updateGradeByPage {
|
$env{'request.course.id'}, |
$env{'request.course.id'}, |
$udom,$uname); |
$udom,$uname); |
&check_and_remove_from_queue($parts,\%record,undef,$symbx, |
&check_and_remove_from_queue($parts,\%record,undef,$symbx, |
$cdom,$cnum,$udom,$uname); |
$cdom,$cnum,$udom,$uname,\%queueable); |
} |
} |
|
|
if ($aggregateflag) { |
if ($aggregateflag) { |