--- rat/lonpageflip.pm 2010/03/16 19:56:02 1.80 +++ rat/lonpageflip.pm 2012/05/01 22:51:12 1.80.8.1 @@ -2,7 +2,7 @@ # # Page flip handler # -# $Id: lonpageflip.pm,v 1.80 2010/03/16 19:56:02 droeschl Exp $ +# $Id: lonpageflip.pm,v 1.80.8.1 2012/05/01 22:51:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -217,6 +217,26 @@ sub get_next_possible_move { return ($next,$mapurl); } +sub navlaunch { + my ($r)=@_; + &Apache::loncommon::content_type($r,'text/html'); + &Apache::loncommon::no_cache($r); + $r->send_http_header; + $r->print(&Apache::loncommon::start_page('Launched')); + $r->print(<Goto first resource

+ +

Collapse external navigation window

+ENDNAV + $r->print(&Apache::loncommon::end_page()); +} + sub first_accessible_resource { my $furl; if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', @@ -228,7 +248,8 @@ sub first_accessible_resource { my ($name,$value) = split(/=/,$pair); $args{&unescape($name)} = &unescape($value); } - if (!&Apache::lonnet::allowed('bre',$url,$args{'symb'})) { + if ((($env{'environment.remotenavmap'} eq 'on') && ($furl =~ m{^/adm/navmaps})) || + (!&Apache::lonnet::allowed('bre',$url,$args{'symb'}))) { # Wow, we cannot see this ... move forward to the next one that we can see my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); # Build the new URL @@ -282,7 +303,7 @@ sub handler { return REDIRECT; } - if ($direction eq 'return') { + if ($direction eq 'return' || $direction eq 'navlaunch') { # -------------------------------------------------------- Return to last known my $last; if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db', @@ -305,12 +326,17 @@ sub handler { untie %hash; } else { $newloc='/adm/navmaps'; - } + } + if (($newloc =~ m{^/adm/navmaps}) && ($direction eq 'navlaunch')) { + &navlaunch($r); + return OK; + } else { &Apache::loncommon::content_type($r,'text/html'); $r->header_out(Location => &Apache::lonnet::absolute_url().$newloc); return REDIRECT; + } } $currenturl=~s/^https?\:\/\///; $currenturl=~s/^[^\/]+//; @@ -327,11 +353,16 @@ sub handler { if ($last) { $currenturl=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($last))[2]); } else { + if ($direction eq 'return') { &Apache::loncommon::content_type($r,'text/html'); $r->header_out(Location => &Apache::lonnet::absolute_url(). '/adm/noidea.html'); return REDIRECT; + } else { + &navlaunch($r); + return OK; + } } } # ------------------------------------------- Do we have any idea where we are? @@ -419,6 +450,11 @@ sub handler { &Apache::lonnet::appenv({'user.criticalcheck.time'=>time}); } + if (($redirecturl =~ m{^/adm/navmaps}) && + ($env{'environment.remotenavmap'} eq 'on')) { + &navlaunch($r); + return OK; + } &Apache::loncommon::content_type($r,'text/html'); my $url=&Apache::lonnet::absolute_url().$redirecturl; $url = &add_get_param($url, { 'symb' => $redirectsymb}); @@ -531,6 +567,8 @@ described at http://www.lon-capa.org. =item get_next_possible_move() +=item navlaunch() + =item first_accessible_resource() =item handler()