--- loncom/xml/lonxml.pm 2001/08/20 16:12:46 1.120
+++ loncom/xml/lonxml.pm 2001/08/23 22:12:24 1.126
@@ -13,7 +13,7 @@
# 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 Gerd Kortemeyer
+# 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20,8/23 Gerd Kortemeyer
package Apache::lonxml;
use vars
@@ -245,7 +245,7 @@ sub printtokenheader {
'
DocID: '.$token.
'
Time: '.localtime().'
';
} else {
- return $token;
+ return $token;
}
}
@@ -322,11 +322,9 @@ ENDPARM
function LONCAPAstale() {
menu=window.open("","LONCAPAmenu");
menu.currentStale=1;
- menu.switchbutton
- (3,1,'reload.gif','return','location','go(currentURL)');
- menu.clearbut(7,1);
- menu.clearbut(7,2);
- menu.clearbut(7,3);
+ //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)',
@@ -408,7 +406,9 @@ sub xmlparse {
my $finaloutput = &inner_xmlparse($target,\@stack,\@parstack,\@pars,
$safeeval,\%style_for_target);
-
+ if ($ENV{'request.uri'}) {
+ &writeallows($ENV{'request.uri'});
+ }
return $finaloutput;
}
@@ -435,7 +435,6 @@ sub htmlclean {
sub inner_xmlparse {
my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_;
- &Apache::lonxml::debug('Reentrant parser starting, again?');
my $finaloutput = '';
my $result;
my $token;
@@ -657,6 +656,7 @@ sub setup_globals {
my ($target)=@_;
$Apache::lonxml::registered = 0;
@Apache::lonxml::pwd=();
+ @Apache::lonxml::extlinks=();
if ($target eq 'meta') {
$Apache::lonxml::redirection = 0;
$Apache::lonxml::metamode = 1;
@@ -738,7 +738,10 @@ sub init_safespace {
#need to inspect this class of ops
# $safeeval->deny(":base_orig");
$safeinit .= ';$external::target="'.$target.'";';
- $safeinit .= ';$external::randomseed='.&Apache::lonnet::rndseed().';';
+ my $rndseed;
+ my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+ $rndseed=&Apache::lonnet::rndseed($symb,$courseid,$domain,$name);
+ $safeinit .= ';$external::randomseed='.$rndseed.';';
&Apache::run::run($safeinit,$safeeval);
}
@@ -873,6 +876,7 @@ sub parstring {
}
sub writeallows {
+ unless ($#extlinks>=0) { return; }
my $thisurl='/res/'.&Apache::lonnet::declutter(shift);
if ($ENV{'httpref.'.$thisurl}) {
$thisurl=$ENV{'httpref.'.$thisurl};
@@ -882,7 +886,9 @@ sub writeallows {
my %httpref=();
map {
$httpref{'httpref.'.
- &Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl; } @extlinks;
+ &Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl;
+ } @extlinks;
+ @extlinks=();
&Apache::lonnet::appenv(%httpref);
}
@@ -1031,10 +1037,11 @@ ENDNOTFOUND
unless ($ENV{'request.state'} eq 'published') {
$result=&inserteditinfo($result,$filecontents);
}
+
+ writeallows($request->uri);
$request->print($result);
- writeallows($request->uri);
return OK;
}
@@ -1119,6 +1126,29 @@ sub description {
my ($token)=@_;
return $insertlist{$insertlist{"$token->[1].num"}.'.description'};
}
+
+# ----------------------------------------------------------------- whichuser
+# returns a list of $symb, $courseid, $domain, $name that is correct for
+# 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'};
+ if (defined($ENV{'form.grade_symb'})) {
+ my $tmp_courseid=$ENV{'form.grade_courseid'};
+ my $allowed=&Apache::lonnet::allowed('mgr',$tmp_courseid);
+ if ($allowed) {
+ $symb=$ENV{'form.grade_symb'};
+ $courseid=$ENV{'form.grade_courseid'};
+ $domain=$ENV{'form.grade_domain'};
+ $name=$ENV{'form.grade_username'};
+ }
+ }
+ return ($symb,$courseid,$domain,$name);
+}
+
1;
__END__