--- loncom/homework/response.pm	2002/11/25 21:36:42	1.67
+++ loncom/homework/response.pm	2003/04/08 02:42:55	1.70
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.67 2002/11/25 21:36:42 albertel Exp $
+# $Id: response.pm,v 1.70 2003/04/08 02:42:55 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -68,7 +68,10 @@ sub start_hintresponse {
 
 sub end_hintresponse {
   pop @Apache::inputtags::response;
-  %Apache::inputtags::params=@{pop(@Apache::inputtags::paramstack)};
+  if (defined($Apache::inputtags::paramstack[-1])) {
+      %Apache::inputtags::params=
+	  @{ pop(@Apache::inputtags::paramstack) };
+  }
   return '';
 }
 
@@ -172,7 +175,7 @@ sub check_for_previous {
   my ($curresponse,$partid,$id) = @_;
   my %previous;
   $previous{'used'} = 0;
-  foreach my $key (reverse(sort(keys(%Apache::lonhomework::history)))) {
+  foreach my $key (sort(keys(%Apache::lonhomework::history))) {
     if ($key =~ /resource\.$partid\.$id\.submission/) {
       &Apache::lonxml::debug("Trying $key");
       my $pastresponse=$Apache::lonhomework::history{$key};
@@ -183,16 +186,17 @@ sub check_for_previous {
 	  $history=$1;
 	  $previous{'award'} = $Apache::lonhomework::history{"$history:resource.$partid.$id.awarddetail"};
 	  $previous{'last'}='0';
+	  push(@{ $previous{'version'} },$history);
 	} else {
 	  $previous{'award'} = $Apache::lonhomework::history{"resource.$partid.$id.awarddetail"};
 	  $previous{'last'}='1';
 	}
 	if (! $previous{'award'} ) { $previous{'award'} = 'UNKNOWN';	}
 	&Apache::lonxml::debug("got a match :$previous{'award'}:$previous{'used'}:");
-	last;
       }
     }
   }
+  &Apache::lonhomework::showhash(%previous);
   return %previous;
 }
 
@@ -204,6 +208,7 @@ sub handle_previous {
     } else {
       push(@Apache::inputtags::previous,'PREVIOUSLY_USED');
     }
+    push(@Apache::inputtags::previous_version,$$previous{'version'});
   }
 }
 
@@ -248,7 +253,7 @@ sub end_dataresponse {
 	&Apache::response::setup_params('dataresponse');
 	my $partid = $Apache::inputtags::part;
 	my $id = $Apache::inputtags::response['-1'];
-	my $response = $ENV{'form.HWVAL'.$id};
+	my $response = $ENV{'form.HWVAL_'.$id};
 	my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
 	if ( $response =~ /[^\s]/) {
 	  $Apache::lonhomework::results{"resource.$partid.$id.$name"}=
@@ -397,6 +402,29 @@ sub showallfoils {
   }
   return $return;
 }
+
+sub getresponse {
+    my ($temp)=@_;
+    my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1'];
+    my $response;
+    if (!defined($temp)) {
+	$temp=1;
+    } else {
+	$formparm.=":$temp";
+    }
+    my %let_to_num=('A'=>0,'B'=>1,'C'=>2,'D'=>3,'E'=>4,'F'=>5,'G'=>6,'H'=>7,
+		    'I'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'O'=>14,
+		    'P'=>15,'Q'=>16,'R'=>17,'S'=>18,'T'=>19,'U'=>20,'V'=>21,
+		    'W'=>22,'X'=>23,'Y'=>24,'Z'=>25);
+    if ($ENV{'form.submitted'} eq 'scantron') {
+	$response = $ENV{'scantron.'.($Apache::lonxml::counter+$temp-1).
+			 '.answer'};
+	$response = $let_to_num{$response};
+    } else {
+	$response = $ENV{$formparm};
+    }
+    return $response;
+}
 1;
 __END__