version 1.186, 2005/12/28 21:26:21
|
version 1.193, 2006/07/03 14:21:45
|
Line 29
|
Line 29
|
package Apache::caparesponse; |
package Apache::caparesponse; |
use strict; |
use strict; |
use capa; |
use capa; |
|
use Safe::Hole; |
|
use Apache::lonmaxima(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
|
Line 247 sub check_submission {
|
Line 249 sub check_submission {
|
} |
} |
|
|
if ($tag eq 'formularesponse') { |
if ($tag eq 'formularesponse') { |
$$args_ref{'type'}='fml'; |
# if ($$args_ref{'samples'}) { |
|
$$args_ref{'type'}='fml'; |
|
# } else { |
|
# $$args_ref{'type'}='math'; |
|
# } |
} elsif ($tag eq 'numericalresponse') { |
} elsif ($tag eq 'numericalresponse') { |
$$args_ref{'type'}='float'; |
$$args_ref{'type'}='float'; |
} |
} |
Line 290 sub end_numericalresponse {
|
Line 296 sub end_numericalresponse {
|
my $partid = $Apache::inputtags::part; |
my $partid = $Apache::inputtags::part; |
my $id = $Apache::inputtags::response[-1]; |
my $id = $Apache::inputtags::response[-1]; |
my $tag; |
my $tag; |
|
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'); |
|
|
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() ) { |
&Apache::response::setup_params($tag,$safeeval); |
&Apache::response::setup_params($tag,$safeeval); |
if ($Apache::lonhomework::type eq 'exam' && |
if ($Apache::lonhomework::type eq 'exam' && |
$tag eq 'formularesponse') { |
(($tag eq 'formularesponse') || ($tag eq 'mathresponse'))) { |
$increment=&Apache::response::scored_response($partid,$id); |
$increment=&Apache::response::scored_response($partid,$id); |
} else { |
} else { |
my $response = &Apache::response::getresponse(); |
my $response = &Apache::response::getresponse(); |
Line 362 sub end_numericalresponse {
|
Line 371 sub end_numericalresponse {
|
$bubble_display->[$ind].'</td>'; |
$bubble_display->[$ind].'</td>'; |
} |
} |
$result.='</tr></table>'; |
$result.='</tr></table>'; |
} elsif ($tag eq 'formularesponse') { |
|
$result.= '<br /><br /><font color="red"> |
|
<textarea name="HWVAL_'.$id.'" rows="4" cols="50"> |
|
</textarea></font> <br /><br />'; |
|
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
if ((defined $unit) and ($unit=~/\S/) and ($Apache::lonhomework::type eq 'exam')) { |
if ((defined $unit) and ($unit=~/\S/) and ($Apache::lonhomework::type eq 'exam')) { |
Line 393 sub end_numericalresponse {
|
Line 398 sub end_numericalresponse {
|
} |
} |
$result.='\end{enumerate}'; |
$result.='\end{enumerate}'; |
} else { |
} else { |
$result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}'; |
$increment = &Apache::response::repetition(); |
my $repetition = &Apache::response::repetition(); |
|
$result.='\begin{enumerate}'; |
|
for (my $i=0;$i<$repetition;$i++) { |
|
$result.='\item[\textbf{'.($Apache::lonxml::counter+$i).'}.]\textit{Leave blank on scoring form}\vskip 0 mm'; |
|
} |
|
$increment=$repetition; |
|
$result.= '\end{enumerate}'; |
|
} |
} |
} |
} |
} |
} |
Line 609 sub format_number {
|
Line 607 sub format_number {
|
my $ans; |
my $ans; |
if ($format eq '') { |
if ($format eq '') { |
#What is the number? (integer,decimal,floating point) |
#What is the number? (integer,decimal,floating point) |
if ($number=~/^(\d*\.?\d*)(E|e)(\d*)$/) { |
if ($number=~/^(\d*\.?\d*)(E|e)[+\-]?(\d*)$/) { |
$format = '3e'; |
$format = '3e'; |
} elsif ($number=~/^(\d*)\.(\d*)$/) { |
} elsif ($number=~/^(\d*)\.(\d*)$/) { |
$format = '4f'; |
$format = '4f'; |
Line 787 sub start_stringresponse {
|
Line 785 sub start_stringresponse {
|
|
|
sub end_stringresponse { |
sub end_stringresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $increment=1; |
|
my $result = ''; |
my $result = ''; |
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
my $id=$Apache::inputtags::response[-1]; |
my $id=$Apache::inputtags::response[-1]; |
Line 803 sub end_stringresponse {
|
Line 801 sub end_stringresponse {
|
$safeeval->share_from('capa',['&caparesponse_capa_check_answer']); |
$safeeval->share_from('capa',['&caparesponse_capa_check_answer']); |
if ($Apache::lonhomework::type eq 'exam' || |
if ($Apache::lonhomework::type eq 'exam' || |
&Apache::response::submitted('scantron')) { |
&Apache::response::submitted('scantron')) { |
$increment=&Apache::response::scored_response($part,$id); |
&Apache::response::scored_response($part,$id); |
|
|
} else { |
} else { |
my $response = &Apache::response::getresponse(); |
my $response = &Apache::response::getresponse(); |
if ( $response =~ /[^\s]/) { |
if ( $response =~ /[^\s]/) { |
Line 856 sub end_stringresponse {
|
Line 855 sub end_stringresponse {
|
$Apache::lonhomework::results{"resource.$part.$id.awardmsg"}=$msg; |
$Apache::lonhomework::results{"resource.$part.$id.awardmsg"}=$msg; |
} |
} |
} |
} |
} elsif ($target eq 'web' || $target eq 'tex') { |
|
my $award = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
|
my $status = $Apache::inputtags::status['-1']; |
|
if ($Apache::lonhomework::type eq 'exam' && $target eq 'tex') { |
|
$result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}'; |
|
$increment = &Apache::response::repetition(); |
|
$result.='\begin{enumerate}'; |
|
for (my $i=0;$i<$increment;$i++) { |
|
$result.='\item[\textbf{'.($Apache::lonxml::counter+$i). |
|
'}.]\textit{Leave blank on scoring form}\vskip 0 mm'; |
|
} |
|
$result.= '\end{enumerate}'; |
|
} |
|
} elsif ($target eq 'answer' || $target eq 'analyze') { |
} elsif ($target eq 'answer' || $target eq 'analyze') { |
if ($target eq 'analyze') { |
if ($target eq 'analyze') { |
push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id"); |
push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id"); |
Line 922 sub end_stringresponse {
|
Line 908 sub end_stringresponse {
|
} |
} |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
$target eq 'tex' || $target eq 'analyze') { |
$target eq 'tex' || $target eq 'analyze') { |
&Apache::lonxml::increment_counter($increment); |
&Apache::lonxml::increment_counter(&Apache::response::repetition()); |
} |
} |
&Apache::response::end_response; |
&Apache::response::end_response; |
return $result; |
return $result; |