version 1.35, 2004/02/09 19:47:53
|
version 1.39, 2004/04/02 17:58:16
|
Line 30 package Apache::matchresponse;
|
Line 30 package Apache::matchresponse;
|
use strict; |
use strict; |
use HTML::Entities(); |
use HTML::Entities(); |
use Math::Random(); |
use Math::Random(); |
use Apache::optionresponse; |
use Apache::optionresponse(); |
|
use Apache::lonlocal; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::matchresponse',('matchresponse')); |
&Apache::lonxml::register('Apache::matchresponse',('matchresponse')); |
Line 46 sub start_matchresponse {
|
Line 47 sub start_matchresponse {
|
push (@Apache::lonxml::namespace,'matchresponse'); |
push (@Apache::lonxml::namespace,'matchresponse'); |
my $id = &Apache::response::start_response($parstack,$safeeval); |
my $id = &Apache::response::start_response($parstack,$safeeval); |
%Apache::hint::match=(); |
%Apache::hint::match=(); |
|
undef(%Apache::response::foilnames); |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$result=&Apache::response::meta_package_write('matchresponse'); |
$result=&Apache::response::meta_package_write('matchresponse'); |
} elsif ($target eq 'edit' ) { |
} elsif ($target eq 'edit' ) { |
Line 80 sub end_matchresponse {
|
Line 82 sub end_matchresponse {
|
pop @Apache::lonxml::namespace; |
pop @Apache::lonxml::namespace; |
&Apache::lonxml::deregister('Apache::matchresponse', |
&Apache::lonxml::deregister('Apache::matchresponse', |
('foilgroup','foil','conceptgroup')); |
('foilgroup','foil','conceptgroup')); |
|
undef(%Apache::response::foilnames); |
return $result; |
return $result; |
} |
} |
|
|
Line 150 sub end_itemgroup {
|
Line 153 sub end_itemgroup {
|
$table.='</table>'; |
$table.='</table>'; |
$Apache::matchresponse::itemtable{'display'}=$table; |
$Apache::matchresponse::itemtable{'display'}=$table; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $table=' \begin{description} '; |
my $table=' \begin{description}\setlength{\leftmargin}{2em}\setlength{\labelwidth}{1em}\setlength{\itemsep}{0.5pt plus1pt minus2pt}\setlength{\listparindent}{0em} '; |
my $i=0; |
my $i=0; |
foreach my $name (@names) { |
foreach my $name (@names) { |
$Apache::response::itemgroup{$name.'.text'}=~s/\$\$/\$/g; |
$Apache::response::itemgroup{$name.'.text'}=~s/\$\$/\$/g; |
Line 419 sub displayfoils {
|
Line 422 sub displayfoils {
|
} |
} |
} else { |
} else { |
my $i = 0; |
my $i = 0; |
my $temp=0; |
my $temp=1; |
my $id=$Apache::inputtags::response[-1]; |
my $id=$Apache::inputtags::response[-1]; |
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; |
my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; |
Line 484 sub displayfoils {
|
Line 487 sub displayfoils {
|
$result='<table><tr><td>'.$question.'</td><td>'.$result. |
$result='<table><tr><td>'.$question.'</td><td>'.$result. |
'</td></tr></table>'; |
'</td></tr></table>'; |
} else { |
} else { |
$result='\begin{tabular}{p{\textwidth/2}p{\textwidth/2}}\begin{minipage}{\textwidth/2}'.$question.'\end{minipage}&\begin{minipage}{\textwidth/2}'.$result.'\end{minipage}\end{tabular}'; |
my $tabsize=&Apache::londefdef::recalc($ENV{'form.textwidth'}); |
|
$tabsize=~/(\d+\.?\d*)/; |
|
$tabsize=$1/2.1; |
|
$tabsize.=' mm '; |
|
$result='\setlength{\tabcolsep}{1 mm}\begin{tabular}{p{'.$tabsize.'}p{'.$tabsize.'}}\begin{minipage}{'.$tabsize.'}'.$question.'\end{minipage}&\begin{minipage}{'.$tabsize.'}'.$result.'\end{minipage}\end{tabular}'; |
} |
} |
} elsif ($result=&itemdisplay('left')) { |
} elsif ($result=&itemdisplay('left')) { |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$result='<table><tr><td>'.$result.'</td><td>'.$question. |
$result='<table><tr><td>'.$result.'</td><td>'.$question. |
'</td></tr></table>'; |
'</td></tr></table>'; |
} else { |
} else { |
$result='\begin{tabular}{p{\textwidth/2}p{\textwidth/2}}\begin{minipage}{\textwidth/2}'.$result.'\end{minipage}&\begin{minipage}{\textwidth/2}'.$question.'\end{minipage}\end{tabular}'; |
my $tabsize=&Apache::londefdef::recalc($ENV{'form.textwidth'}); |
|
$tabsize=~/(\d+\.?\d*)/; |
|
$tabsize=$1/2.1; |
|
$tabsize.=' mm '; |
|
$result='\setlength{\tabcolsep}{1 mm}\begin{tabular}{p{'.$tabsize.'}p{'.$tabsize.'}}\begin{minipage}{'.$tabsize.'}'.$result.'\end{minipage}&\begin{minipage}{'.$tabsize.'}'.$question.'\end{minipage}\end{tabular}'; |
} |
} |
} |
} |
if ($target ne 'tex') {$result.="<br />";} else {$result.=' \\\\ ';} |
if ($target ne 'tex') {$result.="<br />";} else {$result.=' \\\\ ';} |
Line 592 sub end_foil {
|
Line 603 sub end_foil {
|
my $value = &Apache::lonxml::get_param('value',$parstack,$safeeval); |
my $value = &Apache::lonxml::get_param('value',$parstack,$safeeval); |
if ($value ne 'unused') { |
if ($value ne 'unused') { |
my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); |
my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); |
my $location =&Apache::lonxml::get_param('location',$parstack,$safeeval); |
|
&Apache::lonxml::debug("Got a name of :$name:"); |
&Apache::lonxml::debug("Got a name of :$name:"); |
if (!$name) { $name=$Apache::lonxml::curdepth; } |
if (!$name) { $name=$Apache::lonxml::curdepth; } |
&Apache::lonxml::debug("Using a name of :$name:"); |
&Apache::lonxml::debug("Using a name of :$name:"); |
|
if (defined($Apache::response::foilnames{$name})) { |
|
&Apache::lonxml::error(&mt("Foil name <b><tt>[_1]</tt></b> appears more than once. Foil names need to be unique.",$name)); |
|
} |
|
$Apache::response::foilnames{$name}++; |
|
my $location =&Apache::lonxml::get_param('location',$parstack, |
|
$safeeval); |
if ( $Apache::matchresponse::conceptgroup |
if ( $Apache::matchresponse::conceptgroup |
&& !&Apache::response::showallfoils() ) { |
&& !&Apache::response::showallfoils() ) { |
push @{ $Apache::response::conceptgroup{'names'} }, $name; |
push @{ $Apache::response::conceptgroup{'names'} }, $name; |