--- loncom/homework/response.pm	2004/03/08 22:59:12	1.93
+++ loncom/homework/response.pm	2004/03/25 16:55:16	1.96
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.93 2004/03/08 22:59:12 albertel Exp $
+# $Id: response.pm,v 1.96 2004/03/25 16:55:16 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -273,7 +273,7 @@ sub end_dataresponse {
 	    my ($symb,$courseid,$domain,$name)=&Apache::lonxml::whichuser();
 	    my $allowed=&Apache::lonnet::allowed('mgr',$courseid);
 	    if ($allowed) {
-		&Apache::response::setup_params('dataresponse');
+		&Apache::response::setup_params('dataresponse',$safeeval);
 		my $partid = $Apache::inputtags::part;
 		my $id = $Apache::inputtags::response['-1'];
 		my $response = $ENV{'form.HWVAL_'.$id};
@@ -393,7 +393,7 @@ sub reset_params {
 }
 
 sub setup_params {
-    my ($tag) = @_;
+    my ($tag,$safeeval) = @_;
 
     if ($ENV{'request.state'} eq 'construct') { return; }
     my %paramlist=();
@@ -416,7 +416,9 @@ sub setup_params {
 	    &Apache::lonxml::debug("using nothing");
 	    $Apache::inputtags::params{$key}='';
 	} else {
-	    &Apache::lonxml::debug("using value");
+	    my $string="{return qq\0".$value."\0}";
+	    my $newvalue=&Apache::run::run($string,$safeeval,1);
+	    if (defined($newvalue)) { $value=$newvalue; }
 	    $Apache::inputtags::params{$key}=$value;
 	}
     }
@@ -595,6 +597,15 @@ sub analyze_store_foilgroup {
     push (@{ $Apache::lonhomework::analyze{"$part_id.shown"} }, @{ $shown });
 }
 
+sub check_if_computed {
+    my ($token,$parstack,$safeeval,$name)=@_;
+    my $value = &Apache::lonxml::get_param($name,$parstack,$safeeval);
+    if ($value ne $token->[2]{$name}) {
+	my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]";
+	$Apache::lonhomework::analyze{"$part_id.answercomputed"} = 1;
+    }
+}
+
 sub pick_foil_for_concept {
     my ($target,$attrs,$hinthash,$parstack,$safeeval)=@_;
     if (not defined(@{ $Apache::response::conceptgroup{'names'} })) { return; }
@@ -630,6 +641,20 @@ sub pick_foil_for_concept {
 
 }
 
+sub get_response_param {
+    my ($id,$name,$default)=@_;
+    my $parameter;
+    if ($ENV{'request.state'} eq 'construct' &&
+	defined($Apache::inputtags::params{$name})) {
+	$parameter=$Apache::inputtags::params{$name};
+    } else {
+	$parameter=&Apache::lonnet::EXT("resource.$id.$name");
+    }
+    if (!defined($parameter) ||	$parameter eq '') {
+	$parameter = $default;
+    }
+    return $parameter;
+}
 
 1;
 __END__