--- loncom/homework/lonhomework.pm 2005/05/03 00:05:41 1.206 +++ loncom/homework/lonhomework.pm 2005/05/10 20:29:26 1.207 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.206 2005/05/03 00:05:41 albertel Exp $ +# $Id: lonhomework.pm,v 1.207 2005/05/10 20:29:26 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -85,13 +85,11 @@ sub get_target { return ($env{'form.grade_target'}); } elsif ( defined($env{'form.grade_target'} ) && ($Apache::lonhomework::viewgrades eq 'F' )) { - if ($env{'form.grade_target'} eq 'webgrade') { - if ($Apache::lonhomework::modifygrades eq 'F' ) { - return ($env{'form.grade_target'}); - } - } else { - return ($env{'form.grade_target'}); - } + return ($env{'form.grade_target'}); + } + if ($env{'form.webgrade'} && + $Apache::lonhomework::modifygrades eq 'F') { + return ('grade','webgrade'); } if ( defined($env{'form.submitted'}) && ( !defined($env{'form.resetdata'})) && @@ -168,10 +166,12 @@ sub send_footer { } sub proctor_checked_in { - my ($slot)=@_; + my ($slot_name,$slot)=@_; my @allowed=split(",",$slot->{'proctor'}); foreach my $possible (@allowed) { - if ($Apache::lonhomework::history{'resource.checkedin'} eq $possible) { + if ($Apache::lonhomework::history{'resource.checkedin'} eq $possible && + $Apache::lonhomework::history{'resource.checkedin.slot'} eq + $slot_name ) { return 1; } } @@ -226,7 +226,8 @@ sub check_ip_acc { } sub check_task_access { - #does it pass normal muster + # does it pass normal muster + # yes we really do want the default args passing my ($status,$datemsg)=&check_access; if ($status eq 'SHOW_ANSWER' || $status eq 'CLOSED' || @@ -239,6 +240,12 @@ sub check_task_access { return ($status,$datemsg); } + if ($Apache::lonhomework::history{'resource.checkedin'}) { + if ($Apache::lonhomework::history{'resource.status'} eq 'pass' || + $Apache::lonhomework::history{'resource.status'} eq 'fail') { + return ('SHOW_ANSWER'); + } + } my ($id)=@_; my @slots=split(':',&Apache::lonnet::EXT("resource.$id.available")); # if (!@slots) { @@ -246,7 +253,7 @@ sub check_task_access { # } my $slotstatus='NOT_IN_A_SLOT'; my ($returned_slot,$slot_name); - foreach my $slot (@slots) { + foreach my $slot (sort(@slots)) { &Apache::lonxml::debug("getting $slot"); my %slot=&Apache::lonnet::get_slot($slot); &Apache::lonhomework::showhash(%slot); @@ -261,10 +268,14 @@ sub check_task_access { } } if ($slotstatus eq 'NEEDS_CHECKIN' && - &proctor_checked_in($returned_slot)) { + &proctor_checked_in($slot_name,$returned_slot)) { &Apache::lonxml::debug("protoctor checked in"); $slotstatus='CAN_ANSWER'; } + if ( ($slotstatus eq 'NOT_IN_A_SLOT' || $slotstatus eq 'NEEDS_CHECKIN') && + $Apache::lonhomework::history{'resource.checkedin'}) { + return ('WAITING_FOR_GRADE'); + } return ($slotstatus,$datemsg,$slot_name,$returned_slot); }