--- 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 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'};