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

sakharuk lon-capa-cvs@mail.lon-capa.org
Tue, 25 Feb 2003 16:09:01 -0000


sakharuk		Tue Feb 25 11:09:01 2003 EDT

  Modified files:              
    /loncom/homework	imageresponse.pm 
  Log:
   Corrected LaTeX output for imageresponse problems. Checked on mmp231 course problems - workes good. Needs some work for conceptgroup - I am truing to find real example.
  
  
Index: loncom/homework/imageresponse.pm
diff -u loncom/homework/imageresponse.pm:1.23 loncom/homework/imageresponse.pm:1.24
--- loncom/homework/imageresponse.pm:1.23	Wed Jan 15 21:55:05 2003
+++ loncom/homework/imageresponse.pm	Tue Feb 25 11:09:01 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # image click response style
 #
-# $Id: imageresponse.pm,v 1.23 2003/01/16 02:55:05 albertel Exp $
+# $Id: imageresponse.pm,v 1.24 2003/02/25 16:09:01 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -96,17 +96,26 @@
 }
 
 sub displayfoils {
-  my (@whichopt) = @_;
+  my ($target,@whichopt) = @_;
   my $result ='';
   my $name;
   my $temp=1;
   foreach $name (@whichopt) {
-    $result.=$Apache::response::foilgroup{"$name.text"}."<br />\n";
+    $result.=$Apache::response::foilgroup{"$name.text"};
+    if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="<br />\n";}
     my $image=$Apache::response::foilgroup{"$name.image"};
     if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ ) {
-      $result.="<img src=\"$image\"/> <br />\n";
+      if ($target eq 'tex') {
+	$result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";
+      } else {
+        $result.="<img src=\"$image\"/> <br />\n";
+      }
     } else {
-      $result.="<input type=\"image\" name=\"HWVAL_$Apache::inputtags::response['-1']:$temp\" src=\"$image\"/> <br />\n";
+      if ($target eq 'tex') {
+	$result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";
+      } else {
+        $result.="<input type=\"image\" name=\"HWVAL_$Apache::inputtags::response['-1']:$temp\" src=\"$image\"/> <br />\n";
+      }
     }
     $temp++;
   }
@@ -155,14 +164,14 @@
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result='';
   my @whichopt;
-  if ($target eq 'web' || $target eq 'grade') {
+  if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
     my ($count,$max) = &getfoilcounts($parstack,$safeeval);
     if ($count>$max) { $count=$max }
     &Apache::lonxml::debug("Count is $count from $max");
     @whichopt = &whichfoils($max);
   }
-  if ($target eq 'web') {
-    $result=&displayfoils(@whichopt);
+  if ($target eq 'web' || $target eq 'tex') {
+    $result=&displayfoils($target,@whichopt);
   }
   if ($target eq 'grade') {
     if ( defined $ENV{'form.submitted'}) {
@@ -181,7 +190,7 @@
 sub end_conceptgroup {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   $Apache::imageresponse::conceptgroup=0;  
-  if ($target eq 'web' || $target eq 'grade') {
+  if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
     if (defined(@{ $Apache::response::conceptgroup{'names'} })) {
       my @names = @{ $Apache::response::conceptgroup{'names'} };
       my $pick=int(&Math::Random::random_uniform() * ($#names+1));
@@ -203,7 +212,7 @@
 $Apache::imageresponse::curname='';
 sub start_foil {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  if ($target eq 'web' || $target eq 'grade') {
+  if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
     my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
     if ($name eq '') { $name=$Apache::lonxml::curdepth; }
     if ( $Apache::imageresponse::conceptgroup
@@ -224,13 +233,13 @@
 
 sub start_text {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  if ($target eq 'web') { &Apache::lonxml::startredirection; }
+  if ($target eq 'web' || $target eq 'tex') { &Apache::lonxml::startredirection; }
   return '';
 }
 
 sub end_text {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  if ($target eq 'web') {
+  if ($target eq 'web' || $target eq 'tex') {
     my $name = $Apache::imageresponse::curname;
     if ( $Apache::imageresponse::conceptgroup
        && !&Apache::response::showallfoils() ) {
@@ -250,9 +259,8 @@
 
 sub end_image {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;            
-  my $currentstring = '';
+  my $name = $Apache::imageresponse::curname;
   if ($target eq 'web') {
-    my $name = $Apache::imageresponse::curname;
     my $image = &Apache::lonxml::endredirection;
     &Apache::lonxml::debug("out is $image");
     if ( $Apache::imageresponse::conceptgroup
@@ -324,22 +332,22 @@
     #where can we find the picture?
     if (-e $newsrc) {
 	if ($path) {
-	    $currentstring .= '\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
+	  $Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
 	}
     } else {
 	my $temp_file;
 	my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";
 	$temp_file = Apache::File->new('>>'.$filename); 
 	print $temp_file "$src\n";
-	$currentstring .= '\vskip 0 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
+$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
     }
- } 
-  return $currentstring;
+  } 
+  return '';
 }
 
 sub start_rectangle {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  if ($target eq 'web' || $target eq 'grade') { &Apache::lonxml::startredirection; }
+  if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { &Apache::lonxml::startredirection; }
   return '';
 }
 
@@ -362,7 +370,7 @@
 
 sub end_rectangle {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  if ($target eq 'web' || $target eq 'grade') {
+  if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') {
     my $name = $Apache::imageresponse::curname;
     my $area = &Apache::lonxml::endredirection;
     &Apache::lonxml::debug("out is $area for $name");