--- loncom/homework/externalresponse.pm 2005/10/18 13:58:12 1.5 +++ loncom/homework/externalresponse.pm 2005/10/18 15:33:55 1.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # external style responses # -# $Id: externalresponse.pm,v 1.5 2005/10/18 13:58:12 albertel Exp $ +# $Id: externalresponse.pm,v 1.6 2005/10/18 15:33:55 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,7 +25,7 @@ # # http://www.lon-capa.org/ # -# 1/26 Guy + package Apache::externalresponse; use strict; use HTTP::Request::Common; @@ -50,10 +50,14 @@ sub start_externalresponse { sub end_externalresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; + my $part=$Apache::inputtags::part; + my $id = $Apache::inputtags::response['-1']; + my $increment = 1; if ($target eq 'grade') { - if ( defined $env{'form.submitted'}) { - my $id = $Apache::inputtags::response['-1']; - my $response = $env{'form.HWVAL_'.$id}; + if ( &Apache::response::submitted('scantron') ) { + my $increment=&Apache::response::scored_response($part,$id); + } elsif ( &Apache::response::submitted() ) { + my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) { my $url = &Apache::lonxml::get_param('url',$parstack,$safeeval); my $answer = &Apache::lonxml::get_param('answer',$parstack,$safeeval); @@ -66,31 +70,38 @@ sub end_externalresponse { &Apache::lonhomework::showhash(%form); my $ua = LWP::UserAgent->new; my $res = $ua->request(POST $url, \%form); - my $partid = $Apache::inputtags::part; - my $id = $Apache::inputtags::response['-1']; my %previous = &Apache::response::check_for_previous($response, - $partid,$id); + $part,$id); %Apache::loncapagrade::results=(); + $Apache::lonhomework::results{"resource.$part.$id.submission"}=$response; if ($res->{_rc} != '200') { - $Apache::loncapagrade::results{'awardetail'}='ERROR'; + $Apache::loncapagrade::results{'awarddetail'}='ERROR'; } else { - &Apache::lonxml::register('Apache::loncapagrade',('loncapagrade')); + &Apache::lonxml::register('Apache::loncapagrade', + ('loncapagrade')); my $result=&Apache::scripttag::xmlparse($res->{_content}); &Apache::lonxml::debug("Got a result of :$result:"); } - foreach my $key (%Apache::loncapagrade::results) { - $Apache::lonhomework::results{"resource.$partid.$id.$key"}= + foreach my $key (keys(%Apache::loncapagrade::results)) { + $Apache::lonhomework::results{"resource.$part.$id.$key"}= $Apache::loncapagrade::results{$key}; } &Apache::response::handle_previous(\%previous, $Apache::loncapagrade::results{'awarddetail'}); &Apache::lonxml::debug("response of"); &Apache::lonhomework::showhash(%$res); + &Apache::lonxml::debug("capagrade of"); &Apache::lonhomework::showhash(%Apache::loncapagrade::results); + &Apache::lonxml::debug("results of"); + &Apache::lonhomework::showhash(%Apache::lonhomework::results); } } } - &Apache::response::end_response; + if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || + $target eq 'tex' || $target eq 'analyze') { + &Apache::lonxml::increment_counter($increment); + } + &Apache::response::end_response(); return $result; }