--- loncom/homework/matchresponse.pm 2003/02/20 09:30:42 1.3 +++ loncom/homework/matchresponse.pm 2003/02/20 09:55:07 1.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Full matching style response # -# $Id: matchresponse.pm,v 1.3 2003/02/20 09:30:42 albertel Exp $ +# $Id: matchresponse.pm,v 1.4 2003/02/20 09:55:07 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -85,11 +85,24 @@ sub start_itemgroup { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; %Apache::response::itemgroup=(); + %Apache::matchresponse::itemtable=(); if ($target eq 'edit') { $result=&Apache::edit::tag_start($target,$token); $result.=&Apache::edit::select_arg('Randomize Order:','randomize', ['yes','no'],$token); + $result.=&Apache::edit::select_arg('Items Display Location:', + 'location', + ['top','bottom','left','right'], + $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'); + if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } + } elsif ($target eq 'web') { + $Apache::matchresponse::itemtable{'location'}= + &Apache::lonxml::get_param('location',$parstack,$safeeval); } return $result; } @@ -117,15 +130,16 @@ sub end_itemgroup { $Apache::response::itemgroup{'letter_name_map'}=\%letter_name_map; $Apache::response::itemgroup{'name_letter_map'}=\%name_letter_map; if ($target eq 'web') { - $result.=''; + my $table='
'; my $i=0; foreach my $name (@names) { - $result.=''; $i++; } - $result.='
'.$alphabet[$i].''. + $table.='
'.$alphabet[$i].''. $Apache::response::itemgroup{$name.'.text'}. '
'; + $table.=''; + $Apache::matchresponse::itemtable{'display'}=$table; } elsif ($target eq 'edit') { $result=&Apache::edit::end_table(); } return $result; } @@ -306,9 +320,21 @@ sub grade_response { &Apache::response::handle_previous(\%previous,$ad); } +sub itemdisplay { + my ($location)=@_; + if ($location eq 'top' && + !defined($Apache::matchresponse::itemtable{'location'})) { + return $Apache::matchresponse::itemtable{'display'}; + } + if ($Apache::matchresponse::itemtable{'location'} eq $location) { + return $Apache::matchresponse::itemtable{'display'}; + } + return undef; +} sub displayfoils { my ($target,$max,$randomize)=@_; my $result; + my $question; my (@whichfoils)=&whichorder(&getfoilcounts($max),$randomize, &Apache::response::showallfoils(), \%Apache::response::foilgroup); @@ -330,7 +356,7 @@ sub displayfoils { my $text=$Apache::response::foilgroup{$name.'.text'}; my $value=$Apache::response::foilgroup{$name.'.value'}; my $letter=$name_letter_map{$value}; - $result.='
'.$letter.':'.$text; + $question.='
'.$letter.':'.$text; } } else { my $i = 0; @@ -355,10 +381,21 @@ sub displayfoils { $Apache::inputtags::response[-1].':'.$temp.'">'. $optionlist."\n"; my $text=$Apache::response::foilgroup{$name.'.text'}; - $result.='
'.$optionlist.$text."\n"; + $question.='
'.$optionlist.$text."\n"; $temp++; } } + if ($result=&itemdisplay('top')) { + $result.=$question; + } elsif ($result=&itemdisplay('bottom')) { + $result=$question.$result; + } elsif ($result=&itemdisplay('right')) { + $result='
'.$question.''.$result. + '
'; + } elsif ($result=&itemdisplay('left')) { + $result='
'.$result.''.$question. + '
'; + } $result.="
"; return $result; }