--- loncom/homework/response.pm	2003/02/13 23:48:27	1.69
+++ loncom/homework/response.pm	2003/04/21 20:59:02	1.72
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.69 2003/02/13 23:48:27 albertel Exp $
+# $Id: response.pm,v 1.72 2003/04/21 20:59:02 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -253,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"}=
@@ -402,6 +402,59 @@ 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') {
+	my $part  = $Apache::inputtags::part;
+	my $id    = $Apache::inputtags::response[-1];
+	$response = $ENV{'scantron.'.($Apache::lonxml::counter+$temp-1).
+			 '.answer'};
+	# save bubbled letter for later
+	$Apache::lonhomework::results{"resource.$part.$id.scantron"}.=
+	    $response;
+	$response = $let_to_num{$response};
+    } else {
+	$response = $ENV{$formparm};
+    }
+    return $response;
+}
+
+sub repetition {
+    my $id = $Apache::inputtags::part;
+    my $weight = &Apache::lonnet::EXT("resource.$id.weight");
+    my $repetition = int $weight/9;
+    if ($weight % 9 != 0) {$repetition++;} 
+    return $repetition;
+}
+
+sub scored_response {
+    my ($part,$id)=@_;
+    my $repetition=&repetition();
+    my $score=0;
+    for (my $i=0;$i<$repetition;$i++) {
+	my $increase=&Apache::response::getresponse($i+1);
+	if ($increase ne '') { $score+=$increase+1; }
+    }
+    my $weight = &Apache::lonnet::EXT("resource.$part.weight");
+    my $pcr=$score/$weight;
+    $Apache::lonhomework::results{"resource.$part.$id.awarded"}=$pcr;
+    $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
+	'ASSIGNED_SCORE';
+    return $repetition;
+}
+
 1;
 __END__