--- rat/lonpage.pm 2005/02/17 09:09:57 1.67 +++ rat/lonpage.pm 2007/06/25 23:27:10 1.83 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Page Handler # -# $Id: lonpage.pm,v 1.67 2005/02/17 09:09:57 albertel Exp $ +# $Id: lonpage.pm,v 1.83 2007/06/25 23:27:10 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,7 +31,7 @@ package Apache::lonpage; use strict; use Apache::Constants qw(:common :http); -use Apache::lonnet(); +use Apache::lonnet; use Apache::loncommon(); use Apache::lonxml(); use Apache::lonlocal; @@ -39,6 +39,9 @@ use Apache::lonmenu; use HTML::TokeParser; use GDBM_File; use Apache::lonsequence; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; + # -------------------------------------------------------------- Module Globals my %hash; @@ -63,7 +66,7 @@ sub tracetable { my ($sofar,$rid,$beenhere)=@_; my $further=$sofar; my $randomout=0; - unless ($ENV{'request.role.adv'}) { + unless ($env{'request.role.adv'}) { $randomout = $hash{'randomout_'.$rid}; } unless ($beenhere=~/\&$rid\&/) { @@ -138,7 +141,7 @@ sub handler { # ------------------------------------------- Set document type for header only if ($r->header_only) { - if ($ENV{'browser.mathml'}) { + if ($env{'browser.mathml'}) { &Apache::loncommon::content_type($r,'text/xml'); } else { &Apache::loncommon::content_type($r,'text/html'); @@ -151,7 +154,7 @@ sub handler { ['forceselect','launch']); my $number_of_columns = 1; my $requrl=$r->uri; - my $target = $ENV{'form.grade_target'}; + my $target = $env{'form.grade_target'}; # &Apache::lonnet::logthis("Got a target of $target"); if ($target eq 'meta') { &Apache::loncommon::content_type($r,'text/html'); @@ -159,8 +162,8 @@ sub handler { return OK; } # ----------------------------------------------------------------- Tie db file - if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) { - my $fn=$ENV{'request.course.fn'}; + if (($env{'request.course.fn'}) && (!$env{'form.forceselect'})) { + my $fn=$env{'request.course.fn'}; if (-e "$fn.db") { if (tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) { # ------------------------------------------------------------------- Hash tied @@ -180,8 +183,10 @@ sub handler { for ($i=0;$i<=$#rows;$i++) { if ($rows[$i]) { my @colcont=split(/\&/,$rows[$i]); - foreach (@colcont) { - $symbhash{$hash{'src_'.$_}}=''; + foreach my $rid (@colcont) { + my ($mapid,$resid)=split(/\./,$rid); + $symbhash{$hash{'src_'.$rid}}= + [$hash{'src_'.$rid},$resid]; } } } @@ -201,8 +206,6 @@ sub handler { my %ssivlink=(); my %ssialink=(); - my %metalink=(); - my %cellemb=(); my $allscript=''; @@ -225,7 +228,6 @@ sub handler { if ($hash{'encrypted_'.$_}) { $src=&Apache::lonenc::encrypted($src); } - $metalink{$_}=$src.'.meta'; $cellemb{$_}= &Apache::loncommon::fileembstyle($extension); if ($cellemb{$_} eq 'ssi') { @@ -235,26 +237,37 @@ sub handler { my $prefix=$_.'_'; my %posthash=('request.prefix' => $prefix, + 'LONCAPA_INTERNAL_no_discussion' => 'true', 'symb' => $symb); - if ($ENV{'form.grade_target'} eq 'tex') { - $posthash{'grade_target'}=$ENV{'form.grade_target'}; - $posthash{'textwidth'}=$ENV{'form.textwidth'}; - $posthash{'problem_split'}=$ENV{'form.problem_split'}; - $posthash{'latex_type'}=$ENV{'form.latex_type'}; - $posthash{'rndseed'}=$ENV{'form.rndseed'}; + if ($env{'form.grade_target'} eq 'tex') { + $posthash{'grade_target'}=$env{'form.grade_target'}; + $posthash{'textwidth'}=$env{'form.textwidth'}; + $posthash{'problem_split'}=$env{'form.problem_split'}; + $posthash{'latex_type'}=$env{'form.latex_type'}; + $posthash{'rndseed'}=$env{'form.rndseed'}; } - if (($ENV{'form.'.$prefix.'submit'}) - || ($ENV{'form.all_submit'})) { - foreach (keys %ENV) { - if ($_=~/^form.$prefix/) { - my $name=$_; - $name=~s/^form.$prefix//; - $posthash{$name}=$ENV{$_}; - } - } + my $submitted=exists($env{'form.all_submit'}); + if (!$submitted) { + foreach my $key (keys(%env)) { + if ($key=~/^form.\Q$prefix\Esubmit_/) { + $submitted=1;last; + } + } + } + if ($submitted) { + foreach my $key (keys(%env)) { + if ($key=~/^form.\Q$prefix\E/) { + my $name=$key; + $name=~s/^form.\Q$prefix\E//; + $posthash{$name}=$env{$key}; + } + } + if (exists($env{'form.all_submit'})) { + $posthash{'all_submit'}='yes'; + } } my $output=Apache::lonnet::ssi($src,%posthash); - $output=~s|//(\s*)?\s||gs; + $output=~s|//(\s*)?\s||gs; if ($target eq 'tex') { $output =~ s/^([^&]+)\\begin{document}//; $output =~ s/\\end{document}//; @@ -322,7 +335,7 @@ sub handler { $output=~s/\