--- loncom/homework/matchresponse.pm	2004/10/21 06:35:57	1.47
+++ loncom/homework/matchresponse.pm	2005/02/12 01:13:56	1.51
@@ -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.51 2005/02/12 01:13:56 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -101,11 +101,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 +146,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='<table>';
 	my $i=0;
+	if ($direction eq 'horizontal') { $table .='<tr>';}
 	foreach my $name (@names) {
-	    $table.='<tr><td>'.$alphabet[$i].'</td><td>'.
-		$Apache::response::itemgroup{$name.'.text'}.
-		    '</td></tr>';
+	    if ($direction ne 'horizontal') { $table.='<tr>'; }
+	    $table.='<td>'.$alphabet[$i].'</td><td>'.
+		$Apache::response::itemgroup{$name.'.text'}.'</td>';
+	    if ($direction ne 'horizontal') { $table.='</tr>'; }
 	    $i++;
 	}
+	if ($direction eq 'horizontal') { $table .='</tr>';}
 	$table.='</table>';
 	$Apache::matchresponse::itemtable{'display'}=$table;
     } elsif ($target eq 'tex') {
@@ -309,7 +317,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);
@@ -636,13 +644,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::error("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 <b><tt>[_1]</tt></b> appears more than once. Foil names need to be unique.",$name));
@@ -654,28 +669,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;
 	    }
 	}