--- loncom/homework/randomlabel.pm	2005/05/24 10:10:16	1.75
+++ loncom/homework/randomlabel.pm	2005/05/31 22:14:32	1.76
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # random labelling tool
 #
-# $Id: randomlabel.pm,v 1.75 2005/05/24 10:10:16 foxr Exp $
+# $Id: randomlabel.pm,v 1.76 2005/05/31 22:14:32 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -67,10 +67,19 @@ my $cgi_id;
 my $scale_factor;		# image scale factor.
 my $label_xscale;                # Label scale factor (needed for gnuplot).
 my $label_yscale;
+my $gnuplot_background;		# This will be true if a gnuplot backgound
+
+
 BEGIN {
     &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label','bgimg'));
 }
 
+# Gnuplot calback called if a </gnuplot> tag is encountered:
+#
+sub gnuplot_handler {
+    $gnuplot_background = 1;
+}
+
 sub check_int {
     # utility function to do error checking on a integer.
     my ($num,$default) = @_;
@@ -85,7 +94,10 @@ sub check_int {
 
 my ($height_param,$width_param);
 sub start_randomlabel {
+
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+    $gnuplot_background = 0;
+    &Apache::lonplot::register_callback(\&gnuplot_handler);
     my $result='';
     push (@Apache::lonxml::namespace,'randomlabel');
     ($height_param,$width_param)=(0,0);
@@ -147,6 +159,7 @@ sub end_randomlabel {
     } elsif ($target eq 'edit') {
 	$result.=&Apache::edit::end_table;
     }
+    &Apache::lonplot::clear_callback();
     return $result;
 }
 
@@ -170,8 +183,7 @@ sub end_bgimg {
 	    #    If it's a gnuplot the uncleaned image will have
 	    #    the text "dynamically generated plot"
 	    #    and "cgi-bin/plot.gif?"
-	    if ( ($bgimg =~ /dynamically generated plot/) &&
-		 ($bgimg =~ /cgi-bin\/plot.gif\?/) ) {
+	    if ( $gnuplot_background) {
 		&Apache::lonxml::debug("Gnuplot image!");
 		my $plot_x = $Apache::lonplot::plot{'width'};
 		my $plot_y = $Apache::lonplot::plot{'height'};
@@ -195,7 +207,7 @@ sub end_bgimg {
 	    $src =~ s/^\s+//s;
 	    
 
-	    if ($src =~ /^\\graphicspath/) {
+	    if ($gnuplot_background) {
 	        $height_param = $Apache::lonplot::plot{'height'};
 		my $initial_width= $Apache::lonplot::plot{'width'};
 		$width_param  = $Apache::lonplot::plot{'texwidth'};