[LON-CAPA-cvs] cvs: loncom /xml lonplot.pm

matthew lon-capa-cvs@mail.lon-capa.org
Fri, 22 Mar 2002 13:45:59 -0000


matthew		Fri Mar 22 08:45:59 2002 EDT

  Modified files:              
    /loncom/xml	lonplot.pm 
  Log:
  Changes to avoid double-interpolation of perl variables.
  
  
Index: loncom/xml/lonplot.pm
diff -u loncom/xml/lonplot.pm:1.57 loncom/xml/lonplot.pm:1.58
--- loncom/xml/lonplot.pm:1.57	Thu Mar 14 16:44:37 2002
+++ loncom/xml/lonplot.pm	Fri Mar 22 08:45:59 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.57 2002/03/14 21:44:37 matthew Exp $
+# $Id: lonplot.pm,v 1.58 2002/03/22 13:45:59 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -416,9 +416,6 @@
 	      'xtics','ytics'));
     push (@Apache::lonxml::namespace,'lonplot');
     if ($target eq 'web' || $target eq 'tex') {
-	my $inside = &Apache::lonxml::get_all_text("/gnuplot",$$parser[-1]);
-	$inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);
-	&Apache::lonxml::newparser($parser,\$inside);
 	&get_attributes(\%plot,\%gnuplot_defaults,$parstack,$safeeval,
 			$tagstack->[-1]);
     } elsif ($target eq 'edit') {
@@ -581,6 +578,7 @@
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	$title = &Apache::lonxml::get_all_text("/title",$$parser[-1]);
+	$title=&Apache::run::evaluate($title,$safeeval,$$parstack[-1]);
 	$title =~ s/\n/ /g;
 	if (length($title) > $max_str_len) {
 	    $title = substr($title,0,$max_str_len);
@@ -614,6 +612,7 @@
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	$xlabel = &Apache::lonxml::get_all_text("/xlabel",$$parser[-1]);
+	$xlabel=&Apache::run::evaluate($xlabel,$safeeval,$$parstack[-1]);
 	$xlabel =~ s/\n/ /g;
 	if (length($xlabel) > $max_str_len) {
 	    $xlabel = substr($xlabel,0,$max_str_len);
@@ -648,6 +647,7 @@
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	$ylabel = &Apache::lonxml::get_all_text("/ylabel",$$parser[-1]);
+	$ylabel = &Apache::run::evaluate($ylabel,$safeeval,$$parstack[-1]);
 	$ylabel =~ s/\n/ /g;
 	if (length($ylabel) > $max_str_len) {
 	    $ylabel = substr($ylabel,0,$max_str_len);
@@ -685,6 +685,7 @@
 	&get_attributes(\%label,\%label_defaults,$parstack,$safeeval,
 		    $tagstack->[-1]);
 	my $text = &Apache::lonxml::get_all_text("/label",$$parser[-1]);
+	$text = &Apache::run::evaluate($text,$safeeval,$$parstack[-1]);
 	$text =~ s/\n/ /g;
 	$text = substr($text,0,$max_str_len) if (length($text) > $max_str_len);
 	$label{'text'} = $text;
@@ -763,8 +764,9 @@
 	    &Apache::lonxml::warning('Use of <function> precludes use of <data>.  The <data> will be omitted in favor of the <function> declaration.');
 	    delete $curves[-1]->{'data'} ;
 	}
-	$curves[-1]->{'function'} = 
-	    &Apache::lonxml::get_all_text("/function",$$parser[-1]);
+        my $function = &Apache::lonxml::get_all_text("/function",$$parser[-1]);
+	$function = &Apache::run::evaluate($function,$safeeval,$$parstack[-1]);
+	$curves[-1]->{'function'} = $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[-1]);
@@ -801,6 +803,7 @@
 	    delete($curves[-1]->{'function'});
 	}
 	my $datatext = &Apache::lonxml::get_all_text("/data",$$parser[-1]);
+	$datatext=&Apache::run::evaluate($datatext,$safeeval,$$parstack[-1]);
 	# Deal with cases where we're given an array...
 	if ($datatext =~ /^\@/) {
 	    $datatext = &Apache::run::run('return "'.$datatext.'"',