version 1.144, 2006/07/18 17:24:33
|
version 1.148, 2006/10/17 17:09:44
|
Line 378 sub start_customresponse {
|
Line 378 sub start_customresponse {
|
} 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::text_arg('String to display for answer:', |
$result.=&Apache::edit::text_arg('String to display for answer:', |
'answerdisplay',$token). |
'answerdisplay',$token); |
&Apache::loncommon::help_open_topic('Custom_Response_Problems','How to write custom responses'); |
|
$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; |
my $constructtag; |
Line 404 sub end_customresponse {
|
Line 403 sub end_customresponse {
|
my $id=$Apache::inputtags::response[-1]; |
my $id=$Apache::inputtags::response[-1]; |
if ( $target eq 'grade' && &Apache::response::submitted() ) { |
if ( $target eq 'grade' && &Apache::response::submitted() ) { |
my $response = &Apache::response::getresponse(); |
my $response = &Apache::response::getresponse(); |
if ( $response =~ /[^\s]/ && |
if ($Apache::lonhomework::type eq 'exam' || |
$Apache::response::custom_answer_type eq 'loncapa/perl') { |
&Apache::response::submitted('scantron')) { |
|
&Apache::response::scored_response($part,$id); |
|
} elsif ( $response =~ /[^\s]/ && |
|
$Apache::response::custom_answer_type eq 'loncapa/perl') { |
if (!$Apache::lonxml::default_homework_loaded) { |
if (!$Apache::lonxml::default_homework_loaded) { |
&Apache::lonxml::default_homework_load($safeeval); |
&Apache::lonxml::default_homework_load($safeeval); |
} |
} |
Line 430 sub end_customresponse {
|
Line 432 sub end_customresponse {
|
$error; |
$error; |
} |
} |
} |
} |
|
} elsif ( $target eq 'answer') { |
|
$result = &Apache::response::answer_header('customresponse'); |
|
my $answer = &Apache::lonxml::get_param('answerdisplay',$parstack, |
|
$safeeval); |
|
if ($env{'form.answer_output_mode'} ne 'tex') { |
|
$answer = '<b>'.$answer.'</b>'; |
|
} |
|
$result .= &Apache::response::answer_part('customresponse',$answer); |
|
$result .= &Apache::response::answer_footer('customresponse'); |
|
} |
|
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze') { |
|
&Apache::lonxml::increment_counter(&Apache::response::repetition()); |
} |
} |
pop(@Apache::lonxml::namespace); |
pop(@Apache::lonxml::namespace); |
&Apache::lonxml::deregister('Apache::response',('answer')); |
&Apache::lonxml::deregister('Apache::response',('answer')); |
Line 671 sub setup_params {
|
Line 686 sub setup_params {
|
|
|
{ |
{ |
my @answer_bits; |
my @answer_bits; |
|
my $need_row_start; |
|
|
sub answer_header { |
sub answer_header { |
my ($type,$increment) = @_; |
my ($type,$increment,$rows) = @_; |
my $result; |
my $result; |
if ($env{'form.answer_output_mode'} eq 'tex') { |
if ($env{'form.answer_output_mode'} eq 'tex') { |
undef(@answer_bits); |
undef(@answer_bits); |
Line 686 sub answer_header {
|
Line 702 sub answer_header {
|
} |
} |
push(@answer_bits,$bit); |
push(@answer_bits,$bit); |
} else { |
} else { |
|
my $td = '<td '.(defined($rows)?'rowspan="'.$rows.'"':'').'>'; |
$result = '<table border="1"><tr>'; |
$result = '<table border="1"><tr>'; |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
$result .= '<td>'.($Apache::lonxml::counter+$increment). ')</td>'; |
$result .= $td.($Apache::lonxml::counter+$increment). ')</td>'; |
} else { |
} else { |
$result .= '<td>Answer for Part:'.$Apache::inputtags::part.'</td>'; |
$result .= $td.&mt('Answer for Part: [_1]', |
|
$Apache::inputtags::part).'</td>'; |
} |
} |
$result .= "\n"; |
$result .= "\n"; |
|
$need_row_start = 0; |
|
} |
|
return $result; |
|
} |
|
|
|
sub next_answer { |
|
my ($type) = @_; |
|
my $result; |
|
if ($env{'form.answer_output_mode'} eq 'tex') { |
|
# FIXME ... need to do something with tex mode |
|
} else { |
|
$result .= "</tr>"; |
|
$need_row_start = 1; |
} |
} |
return $result; |
return $result; |
} |
} |
|
|
sub answer_part { |
sub answer_part { |
my ($type,$answer) = @_; |
my ($type,$answer,$args) = @_; |
my $result; |
my $result; |
if ($env{'form.answer_output_mode'} eq 'tex') { |
if ($env{'form.answer_output_mode'} eq 'tex') { |
my $to_use='|'; |
if (!$args->{'no_verbatim'}) { |
foreach my $value (32..126) { |
my $to_use='|'; |
my $char=pack('c',$value); |
foreach my $value (32..126) { |
if ($answer !~ /\Q$char\E/) { |
my $char=pack('c',$value); |
$to_use=$char; |
if ($answer !~ /\Q$char\E/) { |
last; |
$to_use=$char; |
|
last; |
|
} |
|
} |
|
if ($answer ne '') { |
|
$answer = '\verb'.$to_use.$answer.$to_use; |
} |
} |
} |
} |
if ($answer ne '') { |
if ($answer ne '') { |
push(@answer_bits,'\verb'.$to_use.$answer.$to_use); |
push(@answer_bits,$answer); |
} |
} |
} else { |
} else { |
$result = '<td>'.$answer.'</td>'; |
if ($need_row_start) { |
|
$result .= '<tr>'; |
|
$need_row_start = 0; |
|
} |
|
$result .= '<td>'.$answer.'</td>'; |
} |
} |
return $result; |
return $result; |
} |
} |