--- rat/lonambiguous.pm 2004/12/17 22:40:24 1.11 +++ rat/lonambiguous.pm 2005/03/01 00:22:57 1.15 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to resolve ambiguous file locations # -# $Id: lonambiguous.pm,v 1.11 2004/12/17 22:40:24 albertel Exp $ +# $Id: lonambiguous.pm,v 1.15 2005/03/01 00:22:57 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,11 +25,6 @@ # # http://www.lon-capa.org/ # -# (TeX Content Handler -# -# 05/29/00,05/30,10/11 Gerd Kortemeyer) -# -# 10/11,10/12,10/16 Gerd Kortemeyer package Apache::lonambiguous; @@ -56,7 +51,7 @@ sub cleanup { sub getlost { my ($r,$errmsg)=@_; $errmsg=&mt($errmsg); - $r->content_type('text/html'); + &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; $r->print( 'Unknown Error'. @@ -98,7 +93,7 @@ sub handler { my $resid=$2; my $resurl=$bighash{'src_'.$mapid.'.'.$resid}; &Apache::lonnet::symblist($bighash{'map_id_'.$mapid}, - $resurl => $resid); + $resurl => [$resurl,$resid]); untie(%bighash); $r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.$resurl); @@ -135,13 +130,13 @@ sub handler { # ---------------------------------------------------------- There was an entry if ($syval) { - - if ($syval=~/\_$/) { + my ($page,undef,$res)=&Apache::lonnet::decode_symb($syval); + if ($res eq 'page') { # ----------------------------------- Okay, this should have appeared on a page - $syval=~s/\_\_\_$//; - $r->content_type('text/html'); + &Apache::loncommon::content_type($r,'text/html'); $r->header_out(Location => - 'http://'.$ENV{'HTTP_HOST'}.'/res/'.$syval); + 'http://'.$ENV{'HTTP_HOST'}. + &Apache::lonnet::clutter($page)); return REDIRECT; } else { # There is not really a problem (???), but cannot go back without endless loop @@ -149,7 +144,12 @@ sub handler { return OK; } } - +# ------------------------------------Encrypted requests go straight to navmaps + if ($ENV{'request.enc'}) { + &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.'/adm/navmaps'); + return REDIRECT; + } # ------------------------------------------------ Would be standalone resource if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', @@ -173,9 +173,20 @@ sub handler { } if ($couldbe) { @possibilities=split(/\,/,$couldbe); + if ($#possibilities==0) { + my $id=$possibilities[0]; + my $resurl=$bighash{'src_'.$id}; + my $mapurl=$bighash{'map_id_'.(split(/\./,$id))[0]}; + my $symb=&make_symb($id); + &Apache::loncommon::content_type($r,'text/html'); + &Apache::lonnet::logthis('http://'.$ENV{'HTTP_HOST'}.$resurl.'?symb='.$symb); + $r->header_out(Location => + 'http://'.$ENV{'HTTP_HOST'}.$resurl.'?symb='.$symb); + return REDIRECT; + } if ($#possibilities>0) { # ----------------------------------------------- Okay, really multiple choices - $r->content_type('text/html'); + &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; my $bodytag= &Apache::loncommon::bodytag('Pick Instance of Resource');