--- loncom/homework/lonhomework.pm 2005/11/21 21:51:29 1.226 +++ loncom/homework/lonhomework.pm 2006/03/24 17:34:11 1.237 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.226 2005/11/21 21:51:29 albertel Exp $ +# $Id: lonhomework.pm,v 1.237 2006/03/24 17:34:11 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -143,12 +143,6 @@ sub setup_vars { # return ';$external::target='.$target.';'; } -sub send_header { - my ($request)= @_; - $request->print(&Apache::lontexconvert::header()); -# $request->print('
'); -} - sub createmenu { my ($which,$request)=@_; if ($which eq 'grade') { @@ -159,20 +153,14 @@ sub createmenu { } } -sub send_footer { - my ($request)= @_; -# $request->print('
'); - $request->print(&Apache::lontexconvert::footer()); -} - sub proctor_checked_in { my ($slot_name,$slot,$type)=@_; my @possible_proctors=split(",",$slot->{'proctor'}); my $key; if ($type eq 'Task') { - my $version=$Apache::lonhomework::history{'resource.version'}; - $key ="resource.$version.checkedin"; + my $version=$Apache::lonhomework::history{'resource.0.version'}; + $key ="resource.$version.0.checkedin"; } elsif ($type eq 'problem') { $key ='resource.0.checkedin'; } @@ -198,6 +186,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/\*//; @@ -260,8 +250,8 @@ sub check_slot_access { if ($type eq 'Task') { my $version=$Apache::lonhomework::history{'resource.version'}; - if ($Apache::lonhomework::history{"resource.$version.checkedin"} && - $Apache::lonhomework::history{"resource.$version.status"} eq 'pass') { + if ($Apache::lonhomework::history{"resource.$version.0.checkedin"} && + $Apache::lonhomework::history{"resource.$version.0.status"} eq 'pass') { return ('SHOW_ANSWER'); } } @@ -295,28 +285,44 @@ sub check_slot_access { $slotstatus='CAN_ANSWER'; } - my ($pass_status,$checkedin); + my ($is_correct,$got_grade,$checkedin); if ($type eq 'Task') { - my $version=$Apache::lonhomework::history{'resource.version'}; - $pass_status = - $Apache::lonhomework::history{"resource.$version.status"} eq 'fail'; + 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.checkedin"}; + $Apache::lonhomework::history{"resource.$version.0.checkedin"}; } elsif ($type eq 'problem') { - $pass_status = 1; + $got_grade = 1; $checkedin = $Apache::lonhomework::history{"resource.0.checkedin"}; } + &Apache::lonxml::debug(" slot is $slotstatus checkedin ($checkedin) got_grade ($got_grade) is_correct ($is_correct)"); + + # has a current checked in recrd, but hasn't got a grade, must be awaiting + # a grade + if ($checkedin + && !$got_grade) { + return ('WAITING_FOR_GRADE'); + } + if ($slotstatus eq 'NOT_IN_A_SLOT' && $checkedin ) { - if ($pass_status) { + if ($got_grade) { return ('SHOW_ANSWER'); } else { return ('WAITING_FOR_GRADE'); } } + if ( $is_correct) { + return ('SHOW_ANSWER'); + } if ( $status eq 'CANNOT_ANSWER' && ($slotstatus ne 'NEEDS_CHECKIN' && $slotstatus ne 'NOT_IN_A_SLOT')) { return ($status,$datemsg); @@ -638,8 +644,7 @@ sub analyze_header { sub analyze_footer { my ($request) = @_; - my $result=''; - $request->print($result); + $request->print(&Apache::loncommon::end_page()); $request->rflush(); } @@ -753,23 +758,28 @@ sub editxmlmode { my $bodytag=&Apache::loncommon::bodytag(undef,undef,undef, ($env{'environment.remote'} ne 'off')); my $html=&Apache::lonxml::xmlbegin(); - $result.=$html.$bodytag. + my $head="EditXML $file". + &Apache::edit::js_change_detection().""; + + $result.=$html.$head.$bodytag. &renderpage($request,$file,['no_output_web'],1). &Apache::lonxml::message_location().' -
'. &Apache::structuretags::remember_problem_state().' - + +
-
' . $xml_help . ' - +
+ +
'; &Apache::lonxml::add_messages(\$result); $request->print($result); @@ -982,15 +992,6 @@ sub handler { &Apache::lonxml::debug("Problem Mode ".$env{'form.problemmode'}); my ($symb) = &Apache::lonxml::whichuser(); &Apache::lonxml::debug('symb is '.$symb); - if ($env{'request.state'} eq "construct" || $symb eq '') { - if ($env{'form.resetdata'} eq &mt('Reset Submissions') || - $env{'form.resetdata'} eq &mt('New Problem Variation') || - $env{'form.newrandomization'} eq &mt('New Randomization')) { - my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); - &Apache::lonnet::tmpreset($symb,'',$domain,$name); - &Apache::lonxml::debug("Attempt reset"); - } - } if ($env{'request.state'} eq "construct") { if ( -e $file ) { &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, @@ -1019,7 +1020,6 @@ sub handler { } #my $td=&tv_interval($t0); #&Apache::lonxml::debug("Spent $td seconds processing"); - # &Apache::lonhomework::send_footer($request); # always turn off debug messages $Apache::lonxml::debug=0; return OK;