version 1.2, 2002/09/23 07:07:02
|
version 1.6, 2005/10/18 15:33:55
|
Line 25
|
Line 25
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# 1/26 Guy |
|
package Apache::externalresponse; |
package Apache::externalresponse; |
use strict; |
use strict; |
use HTTP::Request::Common; |
use HTTP::Request::Common; |
use Apache::loncapagrade; |
use Apache::loncapagrade; |
|
use Apache::lonnet; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::externalresponse',('externalresponse')); |
&Apache::lonxml::register('Apache::externalresponse',('externalresponse')); |
} |
} |
|
|
#FIXME |
#FIXME |
Line 40 BEGIN {
|
Line 41 BEGIN {
|
# accept a string to be printed out (Where does it get shown?) (.message) |
# accept a string to be printed out (Where does it get shown?) (.message) |
# need to get a correct answer from somewhere (probably here since randomized) |
# need to get a correct answer from somewhere (probably here since randomized) |
sub start_externalresponse { |
sub start_externalresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
my $id = &Apache::response::start_response($parstack,$safeeval); |
my $id = &Apache::response::start_response($parstack,$safeeval); |
return $result; |
return $result; |
} |
} |
|
|
sub end_externalresponse { |
sub end_externalresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
if ($target eq 'grade') { |
my $part=$Apache::inputtags::part; |
if ( defined $ENV{'form.submitted'}) { |
my $id = $Apache::inputtags::response['-1']; |
my $id = $Apache::inputtags::response['-1']; |
my $increment = 1; |
my $response = $ENV{'form.HWVAL'.$id}; |
if ($target eq 'grade') { |
if ( $response =~ /[^\s]/) { |
if ( &Apache::response::submitted('scantron') ) { |
my $url = &Apache::lonxml::get_param('url',$parstack,$safeeval); |
my $increment=&Apache::response::scored_response($part,$id); |
my $answer = &Apache::lonxml::get_param('answer',$parstack,$safeeval); |
} elsif ( &Apache::response::submitted() ) { |
my %form = &Apache::lonxml::get_param_var('form',$parstack,$safeeval); |
my $response = &Apache::response::getresponse(); |
$form{'LONCAPA_student_response'}=$response; |
if ( $response =~ /[^\s]/) { |
$form{'LONCAPA_correct_answer'}=$answer; |
my $url = &Apache::lonxml::get_param('url',$parstack,$safeeval); |
$form{'LONCAPA_language'}= |
my $answer = &Apache::lonxml::get_param('answer',$parstack,$safeeval); |
&Apache::lonnet::metadata($ENV{'REQUEST_URI'},'language'); |
my %form = &Apache::lonxml::get_param_var('form',$parstack,$safeeval); |
&Apache::lonxml::debug("Asking $url, with:"); |
$form{'LONCAPA_student_response'}=$response; |
&Apache::lonhomework::showhash(%form); |
$form{'LONCAPA_correct_answer'}=$answer; |
my $ua = LWP::UserAgent->new; |
$form{'LONCAPA_language'}= |
my $res = $ua->request(POST $url, \%form); |
&Apache::lonnet::metadata($ENV{'REQUEST_URI'},'language'); |
my $partid = $Apache::inputtags::part; |
&Apache::lonxml::debug("Asking $url, with:"); |
my $id = $Apache::inputtags::response['-1']; |
&Apache::lonhomework::showhash(%form); |
my %previous = &Apache::response::check_for_previous($response, |
my $ua = LWP::UserAgent->new; |
$partid,$id); |
my $res = $ua->request(POST $url, \%form); |
%Apache::loncapagrade::results=(); |
my %previous = &Apache::response::check_for_previous($response, |
if ($res->{_rc} != '200') { |
$part,$id); |
$Apache::loncapagrade::results{'awardetail'}='ERROR'; |
%Apache::loncapagrade::results=(); |
} else { |
$Apache::lonhomework::results{"resource.$part.$id.submission"}=$response; |
&Apache::lonxml::register('Apache::loncapagrade',('loncapagrade')); |
if ($res->{_rc} != '200') { |
my $result=&Apache::scripttag::xmlparse($res->{_content}); |
$Apache::loncapagrade::results{'awarddetail'}='ERROR'; |
&Apache::lonxml::debug("Got a result of :$result:"); |
} else { |
} |
&Apache::lonxml::register('Apache::loncapagrade', |
foreach my $key (%Apache::loncapagrade::results) { |
('loncapagrade')); |
$Apache::lonhomework::results{"resource.$partid.$id.$key"}= |
my $result=&Apache::scripttag::xmlparse($res->{_content}); |
$Apache::loncapagrade::results{$key}; |
&Apache::lonxml::debug("Got a result of :$result:"); |
|
} |
|
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::handle_previous(\%previous, |
|
$Apache::loncapagrade::results{'awarddetail'}); |
|
&Apache::lonxml::debug("response of"); |
|
&Apache::lonhomework::showhash(%$res); |
|
&Apache::lonhomework::showhash(%Apache::loncapagrade::results); |
|
} |
|
} |
} |
} |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
&Apache::response::end_response; |
$target eq 'tex' || $target eq 'analyze') { |
return $result; |
&Apache::lonxml::increment_counter($increment); |
|
} |
|
&Apache::response::end_response(); |
|
return $result; |
} |
} |
|
|
1; |
1; |