version 1.2, 2002/09/23 07:07:02
|
version 1.11, 2007/10/08 09:22:50
|
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 |
# send of response params and there current values |
# send of response params and their current values (form good enough? |
# accept a string to be printed out (Where does it get shown?) (.message) |
# what parameters to send?) |
# need to get a correct answer from somewhere (probably here since randomized) |
# Need to get returned message displayed |
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; |
|
|
if ($target eq 'edit') { |
|
$result .=&Apache::edit::tag_start($target,$token); |
|
$result .=&Apache::edit::text_arg('URL:','url',$token,60).'<br />'; |
|
$result .=&Apache::edit::text_arg('Answer:','answer',$token); |
|
$result .=&Apache::edit::text_arg('Form:','form',$token); |
|
$result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag = |
|
&Apache::edit::get_new_args($token,$parstack,$safeeval, |
|
'answer','form','url'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
|
} elsif ($target eq 'meta') { |
|
$result=&Apache::response::meta_package_write('externalresponse'); |
|
} |
|
|
|
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->is_error()) { |
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', |
|
('loncapagrade')); |
|
@Apache::scripttag::parser_env = @_; |
|
my $result=&Apache::scripttag::xmlparse($res->{_content}); |
|
&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); |
|
} |
} |
} |
foreach my $key (%Apache::loncapagrade::results) { |
} |
$Apache::lonhomework::results{"resource.$partid.$id.$key"}= |
if ($target eq 'web') { |
$Apache::loncapagrade::results{$key}; |
&Apache::response::setup_prior_tries_hash(\&format_prior_response); |
|
} |
|
|
|
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze') { |
|
&Apache::lonxml::increment_counter($increment, $part); |
|
|
|
if ($target eq 'analyze') { |
|
&Apache::lonhomework::set_bubble_lines(); |
} |
} |
&Apache::response::handle_previous(\%previous, |
|
$Apache::loncapagrade::results{'awarddetail'}); |
|
&Apache::lonxml::debug("response of"); |
|
&Apache::lonhomework::showhash(%$res); |
|
&Apache::lonhomework::showhash(%Apache::loncapagrade::results); |
|
} |
|
} |
} |
} |
&Apache::response::end_response(); |
&Apache::response::end_response; |
return $result; |
return $result; |
} |
|
|
|
sub format_prior_response { |
|
my ($mode,$answer) =@_; |
|
return '<span class="LC_prior_external">'. |
|
&HTML::Entities::encode($answer,'"<>&').'</span>'; |
} |
} |
|
|
1; |
1; |