--- loncom/xml/lonplot.pm	2005/12/01 18:46:17	1.112
+++ loncom/xml/lonplot.pm	2007/05/23 22:36:28	1.117
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.112 2005/12/01 18:46:17 albertel Exp $
+# $Id: lonplot.pm,v 1.117 2007/05/23 22:36:28 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -36,6 +36,9 @@ use Apache::response;
 use Apache::lonxml;
 use Apache::edit;
 use Apache::lonnet;
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
+ 
 
 use vars qw/$weboutputformat $versionstring/;
 
@@ -125,8 +128,8 @@ my $words_test     = sub {$_[0]=~s/\s+/
 ###################################################################
 my @gnuplot_edit_order = 
     qw/alttag bgcolor fgcolor height width font transparent grid samples 
-    border align texwidth texfont plotcolor plottype lmargin rmargin tmargin
-    bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle
+    border align texwidth texfont plotcolor plottype gridtype lmargin rmargin
+    tmargin bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle
     pattern solid/;
 
 my $margin_choices = ['default',0..20];
@@ -214,11 +217,11 @@ my %gnuplot_defaults =
 	 choices     => ['100','200','500','1000','2000','5000']
 	 },
      align        => {
-	 default     => 'center',
-	 test        => sub {$_[0]=~/^(left|right|center)$/},
+	 default     => 'middle',
+	 test        => sub {$_[0]=~/^(left|right|middle|center)$/},
 	 description => 'alignment for image in html',
 	 edit_type   => 'choice',
-	 choices     => ['left','right','center']
+	 choices     => ['left','right','middle']
 	 },
      texwidth     => {
          default     => '93',
@@ -269,6 +272,13 @@ my %gnuplot_defaults =
 	 edit_type   => 'choice',
          choices     => ['Cartesian','Polar']
          },
+     gridtype     => {
+	 default     => 'Cartesian',
+	 test        => sub {$_[0]=~/^(Polar|Cartesian)$/},
+	 description => 'Grid type:',
+	 edit_type   => 'choice',
+         choices     => ['Cartesian','Polar']
+         },
      lmargin      => {
 	 default     => 'default',
 	 test        => sub {$_[0]=~/^(default|\d+)$/},
@@ -540,7 +550,9 @@ sub start_gnuplot {
     } elsif ($target eq 'edit') {
 	$result .= &Apache::edit::tag_start($target,$token,'GnuPlot');
 	$result .= &edit_attributes($target,$token,\%gnuplot_defaults,
-				    \@gnuplot_edit_order);
+				    \@gnuplot_edit_order)
+	    .&Apache::edit::end_row()
+	    .&Apache::edit::start_spanning_row();
     } elsif ($target eq 'modified') {
 	my $constructtag=&Apache::edit::get_new_args
 	    ($token,$parstack,$safeeval,keys(%gnuplot_defaults));
@@ -574,11 +586,11 @@ sub end_gnuplot {
 	    '_'.time.'_'.$$.$randnumber.'_plot';
 	## Write the plot description to the file
 	&write_gnuplot_file($tmpdir,$filename,$target);
-	$filename = &Apache::lonnet::escape($filename);
+	$filename = &escape($filename);
 	## return image tag for the plot
 	if ($target eq 'web') {
 	    $result .= <<"ENDIMAGE";
-<img src    = "/cgi-bin/plot.gif?file=$filename.data&output=$weboutputformat" 
+<img src    = "/cgi-bin/plot.$weboutputformat?file=$filename.data" 
      width  = "$Apache::lonplot::plot{'width'}"
      height = "$Apache::lonplot::plot{'height'}"
      align  = "$Apache::lonplot::plot{'align'}"
@@ -591,7 +603,7 @@ ENDIMAGE
 	    &Apache::lonxml::register_ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps");
 	    $result  = "%DYNAMICIMAGE:$Apache::lonplot::plot{'width'}:$Apache::lonplot::plot{'height'}:$Apache::lonplot::plot{'texwidth'}\n";
 	    $result .= '\graphicspath{{/home/httpd/perl/tmp/}}'."\n";
-	    $result .= '\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&Apache::lonnet::unescape($filename).'.eps}';
+	    $result .= '\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&unescape($filename).'.eps}';
 	}
     } elsif ($target eq 'edit') {
 	$result.=&Apache::edit::tag_end($target,$token);
@@ -707,9 +719,7 @@ sub start_title {
     } elsif ($target eq 'edit') {
 	$result.=&Apache::edit::tag_start($target,$token,'Plot Title');
 	my $text=&Apache::lonxml::get_all_text("/title",$parser,$style);
-	$result.=&Apache::edit::end_row().
-	    &Apache::edit::start_spanning_row().
-	    &Apache::edit::editline('',$text,'',60);
+	$result.=&Apache::edit::editline('',$text,'',60);
     } elsif ($target eq 'modified') {
 	$result.=&Apache::edit::rebuild_tag($token);
 	$result.=&Apache::edit::modifiedfield("/title",$parser);
@@ -740,9 +750,7 @@ sub start_xlabel {
     } elsif ($target eq 'edit') {
 	$result.=&Apache::edit::tag_start($target,$token,'Plot Xlabel');
 	my $text=&Apache::lonxml::get_all_text("/xlabel",$parser,$style);
-	$result.=&Apache::edit::end_row().
-	    &Apache::edit::start_spanning_row().
-	    &Apache::edit::editline('',$text,'',60);
+	$result.=&Apache::edit::editline('',$text,'',60);
     } elsif ($target eq 'modified') {
 	$result.=&Apache::edit::rebuild_tag($token);	
 	$result.=&Apache::edit::modifiedfield("/xlabel",$parser);
@@ -774,9 +782,7 @@ sub start_ylabel {
     } elsif ($target eq 'edit') {
 	$result .= &Apache::edit::tag_start($target,$token,'Plot Ylabel');
 	my $text = &Apache::lonxml::get_all_text("/ylabel",$parser,$style);
-	$result .= &Apache::edit::end_row().
-	    &Apache::edit::start_spanning_row().
-	    &Apache::edit::editline('',$text,'',60);
+	$result .= &Apache::edit::editline('',$text,'',60);
     } elsif ($target eq 'modified') {
 	$result.=&Apache::edit::rebuild_tag($token);
 	$result.=&Apache::edit::modifiedfield("/ylabel",$parser);
@@ -848,13 +854,15 @@ sub start_curve {
     } elsif ($target eq 'edit') {
 	$result .= &Apache::edit::tag_start($target,$token,'Curve');
 	$result .= &edit_attributes($target,$token,\%curve_defaults,
-                                    \@curve_edit_order);
+                                    \@curve_edit_order)
+	    .&Apache::edit::end_row()
+	    .&Apache::edit::start_spanning_row();
+
     } elsif ($target eq 'modified') {
 	my $constructtag=&Apache::edit::get_new_args
 	    ($token,$parstack,$safeeval,keys(%curve_defaults));
 	if ($constructtag) {
 	    $result = &Apache::edit::rebuild_tag($token);
-	    $result.= &Apache::edit::handle_insert();
 	}
     }
     return $result;
@@ -892,9 +900,7 @@ sub start_function {
     } elsif ($target eq 'edit') {
 	$result .= &Apache::edit::tag_start($target,$token,'Gnuplot compatible curve function');
 	my $text = &Apache::lonxml::get_all_text("/function",$parser,$style);
-	$result .= &Apache::edit::end_row().
-	    &Apache::edit::start_spanning_row().
-	    &Apache::edit::editline('',$text,'',60);
+	$result .= &Apache::edit::editline('',$text,'',60);
     } elsif ($target eq 'modified') {
 	$result.=&Apache::edit::rebuild_tag($token);
 	$result.=&Apache::edit::modifiedfield("/function",$parser);
@@ -969,9 +975,7 @@ sub start_data {
     } elsif ($target eq 'edit') {
 	$result .= &Apache::edit::tag_start($target,$token,'Comma or space deliminated curve data');
 	my $text = &Apache::lonxml::get_all_text("/data",$parser,$style);
-	$result .= &Apache::edit::end_row().
-	    &Apache::edit::start_spanning_row().
-	    &Apache::edit::editline('',$text,'',60);
+	$result .= &Apache::edit::editline('',$text,'',60);
     } elsif ($target eq 'modified') {
 	$result.=&Apache::edit::rebuild_tag($token);
 	$result.=&Apache::edit::modifiedfield("/data",$parser);
@@ -1108,14 +1112,20 @@ sub write_gnuplot_file {
     } elsif ($target eq 'tex') {
 	$gnuplot_input .= "set term postscript eps $Apache::lonplot::plot{'plotcolor'} solid \"Helvetica\" $pt \n";
 	$gnuplot_input .= "set output \"/home/httpd/perl/tmp/".
-	    &Apache::lonnet::unescape($filename).".eps\"\n";
+	    &unescape($filename).".eps\"\n";
     }
-    # cartesian or polar?
+    # cartesian or polar plot?
     if (lc($Apache::lonplot::plot{'plottype'}) eq 'polar') {
         $gnuplot_input .= 'set polar'.$/;
     } else {
         # Assume Cartesian
     }
+    # cartesian or polar grid?
+    if (lc($Apache::lonplot::plot{'gridtype'}) eq 'polar') {
+        $gnuplot_input .= 'set grid polar'.$/;
+    } else {
+        # Assume Cartesian
+    }
     # solid or pattern for boxes?
     if (lc($Apache::lonplot::plot{'fillstyle'}) eq 'solid') {
         $gnuplot_input .= 'set style fill solid '.