version 1.200, 2006/12/13 22:48:10
|
version 1.202, 2006/12/15 22:11:43
|
Line 33 use Safe::Hole;
|
Line 33 use Safe::Hole;
|
use Apache::lonmaxima(); |
use Apache::lonmaxima(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::response(); |
use Storable qw(dclone); |
use Storable qw(dclone); |
|
|
BEGIN { |
BEGIN { |
Line 372 sub add_in_tag_answer {
|
Line 373 sub add_in_tag_answer {
|
} |
} |
} |
} |
|
|
|
sub capa_formula_fix { |
|
my ($expression)=@_; |
|
return &Apache::response::implicit_multiplication($expression); |
|
} |
|
|
sub end_numericalresponse { |
sub end_numericalresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $increment=1; |
my $increment=1; |
Line 385 sub end_numericalresponse {
|
Line 391 sub end_numericalresponse {
|
my $safehole = new Safe::Hole; |
my $safehole = new Safe::Hole; |
$safeeval->share_from('capa',['&caparesponse_capa_check_answer']); |
$safeeval->share_from('capa',['&caparesponse_capa_check_answer']); |
$safehole->wrap(\&Apache::lonmaxima::maxima_check,$safeeval,'&maxima_check'); |
$safehole->wrap(\&Apache::lonmaxima::maxima_check,$safeeval,'&maxima_check'); |
|
$safehole->wrap(\&Apache::lonmaxima::maxima_cas_formula_fix,$safeeval,'&maxima_cas_formula_fix'); |
|
$safehole->wrap(\&capa_formula_fix,$safeeval,'&capa_formula_fix'); |
|
|
if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; } |
if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; } |
if ( $target eq 'grade' && &Apache::response::submitted() ) { |
if ( $target eq 'grade' && &Apache::response::submitted() ) { |
Line 776 sub make_numerical_bubbles {
|
Line 784 sub make_numerical_bubbles {
|
&Apache::response::get_response_param($part.'_'.$id,'numbubbles',8); |
&Apache::response::get_response_param($part.'_'.$id,'numbubbles',8); |
|
|
my ($format)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval); |
my ($format)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval); |
my ($answer)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval); |
my $name = (exists($answer{$tag_internal_answer_name}) |
|
? $tag_internal_answer_name |
|
: (sort(keys(%answer)))[0]); |
|
|
|
if ( scalar(@{$answer{$name}{'answers'}}) > 1) { |
|
&Apache::lonxml::error("Only answers with 1 component are supported in exam mode"); |
|
} |
|
if (scalar(@{$answer{$name}{'answers'}[0]}) > 1) { |
|
&Apache::lonxml::error("Vector answers are unsupported in exam mode."); |
|
} |
|
|
|
my $answer = $answer{$name}{'answers'}[0][0]; |
my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack, |
my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack, |
$safeeval); |
$safeeval); |
if ($#incorrect eq 0) { @incorrect=(split(/,/,$incorrect[0])); } |
if ($#incorrect eq 0) { @incorrect=(split(/,/,$incorrect[0])); } |