--- loncom/homework/response.pm	2006/12/18 21:12:51	1.157
+++ loncom/homework/response.pm	2007/04/07 00:42:29	1.161
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.157 2006/12/18 21:12:51 www Exp $
+# $Id: response.pm,v 1.161 2007/04/07 00:42:29 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -265,11 +265,14 @@ sub meta_response_order {
 }
 
 sub check_for_previous {
-    my ($curresponse,$partid,$id) = @_;
+    my ($curresponse,$partid,$id,$last) = @_;
     my %previous;
     $previous{'used'} = 0;
     foreach my $key (sort(keys(%Apache::lonhomework::history))) {
 	if ($key =~ /resource\.$partid\.$id\.submission$/) {
+	    if ( $last && $key =~ /^(\d+):/ ) {
+		next if ($1 >= $last);
+	    }
 	    &Apache::lonxml::debug("Trying $key");
 	    my $pastresponse=$Apache::lonhomework::history{$key};
 	    if ($pastresponse eq $curresponse) {
@@ -409,7 +412,7 @@ sub end_customresponse {
 	    &Apache::response::submitted('scantron')) {
 	    &Apache::response::scored_response($part,$id);
 	} elsif ( $response =~ /[^\s]/ && 
-		  $Apache::response::custom_answer_type eq 'loncapa/perl') {
+		  $Apache::response::custom_answer_type[-1] eq 'loncapa/perl') {
 	    if (!$Apache::lonxml::default_homework_loaded) {
 		&Apache::lonxml::default_homework_load($safeeval);
 	    }
@@ -575,7 +578,7 @@ sub start_answer {
     if ($target eq "edit" ) {
 	$result=&Apache::edit::tag_start($target,$token,'Answer algorithm');
 	$result.=&Apache::edit::editfield($token->[1],
-					  $Apache::response::custom_answer,
+					  $Apache::response::custom_answer[-1],
 					  '',80,4);
     } elsif ( $target eq "modified" ) {
 	$result=$token->[4].&Apache::edit::modifiedfield('/answer',$parser);
@@ -694,7 +697,7 @@ sub setup_params {
     if ($env{'request.state'} eq 'construct') { return; }
     my %paramlist=();
     foreach my $key (keys(%Apache::lonnet::packagetab)) {
-	if ($key =~ /^$tag/) {
+	if ($key =~ /^\Q$tag\E/) {
 	    my ($package,$name) = split(/&/,$key);
 	    $paramlist{$name}=1;
 	}
@@ -1026,7 +1029,13 @@ sub submitted {
     if ($who eq 'scantron') { return 0; }
     # if the Submit Answer button for this particular part was pressed
     my $partid=$Apache::inputtags::part;
-    if (defined($env{'form.submit_'.$partid})) { return 1; }
+    if ($env{'form.submitted'} eq "part_$partid") {
+	return 1;
+    }
+    if ($env{'form.submitted'} eq "yes"
+	&& defined($env{'form.submit_'.$partid})) {
+	return 1;
+    }
     # Submit All button on a .page was pressed
     if (defined($env{'form.all_submit'})) { return 1; }
     # otherwise no submission occured