--- loncom/xml/lonxml.pm	2000/07/05 18:04:45	1.9
+++ loncom/xml/lonxml.pm	2000/07/18 21:27:10	1.11
@@ -18,7 +18,7 @@ sub register {
     $Apache::lonxml::alltags{$temptag}=$space;
   }
 }
-
+                                     
 use Apache::style;
 use Apache::lontexconvert;
 use Apache::run;
@@ -75,13 +75,15 @@ sub xmlparse {
 	   push (@innerstack,$tokenpat->[1]);
 	   push (@innerparstack,&parstring($tokenpat));
 	   $partstring = &callsub("start_$tokenpat->[1]", 
-				  $target, $tokenpat, \@innerparstack)
+				  $target, $tokenpat, \@innerparstack,
+				  $pat, $safeeval);
 	 } elsif ($tokenpat->[0] eq 'E') {
 	   #clear out any tags that didn't end
 	   while ($tokenpat->[1] ne $innerstack[$#innerstack] 
 		  && ($#innerstack > 0)) {pop @innerstack;pop @innerparstack;}
 	   $partstring = &callsub("end_$tokenpat->[1]",
-				  $target, $tokenpat, \@innerparstack)
+				  $target, $tokenpat, \@innerparstack,
+				  $pat, $safeeval);
 	 }
 	 #pass both the variable to the style tag, and the tag we 
 	 #are processing inside the <definedtag>
@@ -90,7 +92,8 @@ sub xmlparse {
 	 if ($tokenpat->[0] eq 'E') { pop @innerstack;pop @innerparstack; }
        }
      } else {
-       my $result = &callsub("start_$token->[1]", $target, $token, \@parstack);
+       my $result = &callsub("start_$token->[1]", $target, $token,\@parstack,
+			     $pars, $safeeval);
        $finaloutput .= &Apache::run::evaluate($result,$safeeval,
 					      $parstack[$#parstack]);
      }              
@@ -114,13 +117,15 @@ sub xmlparse {
 	   push (@innerstack,$tokenpat->[1]);
 	   push (@innerparstack,&parstring($tokenpat));
 	   $partstring = &callsub("start_$tokenpat->[1]", 
-				  $target, $tokenpat, \@innerparstack)
+				  $target, $tokenpat, \@innerparstack,
+				  $pat, $safeeval);
 	 } elsif ($tokenpat->[0] eq 'E') {
 	   #clear out any tags that didn't end
 	   while ($tokenpat->[1] ne $innerstack[$#innerstack] 
 		  && ($#innerstack > 0)) {pop @innerstack;pop @innerparstack;}
 	   $partstring = &callsub("end_$tokenpat->[1]",
-				  $target, $tokenpat, \@innerparstack)
+				  $target, $tokenpat, \@innerparstack,
+				  $pat, $safeeval);
 	 }
 	 #pass both the variable to the style tag, and the tag we 
 	 #are processing inside the <definedtag>
@@ -129,7 +134,8 @@ sub xmlparse {
 	 if ($tokenpat->[0] eq 'E') { pop @innerstack;pop @innerparstack; }
        }
      } else {
-       my $result = &callsub("start_$token->[1]", $target, $token, \@parstack);
+       my $result = &callsub("end_$token->[1]", $target, $token, \@parstack,
+			     $pars,$safeeval);
        $finaloutput .= &Apache::run::evaluate($result,$safeeval,
 					      $parstack[$#parstack]);
      }
@@ -141,16 +147,16 @@ sub xmlparse {
 }
 
 sub callsub {
-  my ($sub,$target,$token,@parstack)=@_;
+  my ($sub,$target,$token,$parstack,$parser,$safeeval)=@_;
   my $currentstring='';
   {
     no strict 'refs';
     if (my $space=$Apache::lonxml::alltags{$token->[1]}) {
       #print "Calling sub $sub in $space \n";
       $sub="$space\:\:$sub";
-      $currentstring = &$sub($target,$token,\@parstack);
+      $currentstring = &$sub($target,$token,\@$parstack,$parser,$safeeval);
     } else {
-      #print "NOT Calling sub $sub\n";
+      print "NOT Calling sub $sub\n";
       if (defined($token->[4])) {
 	$currentstring = $token->[4];
       } else {
@@ -170,3 +176,8 @@ sub parstring {
 }
 1;
 __END__
+
+
+
+
+