--- loncom/homework/optionresponse.pm	2003/03/26 18:42:29	1.69
+++ loncom/homework/optionresponse.pm	2003/04/21 22:09:47	1.75
@@ -1,7 +1,7 @@
 # LearningOnline Network with CAPA
 # option list style responses
 #
-# $Id: optionresponse.pm,v 1.69 2003/03/26 18:42:29 sakharuk Exp $
+# $Id: optionresponse.pm,v 1.75 2003/04/21 22:09:47 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -31,8 +31,6 @@ package Apache::optionresponse;
 use strict;
 use Apache::response;
 
-my $flag_for_exam_printing = 1;
-
 BEGIN {
   &Apache::lonxml::register('Apache::optionresponse',('optionresponse'));
 }
@@ -187,7 +185,10 @@ sub end_foilgroup {
 	my $wrong=0;
 	my $ignored=0;
 	foreach $name (@whichopt) {
-	  my $response = $ENV{'form.HWVAL_'.$Apache::inputtags::response['-1'].":$temp"};
+	  my $response=&Apache::response::getresponse($temp);
+	  if ($ENV{'form.submitted'} eq 'scantron') {
+	      $response = $opt[$response];
+	  }
 	  $responsehash{$name}=$response;
 	  if ( $response =~ /[^\s]/) {
 	    my $value=$Apache::response::foilgroup{$name.'.value'};
@@ -209,30 +210,45 @@ sub end_foilgroup {
 	my %previous=&Apache::response::check_for_previous($responsestr,
 							   $part,$id);
 	&Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored");
-	my $ad;
-	if ($wrong==0 && $ignored==0) {
-	  $ad='EXACT_ANS';
-	} elsif ($wrong==0 && $right==0) {
-	  #nothing submitted
-	} else {
-	  if ($ignored==0) {
-	    $ad='INCORRECT';
-	  } else {
-	    $ad='MISSING_ANSWER';
-	  }
-	}
 	$Apache::lonhomework::results{"resource.$part.$id.submission"}=
-	  $responsestr;
+	    $responsestr;
 	$Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr;
-	$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
-	  $ad;
-	&Apache::response::handle_previous(\%previous,$ad);
+	
+	if (!$Apache::lonhomework::scantronmode) {
+	    my $ad;
+	    if ($wrong==0 && $ignored==0) {
+		$ad='EXACT_ANS';
+	    } elsif ($wrong==0 && $right==0) {
+		#nothing submitted
+	    } else {
+		if ($ignored==0) {
+		    $ad='INCORRECT';
+		} else {
+		    $ad='MISSING_ANSWER';
+		}
+	    }
+	    $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad;
+	    &Apache::response::handle_previous(\%previous,$ad);
+	} else {
+	    my $ad;
+	    if ($wrong==0 && $right==0) {
+		#nothing submitted
+	    } else {
+		$ad='ASSIGNED_SCORE';
+	    }
+	    $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad;
+	    $Apache::lonhomework::results{"resource.$part.$id.awarded"}=
+		$right/(scalar(@whichopt));
+	}
       }
     }
+    &Apache::lonxml::increment_counter(&getfoilcounts($max));
   } elsif ($target eq 'edit') {
     $result.=&Apache::edit::end_table();
-  }  
-  if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {$result .= '\end{enumerate}';}
+  }
+  if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
+      $result .= '\end{enumerate}';
+  }
   return $result;
 }
 
@@ -318,8 +334,7 @@ sub displayfoils {
   my $result;
   my $name;
   my $displayoptionintex=0;
-  my @alphabet = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
-		  'Q','R','S','T','U','V','W','X','Y','Z');
+  my @alphabet = ('A'..'Z');
   my @whichopt = &whichfoils($max,$randomize);
   my $part=$Apache::inputtags::part;
   my $id=$Apache::inputtags::response[-1];
@@ -385,16 +400,18 @@ sub displayfoils {
 	}
       }
       if ($target ne 'tex') {
-	  $optionlist='<select name="HWVAL_'.
+	  if ($Apache::lonhomework::type ne 'exam') {
+	    $optionlist='<select name="HWVAL_'.
 	      $Apache::inputtags::response['-1'].':'.$temp.'">'.
 		  $optionlist."</select>\n";
+	  }
 	  my $text=$Apache::response::foilgroup{$name.'.text'};
-	  if (!($text=~s|<drawoptionlist\s*/>|$optionlist|)) {
+	  if (!($text=~s|<drawoptionlist\s*/>|$optionlist|) && $Apache::lonhomework::type ne 'exam') {
 	      $text=$optionlist.$text;
 	  }
 	  $result.=$break.$text."\n";
 	  if ($Apache::lonhomework::type eq 'exam') {
-	    $result.=&webbubbles(\@opt,\@alphabet);
+	    $result.=&webbubbles(\@opt,\@alphabet,$temp);
 	  }
 	  $temp++;
       } else {
@@ -469,14 +486,15 @@ sub optionlist_correction {
 
 sub webbubbles {
 
-    my ($ropt,$ralphabet)=@_;
+    my ($ropt,$ralphabet,$temp)=@_;
     my @opt=@$ropt; 
     my @alphabet=@$ralphabet;
     my $result='';
 	my $number_of_bubbles = $#opt + 1;
 	$result.= '<table border="1"><tr>';
 	for (my $ind=0;$ind<$number_of_bubbles;$ind++) {
-	   $result.='<td>'.$alphabet[$ind].': '.$opt[$ind].'</td>';
+	   $result.='<td><input type="radio" name="HWVAL_'.$Apache::inputtags::response['-1'].':'.$temp.
+                    '" value='.$opt[$ind].'>'.$alphabet[$ind].': '.$opt[$ind].'</td>';
 	}
 	$result.='</tr></table>';
 	return $result;
@@ -505,7 +523,6 @@ sub bubbles {
 	}
 
     }
-    &Apache::lonxml::increment_counter();
     return $result;
 }
 
@@ -633,10 +650,10 @@ sub end_foil {
 	   && !&Apache::response::showallfoils() ) {
 	push @{ $Apache::response::conceptgroup{'names'} }, $name;
 	$Apache::response::conceptgroup{"$name.value"} = $value;
-	if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam' and $flag_for_exam_printing) {
+	if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') {
 	    $Apache::response::conceptgroup{"$name.text"} = '\vskip 4 mm $\triangleright$ '.$text;
 	} else {
-	    if ($target eq 'tex') {
+	    if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') {
 		$Apache::response::conceptgroup{"$name.text"} = ' $\triangleright$ '.$text;
 	    } else {
 		$Apache::response::conceptgroup{"$name.text"} = $text;
@@ -646,10 +663,10 @@ sub end_foil {
       } else {
 	push @{ $Apache::response::foilgroup{'names'} }, $name;
 	$Apache::response::foilgroup{"$name.value"} = $value;
-	if ($Apache::lonhomework::type eq 'exam' and $flag_for_exam_printing) {
+	if ($Apache::lonhomework::type eq 'exam') {
 	    $Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text;
 	} else {
-	    if ($target eq 'tex') {
+	    if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') {
 		$Apache::response::foilgroup{"$name.text"} = ' $\triangleright$ '.$text;
 	    } else {
 		$Apache::response::foilgroup{"$name.text"} = $text;