--- loncom/homework/matchresponse.pm 2004/10/21 06:35:57 1.47 +++ loncom/homework/matchresponse.pm 2005/06/21 21:00:55 1.54 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Full matching style response # -# $Id: matchresponse.pm,v 1.47 2004/10/21 06:35:57 albertel Exp $ +# $Id: matchresponse.pm,v 1.54 2005/06/21 21:00:55 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,6 +32,7 @@ use HTML::Entities(); use Math::Random(); use Apache::optionresponse(); use Apache::lonlocal; +use Apache::lonnet; BEGIN { &Apache::lonxml::register('Apache::matchresponse',('matchresponse')); @@ -101,11 +102,15 @@ sub start_itemgroup { 'location', ['top','bottom','left','right'], $token); + $result.=&Apache::edit::select_arg('Items Display Directection:', + 'direction', + ['vertical','horizontal'], + $token); $result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, $safeeval,'randomize', - 'location'); + 'location','direction'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } } elsif ($target eq 'web' or $target eq 'tex') { $Apache::matchresponse::itemtable{'location'}= @@ -142,15 +147,19 @@ sub end_itemgroup { } $Apache::response::itemgroup{'letter_name_map'}=\%letter_name_map; $Apache::response::itemgroup{'name_letter_map'}=\%name_letter_map; + my $direction=&Apache::lonxml::get_param('direction',$parstack,$safeeval); if ($target eq 'web') { my $table=''; my $i=0; + if ($direction eq 'horizontal') { $table .='';} foreach my $name (@names) { - $table.=''; + if ($direction ne 'horizontal') { $table.=''; } + $table.=''; + if ($direction ne 'horizontal') { $table.=''; } $i++; } + if ($direction eq 'horizontal') { $table .='';} $table.='
'.$alphabet[$i].''. - $Apache::response::itemgroup{$name.'.text'}. - '
'.$alphabet[$i].''. + $Apache::response::itemgroup{$name.'.text'}.'
'; $Apache::matchresponse::itemtable{'display'}=$table; } elsif ($target eq 'tex') { @@ -309,7 +318,7 @@ sub grade_response { $randomize, &Apache::response::showallfoils(), \%Apache::response::foilgroup); - if (!defined($ENV{'form.submitted'})) { return; } + if (!&Apache::response::submitted()) { return; } my %responsehash; my %grade; my ($temp,$right,$wrong,$ignored)=(1,0,0,0); @@ -429,7 +438,7 @@ sub displayfoils { if ($target eq 'tex') { $question.=' \\\\ '.$letter.':'.$text; } else { - $question.='
'.$letter.':'.$text; + $question.='
'.$letter.': '.$text; } } } else { @@ -502,7 +511,7 @@ sub displayfoils { $result='
'.$question. ''.$result.'
'; } else { - my $tabsize=&Apache::londefdef::recalc($ENV{'form.textwidth'}); + my $tabsize=&Apache::londefdef::recalc($env{'form.textwidth'}); my ($lefttabsize,$righttabsize)=(0,0); if ($Apache::matchresponse::TeXitemgroupwidth ne '') { $Apache::matchresponse::TeXitemgroupwidth=~/(\d*.?\d*)/; @@ -524,7 +533,7 @@ sub displayfoils { $result='
'.$result. ''.$question.'
'; } else { - my $tabsize=&Apache::londefdef::recalc($ENV{'form.textwidth'}); + my $tabsize=&Apache::londefdef::recalc($env{'form.textwidth'}); my ($lefttabsize,$righttabsize)=(0,0); if ($Apache::matchresponse::TeXitemgroupwidth ne '') { $Apache::matchresponse::TeXitemgroupwidth=~/(\d*.?\d*)/; @@ -636,13 +645,20 @@ sub end_foil { if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { $text=&Apache::lonxml::endredirection; } + if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { + if ($target eq 'tex' && $Apache::lonhomework::type eq 'exam') { + $text='\vskip 5mm $\triangleright$ '.$text; + } my $value = &Apache::lonxml::get_param('value',$parstack,$safeeval); if ($value ne 'unused') { my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); &Apache::lonxml::debug("Got a name of :$name:"); - if (!$name) { $name=$Apache::lonxml::curdepth; } + if (!$name) { + &Apache::lonxml::warning("Foils without names exist. This can cause problems to malfunction."); + $name=$Apache::lonxml::curdepth; + } &Apache::lonxml::debug("Using a name of :$name:"); if (defined($Apache::response::foilnames{$name})) { &Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique.",$name)); @@ -654,28 +670,12 @@ sub end_foil { && !&Apache::response::showallfoils() ) { push @{ $Apache::response::conceptgroup{'names'} }, $name; $Apache::response::conceptgroup{"$name.value"} = $value; - if ($target eq 'tex' && $Apache::lonhomework::type eq 'exam') { - $Apache::response::conceptgroup{"$name.text"} = ' $\triangleright$ '.$text; - } else { - $Apache::response::conceptgroup{"$name.text"} = $text; - } + $Apache::response::conceptgroup{"$name.text"} = $text; $Apache::response::conceptgroup{"$name.location"} = $location; } else { push @{ $Apache::response::foilgroup{'names'} }, $name; $Apache::response::foilgroup{"$name.value"} = $value; - if ($Apache::lonhomework::type eq 'exam') { - if ($target eq 'tex') { - $Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text; - } else { - $Apache::response::foilgroup{"$name.text"} = $text; - } - } else { - if ($target eq 'tex') { - $Apache::response::foilgroup{"$name.text"} = $text; - } else { - $Apache::response::foilgroup{"$name.text"} = $text; - } - } + $Apache::response::foilgroup{"$name.text"} = $text; $Apache::response::foilgroup{"$name.location"} = $location; } }