[LON-CAPA-cvs] cvs: loncom /homework/caparesponse caparesponse.pm

sakharuk lon-capa-cvs@mail.lon-capa.org
Mon, 13 Jan 2003 21:22:00 -0000


sakharuk		Mon Jan 13 16:22:00 2003 EDT

  Modified files:              
    /loncom/homework/caparesponse	caparesponse.pm 
  Log:
  Done some changes (mainly additions) to print bubble exams in a more elegant way. 
  
  
Index: loncom/homework/caparesponse/caparesponse.pm
diff -u loncom/homework/caparesponse/caparesponse.pm:1.75 loncom/homework/caparesponse/caparesponse.pm:1.76
--- loncom/homework/caparesponse/caparesponse.pm:1.75	Mon Dec  2 12:06:09 2002
+++ loncom/homework/caparesponse/caparesponse.pm	Mon Jan 13 16:22:00 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # caparesponse definition
 #
-# $Id: caparesponse.pm,v 1.75 2002/12/02 17:06:09 albertel Exp $
+# $Id: caparesponse.pm,v 1.76 2003/01/13 21:22:00 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -193,6 +193,7 @@
 	     &Apache::lonxml::debug("no format answer :$answer:");
 	     $formatted="$answer,";
 	   }
+
 	   if ($target eq 'tex') {
 	       $formatted='';
 	       #$formatted=&Apache::lonxml::latex_special_symbols($formatted);
@@ -231,6 +232,7 @@
 	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');
         if ($target eq 'web') {
+	  if ($$tagstack[-1] eq 'numericalresponse') {
 	    my $id=$Apache::inputtags::response[-1];
 	    $result.= '<table border="1"><tr>';
 	    for ($ind=0;$ind<$number_of_bubbles;$ind++) {
@@ -253,71 +255,80 @@
 		    $result.='<td><input type="radio" name="HWVAL'.$id.'" value="'.$ans.'"><b>'.$alphabet[$ind].'</b>: '.$ans.'</td>';
 	    }
 	    $result.='</tr></table>';
+	  } elsif ($$tagstack[-1] eq 'formularesponse') {
+	    $result.= '<br /><br /><font color="red"> Formula have to be entered here! </font><br /><br />';
+	  }
 	} elsif ($target eq 'tex') {
-	    my $max_val = 0;
-	    if ($formats[0]=~m/^(\d+)E([^\d]*)(\d*)$/) {
-		$max_val=$1+$2+4;
-	    } else {
-		$max_val=4;
-	    }
-	    $max_val = int(0.9*$ENV{'form.textwidth'}/(($max_val+6)*2));
-            my $celllength = 0.9*$ENV{'form.textwidth'}/$max_val-10;
-	    my @table_range = ();
-	    my $number_of_tables = int($number_of_bubbles/$max_val);
-	    for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$max_val;}
-	    if ($number_of_bubbles % $max_val != 0) {
-		$number_of_tables++;
-		push @table_range,($number_of_bubbles % $max_val);
-	    }
-	    my $j=0;
-	    my $cou=0;
-	    $result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';
-	    for (my $i=0;$i<$number_of_tables;$i++) {
-		$result.='\vskip -1 mm \noindent \begin{tabular}{';
-		for ($ind=0;$ind<$table_range[$j];$ind++) {
-		    $result.='lp{'.$celllength.' mm}';
+	 if ($$tagstack[-1] eq 'numericalresponse') {
+	     my $max_val = 0;
+	     if ($formats[0]=~m/^(\d+)E([^\d]*)(\d*)$/) {
+		 $max_val=$1+$2+4;
+	     } else {
+		 $max_val=4;
+	     }
+	     $max_val = int(0.9*$ENV{'form.textwidth'}/(($max_val+6)*2));
+		my $celllength = 0.9*$ENV{'form.textwidth'}/$max_val-10;
+	     my @table_range = ();
+	     my $number_of_tables = int($number_of_bubbles/$max_val);
+		for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$max_val;}
+	     if ($number_of_bubbles % $max_val != 0) {
+		    $number_of_tables++;
+		    push @table_range,($number_of_bubbles % $max_val);
 		}
-		$result.='}';
-		for ($ind=$cou;$ind<$cou+$table_range[$j];$ind++) {
-		    my $ans;
-		    if ($formats[0] ne '') {
-			$ans = sprintf('%.'.$formats[0],$bubbles_values[$ind]);
-			if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
-			    my $number = $1;
-			    my $power = $2;
-			    $power=~s/^\+//;
-			    $power=~s/^(-?)0+(\d+)//;
-			    $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
-			} 
-		    } else {
-			my $badans = $bubbles_values[$ind];
-			my $format = ''; 
-			#What is the number? (integer,decimal,floating point)
-			if ($badans=~/^(\d*\.?\d*)(E|e)(\d*)$/) {
-			    $format = 'e'.$2;
-			} elsif ($badans=~/^(\d*)\.(\d*)$/) {
-			    $format = '4f';
-			} elsif ($badans=~/^(\d*)$/) {
-			    $format = 'd';
-			}
-			$ans = sprintf('%.'.$format,$bubbles_values[$ind]);			
-			if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
-			    my $number = $1;
-			    my $power = $2;
-			    $power=~s/^\+//;
-			    $power=~s/^(-?)0+(\d+)//;
-			    $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
-			} 
-		    }
-		    $result.='\hskip -3 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -2 mm & {\small '.$ans.'} ';
-		    if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';}
-		}
-		$cou += $table_range[$j];
-		$j++;
-		$result.='\\\\\end{tabular}\vskip 0 mm ';    
-	    }
-	    $result.='\end{enumerate}';
-	    &Apache::lonxml::increment_counter();
+	     my $j=0;
+	     my $cou=0;
+	     $result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';
+	     for (my $i=0;$i<$number_of_tables;$i++) {
+		 $result.='\vskip -1 mm \noindent \begin{tabular}{';
+		 for ($ind=0;$ind<$table_range[$j];$ind++) {
+		     $result.='lp{'.$celllength.' mm}';
+		 }
+		 $result.='}';
+		 for ($ind=$cou;$ind<$cou+$table_range[$j];$ind++) {
+		     my $ans;
+		     if ($formats[0] ne '') {
+			 $ans = sprintf('%.'.$formats[0],$bubbles_values[$ind]);
+			 if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
+			     my $number = $1;
+			     my $power = $2;
+			     $power=~s/^\+//;
+			     $power=~s/^(-?)0+(\d+)//;
+			     $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
+			 } 
+		     } else {
+			 my $badans = $bubbles_values[$ind];
+			 my $format = ''; 
+			 #What is the number? (integer,decimal,floating point)
+			 if ($badans=~/^(\d*\.?\d*)(E|e)(\d*)$/) {
+			     $format = 'e'.$2;
+			 } elsif ($badans=~/^(\d*)\.(\d*)$/) {
+			     $format = '4f';
+			 } elsif ($badans=~/^(\d*)$/) {
+			     $format = 'd';
+			 }
+			 $ans = sprintf('%.'.$format,$bubbles_values[$ind]);			
+			 if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
+			     my $number = $1;
+			     my $power = $2;
+			     $power=~s/^\+//;
+			     $power=~s/^(-?)0+(\d+)//;
+			     $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
+			 } 
+		     }
+		     $result.='\hskip -3 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -2 mm & {\small '.$ans.'} ';
+		     if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';}
+		 }
+		 $cou += $table_range[$j];
+		 $j++;
+		 $result.='\\\\\end{tabular}\vskip 0 mm ';    
+	     }
+	     $result.='\end{enumerate}';
+	     &Apache::lonxml::increment_counter();
+         } else {
+	     $result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}';
+	     $result.= '\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\textit{Live blank on scoring form}\vskip 0 mm \end{enumerate}';
+	     &Apache::lonxml::increment_counter();
+	 }
 	}
     }
   } elsif ($target eq 'edit') {