--- rat/lonpageflip.pm 2017/06/26 01:57:11 1.96 +++ rat/lonpageflip.pm 2017/11/16 13:42:01 1.97 @@ -2,7 +2,7 @@ # # Page flip handler # -# $Id: lonpageflip.pm,v 1.96 2017/06/26 01:57:11 raeburn Exp $ +# $Id: lonpageflip.pm,v 1.97 2017/11/16 13:42:01 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -299,6 +299,28 @@ sub check_http_req { return $usehttp; } +sub reinited_js { + my ($url,$cid,$timeout) = @_; + if (!$timeout) { + $timeout = 0; + } + return <<"END"; + +END +} + # ================================================================ Main Handler sub handler { @@ -315,6 +337,7 @@ sub handler { my %cachehash=(); my $multichoice=0; my %multichoicehash=(); + my %prog_state=(); my ($redirecturl,$redirectsymb,$enc,$anchor); my $next=''; my $hostname = $r->hostname(); @@ -372,8 +395,20 @@ sub handler { untie(%hash); } } + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + $r->print(&Apache::loncommon::start_page('Content Changed')); + my $preamble = '
'. + '
'. + &mt('Your course session is being updated because of recent changes by course personnel.'). + ' '.&mt('Please be patient.').'
'. + '
'; + %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); + &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Updating course')); my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); + &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished')); if ($ferr) { + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); my $requrl = $r->uri; $env{'user.error.msg'}="$requrl:bre:0:0:Course not initialized"; $env{'user.reinit'} = 1; @@ -396,9 +431,16 @@ sub handler { } else { $furl=&Apache::lonnet::absolute_url().$furl; } - &Apache::loncommon::content_type($r,'text/html'); - $r->header_out(Location => $furl); - return REDIRECT; + if ($reinitcheck eq 'update') { + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + $r->print(&reinited_js($furl,$env{'request.course.id'},100)); + $r->print(&Apache::loncommon::end_page()); + return OK; + } else { + &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => $furl); + return REDIRECT; + } } if ($direction eq 'return') { # -------------------------------------------------------- Return to last known @@ -427,9 +469,15 @@ sub handler { } else { $newloc=&Apache::lonnet::absolute_url().$newloc } - &Apache::loncommon::content_type($r,'text/html'); - $r->header_out(Location => $newloc); - return REDIRECT; + if ($reinitcheck eq 'update') { + $r->print(&reinited_js($newloc,$env{'request.course.id'},100)); + $r->print(&Apache::loncommon::end_page()); + return OK; + } else { + &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => $newloc); + return REDIRECT; + } } # # Is the current URL on the map? If not, start with last known URL @@ -447,11 +495,18 @@ sub handler { if ($last) { $currenturl=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($last))[2]); } else { - &Apache::loncommon::content_type($r,'text/html'); - $r->header_out(Location => - &Apache::lonnet::absolute_url(). - '/adm/navmaps'); - return REDIRECT; + my $newloc = &Apache::lonnet::absolute_url(). + '/adm/navmaps'; + if ($reinitcheck eq 'update') { + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + $r->print(&reinited_js($newloc,$env{'request.course.id'},100)); + $r->print(&Apache::loncommon::end_page()); + return OK; + } else { + &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => $newloc); + return REDIRECT; + } } } # ------------------------------------------- Do we have any idea where we are? @@ -548,9 +603,16 @@ sub handler { $url .= $anchor; } } - &Apache::loncommon::content_type($r,'text/html'); - $r->header_out(Location => $url); - return REDIRECT; + if ($reinitcheck eq 'update') { + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + $r->print(&reinited_js($url,$env{'request.course.id'},100)); + $r->print(&Apache::loncommon::end_page()); + return OK; + } else { + &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => $url); + return REDIRECT; + } } else { # --------------------------------------------------------- There was a problem &Apache::loncommon::content_type($r,'text/html'); @@ -653,12 +715,23 @@ ENDSTART } } else { # ------------------------------------------------- Problem, could not tie hash + if ($reinitcheck eq 'update') { + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + $r->print(&Apache::loncommon::end_page()); + } $env{'user.error.msg'}="/adm/flip:bre:0:1:Course Data Missing"; return HTTP_NOT_ACCEPTABLE; } } else { # ---------------------------------------- No, could not determine where we are - $r->internal_redirect('/adm/ambiguous'); + my $newloc = '/adm/ambiguous'; + if ($reinitcheck eq 'update') { + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + $r->print(&reinited_js($newloc,$env{'request.course.id'},100)); + $r->print(&Apache::loncommon::end_page()); + } else { + $r->internal_redirect($newloc); + } return OK; } } else {