version 1.67, 2006/03/19 23:06:00
|
version 1.70, 2006/08/18 20:24:53
|
Line 30
|
Line 30
|
package Apache::lonpageflip; |
package Apache::lonpageflip; |
|
|
use strict; |
use strict; |
|
use LONCAPA; |
use Apache::Constants qw(:common :http REDIRECT); |
use Apache::Constants qw(:common :http REDIRECT); |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::loncommon(); |
use HTML::TokeParser; |
use HTML::TokeParser; |
use GDBM_File; |
use GDBM_File; |
|
|
Line 84 sub hash_src {
|
Line 86 sub hash_src {
|
return ($hash{'src_'.$id},$symb); |
return ($hash{'src_'.$id},$symb); |
} |
} |
|
|
# Inputs are a url, adn a hash ref of |
|
# form name => value pairs |
|
# takes care of properly adding the form name elements and values to the |
|
# the url doing proper escaping of the values and joining with ? or & as |
|
# needed |
|
|
|
sub add_get_param { |
|
my ($url,$form_data) = @_; |
|
my $needs_question_mark = ($url !~ /\?/); |
|
|
|
while (my ($name,$value) = each(%$form_data)) { |
|
if ($needs_question_mark) { |
|
$url.='?'; |
|
$needs_question_mark = 0; |
|
} else { |
|
$url.='&'; |
|
} |
|
$url.=$name.'='.&Apache::lonnet::escape($form_data->{$name}); |
|
} |
|
return $url; |
|
} |
|
|
|
sub move { |
sub move { |
my ($rid,$mapurl,$direction)=@_; |
my ($rid,$mapurl,$direction)=@_; |
my $startoutrid=$rid; |
my $startoutrid=$rid; |
Line 221 sub navlaunch {
|
Line 201 sub navlaunch {
|
ENDNAV |
ENDNAV |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
|
sub first_accessible_resource { |
|
my $furl; |
|
if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
|
&GDBM_READER(),0640)) { |
|
$furl=$hash{'first_url'}; |
|
if (!&Apache::lonnet::allowed('bre',$furl)) { |
|
# 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 |
|
my ($newresid,$newmapid)=split(/\./,$newrid); |
|
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
|
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
|
if ($hash{'encrypted_'.$newrid}) { |
|
$furl=&Apache::lonenc::encrypted($furl); |
|
} |
|
} |
|
untie(%hash); |
|
return $furl; |
|
} else { |
|
return '/adm/navmaps'; |
|
} |
|
} |
|
|
# ================================================================ Main Handler |
# ================================================================ Main Handler |
|
|
sub handler { |
sub handler { |
Line 250 sub handler {
|
Line 254 sub handler {
|
} |
} |
$currenturl=~s/\.\d+\.(\w+)$/\.$1/; |
$currenturl=~s/\.\d+\.(\w+)$/\.$1/; |
if ($direction eq 'firstres') { |
if ($direction eq 'firstres') { |
my $furl; |
my $furl=&first_accessible_resource(); |
if (tie(my %bighash,'GDBM_File',$env{'request.course.fn'}.'.db', |
|
&GDBM_READER(),0640)) { |
|
$furl=$bighash{'first_url'}; |
|
untie(%bighash); |
|
} |
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->header_out(Location => |
$r->header_out(Location => |
'http://'.$ENV{'HTTP_HOST'}.$furl); |
&Apache::loncommon::absolute_url().$furl); |
|
|
return REDIRECT; |
return REDIRECT; |
} |
} |
Line 292 sub handler {
|
Line 291 sub handler {
|
} else { |
} else { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->header_out(Location => |
$r->header_out(Location => |
'http://'.$ENV{'HTTP_HOST'}.$newloc); |
&Apache::loncommon::absolute_url().$newloc); |
|
|
return REDIRECT; |
return REDIRECT; |
} |
} |
Line 315 sub handler {
|
Line 314 sub handler {
|
if ($direction eq 'return') { |
if ($direction eq 'return') { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->header_out(Location => |
$r->header_out(Location => |
'http://'.$ENV{'HTTP_HOST'}.'/adm/noidea.html'); |
&Apache::loncommon::absolute_url(). |
|
'/adm/noidea.html'); |
return REDIRECT; |
return REDIRECT; |
} else { |
} else { |
&navlaunch($r); |
&navlaunch($r); |
Line 417 sub handler {
|
Line 417 sub handler {
|
} |
} |
|
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
my $url='http://'.$ENV{'HTTP_HOST'}.$redirecturl; |
my $url=&Apache::loncommon::absolute_url().$redirecturl; |
$url = &add_get_param($url, { 'symb' => $redirectsymb}); |
$url = &add_get_param($url, { 'symb' => $redirectsymb}); |
$r->header_out(Location => $url); |
$r->header_out(Location => $url); |
return REDIRECT; |
return REDIRECT; |