[LON-CAPA-cvs] cvs: loncom /homework matchresponse.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 20 Feb 2003 09:55:07 -0000
albertel Thu Feb 20 04:55:07 2003 EDT
Modified files:
/loncom/homework matchresponse.pm
Log:
- Fixes most of BUG#1260, but uncertain how to provide access to table color/alignment/border, leaning towards naming the elements and then letting the instructor use CSS
Index: loncom/homework/matchresponse.pm
diff -u loncom/homework/matchresponse.pm:1.3 loncom/homework/matchresponse.pm:1.4
--- loncom/homework/matchresponse.pm:1.3 Thu Feb 20 04:30:42 2003
+++ loncom/homework/matchresponse.pm Thu Feb 20 04:55:07 2003
@@ -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 @@
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 @@
$Apache::response::itemgroup{'letter_name_map'}=\%letter_name_map;
$Apache::response::itemgroup{'name_letter_map'}=\%name_letter_map;
if ($target eq 'web') {
- $result.='<table>';
+ my $table='<table>';
my $i=0;
foreach my $name (@names) {
- $result.='<tr><td>'.$alphabet[$i].'</td><td>'.
+ $table.='<tr><td>'.$alphabet[$i].'</td><td>'.
$Apache::response::itemgroup{$name.'.text'}.
'</td></tr>';
$i++;
}
- $result.='</table>';
+ $table.='</table>';
+ $Apache::matchresponse::itemtable{'display'}=$table;
} elsif ($target eq 'edit') { $result=&Apache::edit::end_table(); }
return $result;
}
@@ -306,9 +320,21 @@
&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 @@
my $text=$Apache::response::foilgroup{$name.'.text'};
my $value=$Apache::response::foilgroup{$name.'.value'};
my $letter=$name_letter_map{$value};
- $result.='<br />'.$letter.':'.$text;
+ $question.='<br />'.$letter.':'.$text;
}
} else {
my $i = 0;
@@ -355,9 +381,20 @@
$Apache::inputtags::response[-1].':'.$temp.'">'.
$optionlist."</select>\n";
my $text=$Apache::response::foilgroup{$name.'.text'};
- $result.='<br />'.$optionlist.$text."\n";
+ $question.='<br />'.$optionlist.$text."\n";
$temp++;
}
+ }
+ if ($result=&itemdisplay('top')) {
+ $result.=$question;
+ } elsif ($result=&itemdisplay('bottom')) {
+ $result=$question.$result;
+ } elsif ($result=&itemdisplay('right')) {
+ $result='<table><tr><td>'.$question.'</td><td>'.$result.
+ '</td></tr></table>';
+ } elsif ($result=&itemdisplay('left')) {
+ $result='<table><tr><td>'.$result.'</td><td>'.$question.
+ '</td></tr></table>';
}
$result.="<br />";
return $result;