--- loncom/xml/lonxml.pm 2001/08/23 21:28:30 1.125 +++ loncom/xml/lonxml.pm 2001/10/03 13:34:22 1.134 @@ -13,7 +13,10 @@ # 6/12,6/13 H. K. Ng # 6/16 Gerd Kortemeyer # 7/27 H. K. Ng -# 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20,8/23 Gerd Kortemeyer +# 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20,8/23,8/24 Gerd Kortemeyer +# Guy Albertelli +# 9/26 Gerd Kortemeyer + package Apache::lonxml; use vars @@ -216,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', @@ -260,7 +264,11 @@ sub fontsettings() { sub registerurl { my $forcereg=shift; - if ($Apache::lonxml::registered) { return ''; } + if ($ENV{'request.publicaccess'}) { + return + ''; + } + if ($Apache::lonxml::registered && !$forcereg) { return ''; } $Apache::lonxml::registered=1; if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { my $hwkadd=''; @@ -322,9 +330,11 @@ ENDPARM function LONCAPAstale() { menu=window.open("","LONCAPAmenu"); menu.currentStale=1; - //menu.clearbut(7,1); - //menu.clearbut(7,2); - //menu.clearbut(7,3); + menu.switchbutton + (3,1,'reload.gif','return','location','go(currentURL)'); + menu.clearbut(7,1); + menu.clearbut(7,2); + menu.clearbut(7,3); menu.menucltim=menu.setTimeout( 'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+ 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3)', @@ -662,6 +672,11 @@ sub setup_globals { $Apache::lonxml::metamode = 1; $Apache::lonxml::evaluate = 1; $Apache::lonxml::import = 0; + } elsif ($target eq 'answer') { + $Apache::lonxml::redirection = 0; + $Apache::lonxml::metamode = 1; + $Apache::lonxml::evaluate = 1; + $Apache::lonxml::import = 1; } elsif ($target eq 'grade') { &startredirection; $Apache::lonxml::metamode = 0; @@ -876,6 +891,7 @@ sub parstring { } sub writeallows { + unless ($#extlinks>=0) { return; } my $thisurl='/res/'.&Apache::lonnet::declutter(shift); if ($ENV{'httpref.'.$thisurl}) { $thisurl=$ENV{'httpref.'.$thisurl}; @@ -887,6 +903,7 @@ sub writeallows { $httpref{'httpref.'. &Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl; } @extlinks; + @extlinks=(); &Apache::lonnet::appenv(%httpref); } @@ -1035,6 +1052,8 @@ ENDNOTFOUND unless ($ENV{'request.state'} eq 'published') { $result=&inserteditinfo($result,$filecontents); } + + writeallows($request->uri); $request->print($result); @@ -1080,7 +1099,25 @@ sub get_param { if ( ! $context ) { $context = -1; } my $args =''; if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } - return &Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #' + if ( $args =~ /my \$$param=\"/ ) { + return &Apache::run::run("{$args;".'return $'.$param.'}',$safeeval); #' + } else { + return undef; + } +} + +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 { @@ -1128,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); @@ -1141,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); }