--- loncom/xml/lonxml.pm	2001/09/28 18:20:06	1.131
+++ loncom/xml/lonxml.pm	2001/10/03 13:34:22	1.134
@@ -219,16 +219,17 @@ sub maketoken {
 }
 
 sub printtokenheader {
-    my ($target,$token,$symb,$tuname,$tudom,$tcrsid)=@_;
+    my ($target,$token,$tsymb,$tcrsid,$tudom,$tuname)=@_;
     unless ($token) { return ''; }
 
-    unless ($symb) {
-	$symb=&Apache::lonnet::symbread();
+    my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+    unless ($tsymb) {
+	$tsymb=$symb;
     }
     unless ($tuname) {
-	$tuname=$ENV{'user.name'};
-        $tudom=$ENV{'user.domain'};
-        $tcrsid=$ENV{'request.course.id'};
+	$tuname=$name;
+        $tudom=$domain;
+        $tcrsid=$courseid;
     }
 
     my %reply=&Apache::lonnet::get('environment',
@@ -1105,6 +1106,20 @@ sub get_param {
   }
 }
 
+sub get_param_var {
+  my ($param,$parstack,$safeeval,$context) = @_;
+  if ( ! $context ) { $context = -1; }
+  my $args ='';
+  if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }
+  if ( $args !~ /my \$$param=\"/ ) { return undef; }
+  my $value=&Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #'
+  if ($value =~ /^[\$\@\%]/) {
+    return &Apache::run::run("return $value",$safeeval,1);
+  } else {
+    return $value;
+  }
+}
+
 sub register_insert {
   my @data = split /\n/, &Apache::lonnet::getfile('/home/httpd/lonTabs/insertlist.tab');
   my $i;
@@ -1150,10 +1165,7 @@ sub description {
 # calls to lonnet functions for this setup.
 # - looks for form.grade_ parameters
 sub whichuser {
-  my $symb=&Apache::lonnet::symbread();
-  my $courseid=$ENV{'request.course.id'};
-  my $domain=$ENV{'user.domain'};
-  my $name=$ENV{'user.name'};
+  my ($symb,$courseid,$domain,$name);
   if (defined($ENV{'form.grade_symb'})) {
     my $tmp_courseid=$ENV{'form.grade_courseid'};
     my $allowed=&Apache::lonnet::allowed('mgr',$tmp_courseid);
@@ -1163,6 +1175,11 @@ sub whichuser {
       $domain=$ENV{'form.grade_domain'};
       $name=$ENV{'form.grade_username'};
     }
+  } else {
+    $symb=&Apache::lonnet::symbread();
+    $courseid=$ENV{'request.course.id'};
+    $domain=$ENV{'user.domain'};
+    $name=$ENV{'user.name'};
   }
   return ($symb,$courseid,$domain,$name);
 }