--- loncom/homework/imageresponse.pm	2005/02/10 23:00:10	1.62
+++ loncom/homework/imageresponse.pm	2005/05/10 11:24:01	1.68
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # image click response style
 #
-# $Id: imageresponse.pm,v 1.62 2005/02/10 23:00:10 albertel Exp $
+# $Id: imageresponse.pm,v 1.68 2005/05/10 11:24:01 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -36,6 +36,7 @@ use Apache::randomlylabel();
 use Apache::londefdef();
 use Apache::Constants qw(:common :http);
 use Apache::lonlocal;
+use Apache::lonnet;
 
 BEGIN {
     &Apache::lonxml::register('Apache::imageresponse',('imageresponse'));
@@ -227,7 +228,8 @@ sub clean_up_image {
 	}
     } else {
 	$image=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$image);
-	if (&Apache::lonnet::repcopy($image) ne OK) {
+	&Apache::lonxml::debug("repcopying: $image");
+	if (&Apache::lonnet::repcopy($image) ne 'ok') {
 	    $image='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif';
 	}
     }
@@ -242,8 +244,8 @@ sub gradefoils {
     my $id=$Apache::inputtags::response['-1'];
     my $temp=1;
     foreach my $name (@whichopt) {
-	$x=$ENV{"form.HWVAL_$id:$temp.x"};
-	$y=$ENV{"form.HWVAL_$id:$temp.y"};
+	$x=$env{"form.HWVAL_$id:$temp.x"};
+	$y=$env{"form.HWVAL_$id:$temp.y"};
 	&Apache::lonxml::debug("Got a x of $x and a y of $y for $name");
 	if (defined($x) && defined($y) &&
 	    defined(@{ $Apache::response::foilgroup{"$name.area"} })) {
@@ -294,7 +296,7 @@ sub end_foilgroup {
 	if ($target eq 'web' || $target eq 'tex') {
 	    $result=&displayfoils($target,@whichopt);
 	} elsif ($target eq 'grade') {
-	    if ( defined $ENV{'form.submitted'}) { &gradefoils(@whichopt); }
+	    if ( defined $env{'form.submitted'}) { &gradefoils(@whichopt); }
 	} elsif ( $target eq 'analyze') {
 	    &Apache::response::analyze_store_foilgroup(\@whichopt,
 						      ['text','image','area']);
@@ -341,6 +343,7 @@ sub insert_foil {
 $Apache::imageresponse::curname='';
 sub start_foil {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+    my $result;
     if ($target eq 'web' || $target eq 'grade' || $target eq 'tex' ||
 	$target eq 'analyze') {
 	my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
@@ -360,8 +363,17 @@ sub start_foil {
 	    push(@{ $Apache::response::foilgroup{'names'} }, $name);
 	}
 	$Apache::imageresponse::curname=$name;
-    }
-    return '';
+    } elsif ($target eq 'edit') {
+	$result  = &Apache::edit::tag_start($target,$token);
+	$result .= &Apache::edit::text_arg('Name:','name',$token);
+	$result .= &Apache::edit::end_row().
+	    &Apache::edit::start_spanning_row();
+    } elsif ($target eq 'modified') {
+	my $constructtag=&Apache::edit::get_new_args($token,$parstack,
+						     $safeeval,'name');
+	if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
+    } 
+    return $result;;
 }
 
 sub end_foil {
@@ -455,10 +467,25 @@ sub end_image {
 	$result=&Apache::edit::end_table();
     } elsif ($target eq 'tex') {
 	my $src = &Apache::lonxml::endredirection();
-	my ($path,$file) = &Apache::londefdef::get_eps_image($src);
-	my ($height_param,$width_param)=
-	    &Apache::londefdef::image_size($src,0.3,$parstack,$safeeval);
-	$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
+
+	#  There may be all sorts of whitespace on fore and aft:
+
+	$src =~ s/\s+$//;
+	$src =~ s/^\s+//;
+
+	#
+	#  Gnuplot e.g. just generates the latex to put inplace.
+	#
+	my $graphinclude;
+	if ($src =~ /^\\graphicspath/) {
+	    $graphinclude = $src;
+	} else {
+	    my ($path,$file) = &Apache::londefdef::get_eps_image($src);
+	    my ($height_param,$width_param)=
+		&Apache::londefdef::image_size($src,0.3,$parstack,$safeeval);
+	    $graphinclude = '\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'}';
+	}
+	$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent '.$graphinclude;
     } 
     return $result;
 }