--- loncom/xml/lonxml.pm 2014/06/21 23:39:27 1.531.2.16 +++ loncom/xml/lonxml.pm 2015/03/11 13:10:56 1.531.2.18 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.531.2.16 2014/06/21 23:39:27 raeburn Exp $ +# $Id: lonxml.pm,v 1.531.2.18 2015/03/11 13:10:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -323,11 +323,11 @@ sub printtokenheader { } sub printalltags { - my $temp; - foreach $temp (sort keys %Apache::lonxml::alltags) { - &Apache::lonxml::debug("$temp -- ". - join(',',@{ $Apache::lonxml::alltags{$temp} })); - } + my $temp; + foreach $temp (sort keys %Apache::lonxml::alltags) { + &Apache::lonxml::debug("$temp -- ". + join(',',@{ $Apache::lonxml::alltags{$temp} })); + } } sub xmlparse { @@ -908,7 +908,10 @@ sub init_safespace { $safeeval->permit("require"); $safeinit .= ';$external::target="'.$target.'";'; &Apache::run::run($safeinit,$safeeval); - &initialize_rndseed($safeeval); + my $rawrndseed = &initialize_rndseed($safeeval); + if ($target eq 'grade') { + $Apache::lonhomework::rawrndseed = $rawrndseed; + } } sub clean_safespace { @@ -947,6 +950,7 @@ sub initialize_rndseed { my $safeinit = '$external::randomseed="'.$rndseed.'";'; &Apache::lonxml::debug("Setting rndseed to $rndseed"); &Apache::run::run($safeinit,$safeeval); + return $rndseed; } sub default_homework_load { @@ -1421,7 +1425,7 @@ sub extlink { if (!$exact) { $res=&Apache::lonnet::hreflocation($Apache::lonxml::pwd[-1],$res); } - push(@Apache::lonxml::extlinks,$res) + push(@Apache::lonxml::extlinks,$res); } sub writeallows { @@ -1845,6 +1849,7 @@ sub handler { } } } + my $inhibit_menu; my %mystyle; my $result = ''; my $filecontents=&Apache::lonnet::getfile($file); @@ -1902,8 +1907,15 @@ ENDNOTFOUND &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['rawmode']); if ($env{'form.rawmode'}) { $result = $filecontents; } + if (($env{'request.state'} eq 'construct') && + (($filetype eq 'css') || ($filetype eq 'js')) && ($ENV{'HTTP_REFERER'})) { + if ($ENV{'HTTP_REFERER'} =~ m{^https?\://[^\/]+/priv/$LONCAPA::match_domain/$LONCAPA::match_username/[^\?]+\.(x?html?|swf)(|\?)[^\?]*$}) { + $inhibit_menu = 1; + } + } if (($filetype ne 'html') && - (!$env{'form.return_only_error_and_warning_counts'})) { + (!$env{'form.return_only_error_and_warning_counts'}) && + (!$inhibit_menu)) { my $nochgview = 1; my $controls = ''; if ($env{'request.state'} eq 'construct') { @@ -1941,7 +1953,7 @@ ENDNOTFOUND # # Edit action? Insert editing commands # - unless ($env{'request.state'} eq 'published') { + unless (($env{'request.state'} eq 'published') || ($inhibit_menu)) { if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'}))) { my ($displayfile,$url,$symb,$itemtitle,$action); @@ -2140,7 +2152,7 @@ sub error { my $declutter=&Apache::lonnet::declutter($env{'request.filename'}); my $baseurl = &Apache::lonnet::clutter($declutter); my @userlist; - foreach (keys %users) { + foreach (keys(%users)) { my ($user,$domain) = split(/:/, $_); push(@userlist,"$user:$domain"); my $key=$declutter.'_'.$user.'_'.$domain;