--- loncom/interface/lonnavdisplay.pm 2014/05/03 15:22:02 1.26 +++ loncom/interface/lonnavdisplay.pm 2015/03/30 22:29:24 1.32 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA -# Navigate Maps Handler +# Navigate Maps Display Handler # -# $Id: lonnavdisplay.pm,v 1.26 2014/05/03 15:22:02 raeburn Exp $ +# $Id: lonnavdisplay.pm,v 1.32 2015/03/30 22:29:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,7 +30,7 @@ package Apache::lonnavdisplay; use strict; -use Apache::Constants qw(:common :http); +use Apache::Constants qw(:common :http REDIRECT); use Apache::lonmenu(); use Apache::loncommon(); use Apache::lonnavmaps(); @@ -38,7 +38,7 @@ use Apache::lonhtmlcommon(); use Apache::lonnet; use Apache::lonlocal; use Apache::londocs(); -#use Time::HiRes qw( gettimeofday tv_interval ); +use Apache::lonuserstate; sub handler { my $r = shift; @@ -47,27 +47,41 @@ sub handler { sub real_handler { my $r = shift; - #my $t0=[&gettimeofday()]; # Handle header-only request if ($r->header_only) { - if ($env{'browser.mathml'}) { - &Apache::loncommon::content_type($r,'text/xml'); - } else { - &Apache::loncommon::content_type($r,'text/html'); - } + &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK; } - # Send header, don't cache this page - if ($env{'browser.mathml'}) { - &Apache::loncommon::content_type($r,'text/xml'); - } else { + # Check for critical messages and redirect if present. + my ($redirect,$url) = &Apache::loncommon::critical_redirect(300); + if ($redirect) { &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => $url); + return REDIRECT; } - &Apache::loncommon::no_cache($r); - my %toplinkitems=(); + # Check if course needs to be re-initialized + my $loncaparev = $r->dir_config('lonVersion'); + my ($result,@reinit) = &Apache::loncommon::needs_coursereinit($loncaparev); + + if ($result eq 'switch') { + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + $r->print(&Apache::loncommon::check_release_result(@reinit)); + return OK; + } elsif ($result eq 'update') { + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); + if ($ferr) { + my $requrl = $r->uri; + $env{'user.error.msg'}="$requrl:bre:0:0:Course not initialized"; + $env{'user.reinit'} = 1; + return HTTP_NOT_ACCEPTABLE; + } + } # Create the nav map my $navmap = Apache::lonnavmaps::navmap->new(); @@ -78,6 +92,9 @@ sub real_handler { $env{'user.reinit'} = 1; return HTTP_NOT_ACCEPTABLE; } + + # Send header, don't cache this page + &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; # ------------------------------------------------------------ Get query string @@ -117,6 +134,7 @@ sub real_handler { return OK; } + my %toplinkitems=(); my @resources = $navmap->retrieveResources(); my $sequenceCount = 0; my $problemCount = 0; @@ -283,8 +301,6 @@ sub real_handler { $r->print("

".&mt("This course is empty.")."

"); } } - #my $td=&tv_interval($t0); - #$r->print("
$td"); &endContentScreen($r); $r->print(&Apache::loncommon::end_page()); $r->rflush();