version 1.70, 2008/09/12 09:56:09
|
version 1.75, 2009/04/17 01:00:15
|
Line 26
|
Line 26
|
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
|
|
|
|
|
|
package Apache::hinttags; |
package Apache::hinttags; |
|
|
use strict; |
use strict; |
Line 33 use Apache::lonnet();
|
Line 35 use Apache::lonnet();
|
use capa; |
use capa; |
use Apache::caparesponse(); |
use Apache::caparesponse(); |
use Apache::lonmaxima(); |
use Apache::lonmaxima(); |
|
use Apache::lonr(); |
use Apache::response(); |
use Apache::response(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Storable qw(dclone); |
use Storable qw(dclone); |
Line 68 sub start_hintgroup {
|
Line 71 sub start_hintgroup {
|
$result .= '\keephidden{'; |
$result .= '\keephidden{'; |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::select_arg('Show hint even if problem Correct:','showoncorrect',[['no',&mt('No')],['yes',&mt('Yes')]],$token); |
$result.=&Apache::edit::select_arg('Show hint even if problem Correct:','showoncorrect',['no','yes'],$token); |
$result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
$result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'showoncorrect'); |
my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'showoncorrect'); |
Line 194 sub end_numericalhint {
|
Line 197 sub end_numericalhint {
|
dclone($answer{$ans_name}); |
dclone($answer{$ans_name}); |
&Apache::caparesponse::setup_capa_response($args_ref,$response); |
&Apache::caparesponse::setup_capa_response($args_ref,$response); |
my ($result,@msgs) = |
my ($result,@msgs) = |
&Apache::run::run("&caparesponse_check_list($$tagstack[-1])",$safeeval); |
&Apache::run::run("&caparesponse_check_list()",$safeeval); |
&Apache::lonxml::debug("checking $ans_name $result with $response"); |
&Apache::lonxml::debug("checking $ans_name $result with $response"); |
&Apache::lonxml::debug('msgs are '.join(':',@msgs)); |
&Apache::lonxml::debug('msgs are '.join(':',@msgs)); |
my ($awards)=split(/:/,$result); |
my ($awards)=split(/:/,$result); |
Line 242 sub start_mathhint {
|
Line 245 sub start_mathhint {
|
$result.=&Apache::edit::text_arg('Name:','name',$token); |
$result.=&Apache::edit::text_arg('Name:','name',$token); |
$result.=&Apache::edit::select_arg('Algebra System:', |
$result.=&Apache::edit::select_arg('Algebra System:', |
'cas', |
'cas', |
['maxima'], |
['maxima','R'], |
$token); |
$token); |
$result.=&Apache::edit::text_arg('Argument Array:', |
$result.=&Apache::edit::text_arg('Argument Array:', |
'args',$token); |
'args',$token); |
Line 280 sub end_mathhint {
|
Line 283 sub end_mathhint {
|
my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)]; |
my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)]; |
$award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer[-1],$response,$args); |
$award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer[-1],$response,$args); |
} |
} |
|
if ($cas eq 'R') { |
|
my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)]; |
|
$award=&Apache::lonr::r_run($Apache::response::custom_answer[-1],$response,$args); |
|
} |
if ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS') { |
if ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS') { |
push (@Apache::hint::which,$name); |
push (@Apache::hint::which,$name); |
} |
} |
Line 422 sub end_stringhint {
|
Line 429 sub end_stringhint {
|
my $args_ref = |
my $args_ref = |
&Apache::caparesponse::setup_capa_args($safeeval,$parstack, |
&Apache::caparesponse::setup_capa_args($safeeval,$parstack, |
\@args,$response); |
\@args,$response); |
|
if ($$args_ref{'type'} eq '') { |
|
$$args_ref{'type'} = 'ci'; |
|
} |
&Apache::caparesponse::add_in_tag_answer($parstack,$safeeval); |
&Apache::caparesponse::add_in_tag_answer($parstack,$safeeval); |
my (@final_awards,@final_msgs,@ans_names); |
my (@final_awards,@final_msgs,@ans_names); |
my %answer = &Apache::caparesponse::get_answer(); |
my %answer = &Apache::caparesponse::get_answer(); |
foreach my $ans_name (keys(%answer)) { |
foreach my $ans_name (keys(%answer)) { |
&Apache::lonxml::debug(" doing $ans_name with ".join(':',@{ $answer{$ans_name}{'answers'} })); |
&Apache::lonxml::debug(" doing $ans_name with ".join(':',@{ $answer{$ans_name}{'answers'} })); |
${$safeeval->varglob('LONCAPA::CAPAresponse_answer')}=dclone($answer{$ans_name}); |
${$safeeval->varglob('LONCAPA::CAPAresponse_answer')}=dclone($answer{$ans_name}); |
my ($result, @msgs)=&Apache::run::run("&caparesponse_check_list($$tagstack[-1])",$safeeval); |
my ($result, @msgs)=&Apache::run::run("&caparesponse_check_list()",$safeeval); |
&Apache::lonxml::debug('msgs are'.join(':',@msgs)); |
&Apache::lonxml::debug('msgs are'.join(':',@msgs)); |
my ($awards) = split(/:/,$result); |
my ($awards) = split(/:/,$result); |
my (@awards) = split(/,/,$awards); |
my (@awards) = split(/,/,$awards); |
Line 646 sub end_radiobuttonhint {
|
Line 656 sub end_radiobuttonhint {
|
} |
} |
1; |
1; |
__END__ |
__END__ |
|
|
|
|
|
=head1 NAME |
|
|
|
Apache::hinttags |
|
|
|
=head1 SYNOPSIS |
|
|
|
This handler coordinates the delivery of hints to students working on LON-CAPA problems and assignments. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 SUBROUTINES |
|
|
|
=over |
|
|
|
=item start_hintgroup() |
|
|
|
=item end_hintgroup() |
|
|
|
=item start_numericalhint() |
|
|
|
=item end_numericalhint() |
|
|
|
=item start_formulahint() |
|
|
|
=item end_formulahint() |
|
|
|
=item start_mathhint() |
|
|
|
=item end_mathhint() |
|
|
|
=item start_customhint() |
|
|
|
=item end_customhint() |
|
|
|
=item start_stringhint() |
|
|
|
=item end_stringhint() |
|
|
|
=item start_hintpart() |
|
|
|
=item end_hintpart() |
|
|
|
=item start_optionhint() |
|
|
|
=item end_optionhint() |
|
|
|
=item start_radiobuttonhint() |
|
|
|
=item end_radiobuttonhint() |
|
|
|
=back |
|
|
|
=cut |