--- rat/lonpageflip.pm 2014/06/26 18:28:25 1.80.8.6 +++ rat/lonpageflip.pm 2015/03/14 22:29:25 1.80.8.7 @@ -2,7 +2,7 @@ # # Page flip handler # -# $Id: lonpageflip.pm,v 1.80.8.6 2014/06/26 18:28:25 raeburn Exp $ +# $Id: lonpageflip.pm,v 1.80.8.7 2015/03/14 22:29:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,6 +36,7 @@ use LONCAPA; use Apache::Constants qw(:common :http REDIRECT); use Apache::lonnet; use Apache::loncommon(); +use Apache::lonuserstate; use Apache::lonlocal; use HTML::TokeParser; use GDBM_File; @@ -268,9 +269,30 @@ sub handler { my @possibilities=(); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['postdata']); if (($env{'form.postdata'})&&($env{'request.course.fn'})) { - $env{'form.postdata'}=~/(\w+)\:(.*)/; - my $direction=$1; - my $currenturl=$2; + my ($direction,$currenturl) = ($env{'form.postdata'}=~/(\w+)\:(.*)/); + + if ($env{'request.course.id'}) { + # 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; + } + } + } + if ($currenturl=~m|^/enc/|) { $currenturl=&Apache::lonenc::unencrypted($currenturl); } @@ -390,7 +412,7 @@ sub handler { untie(%hash); # --------------------------------------------------------- Store position info $cachehash{$startoutmap}{'last_direction'}=[$direction,'notasymb']; - foreach my $thismap (keys %cachehash) { + foreach my $thismap (keys(%cachehash)) { my $mapnum=$cachehash{$thismap}->{'mapnum'}; delete($cachehash{$thismap}->{'mapnum'}); &Apache::lonnet::symblist($thismap,