--- rat/lonwrapper.pm 2012/11/27 23:45:15 1.42 +++ rat/lonwrapper.pm 2013/09/07 19:58:08 1.44 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Wrapper for external and binary files as standalone resources # -# $Id: lonwrapper.pm,v 1.42 2012/11/27 23:45:15 raeburn Exp $ +# $Id: lonwrapper.pm,v 1.44 2013/09/07 19:58:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,7 +40,7 @@ use Apache::lonextresedit(); # ================================================================ Main Handler sub wrapper { - my ($url,$brcrum) = @_; + my ($url,$brcrum,$absolute) = @_; my $forcereg; unless ($env{'form.folderpath'}) { @@ -54,6 +54,9 @@ sub wrapper { if (ref($brcrum) eq 'ARRAY') { $args->{'bread_crumbs'} = $brcrum; } + if ($absolute) { + $args->{'use_absolute'} = $absolute; + } my $startpage = Apache::loncommon::start_page('Menu',undef,$args); my $endpage = Apache::loncommon::end_page(); @@ -103,7 +106,7 @@ sub handler { return OK if $r->header_only; my $url = $r->uri; - my ($is_ext,$brcrum); + my ($is_ext,$brcrum,$absolute); for ($url){ s|^/adm/wrapper||; @@ -113,6 +116,15 @@ sub handler { } if ($is_ext) { + my $hostname = $r->hostname(); + my $lonhost = &Apache::lonnet::host_from_dns($hostname); + if ($lonhost) { + my $actual = &Apache::lonnet::absolute_url($hostname); + my $expected = $Apache::lonnet::protocol{$lonhost}.'://'.$hostname; + unless ($actual eq $expected) { + $absolute = $expected; + } + } &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['forceedit','register','folderpath','symb','idx','title']); if (($env{'form.forceedit'}) && @@ -126,20 +138,12 @@ sub handler { return OK; } elsif ($env{'form.folderpath'} =~ /^supplemental/) { my $crstype = &Apache::loncommon::course_type(); - $brcrum = - &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$env{'form.title'},1); - if (ref($brcrum) eq 'ARRAY') { - my $last = $env{'form.title'}; - if ($last eq '') { - $last = &mt('External Resource'); - } - push(@{$brcrum}, - {'title' => $last, - 'text' => $last, - 'no_mt' => 1, - }); - + my $title = $env{'form.title'}; + if ($title eq '') { + $title = &mt('External Resource'); } + $brcrum = + &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); } } @@ -168,7 +172,7 @@ sub handler { # encrypt url if not external &Apache::lonenc::check_encrypt(\$url) if $url !~ /^https?\:/ ; - $r->print( wrapper($url,$brcrum) ); + $r->print( wrapper($url,$brcrum,$absolute) ); } # not just the menu