--- loncom/homework/lonhomework.pm 2005/12/22 22:06:54 1.232 +++ loncom/homework/lonhomework.pm 2006/02/16 01:25:33 1.233.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.232 2005/12/22 22:06:54 albertel Exp $ +# $Id: lonhomework.pm,v 1.233.2.1 2006/02/16 01:25:33 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -198,6 +198,8 @@ sub check_ip_acc { my $ip=$ENV{'REMOTE_ADDR'}; my $name; foreach my $pattern (split(',',$acc)) { + $pattern =~ s/^\s*//; + $pattern =~ s/\s*$//; if ($pattern =~ /\*$/) { #35.8.* $pattern=~s/\*//; @@ -295,12 +297,15 @@ sub check_slot_access { $slotstatus='CAN_ANSWER'; } - my ($got_grade,$checkedin); + my ($is_correct,$got_grade,$checkedin); if ($type eq 'Task') { my $version=$Apache::lonhomework::history{'resource.0.version'}; $got_grade = ($Apache::lonhomework::history{"resource.$version.0.status"} =~ /^(?:pass|fail)$/); + $is_correct = + ($Apache::lonhomework::history{"resource.$version.0.status"} eq 'pass' + || $Apache::lonhomework::history{"resource.0.solved"} =~ /^correct_/ ); $checkedin = $Apache::lonhomework::history{"resource.$version.0.checkedin"}; } elsif ($type eq 'problem') { @@ -308,6 +313,8 @@ sub check_slot_access { $checkedin = $Apache::lonhomework::history{"resource.0.checkedin"}; } + &Apache::lonxml::debug(" slot is $slotstatus checkedin ($checkedin) got_grade ($got_grade) is_correct ($is_correct)"); + if ($slotstatus eq 'NOT_IN_A_SLOT' && $checkedin ) { @@ -318,6 +325,9 @@ sub check_slot_access { } } + if ( $is_correct) { + return ('SHOW_ANSWER'); + } if ( $status eq 'CANNOT_ANSWER' && ($slotstatus ne 'NEEDS_CHECKIN' && $slotstatus ne 'NOT_IN_A_SLOT')) { return ($status,$datemsg);