--- rat/lonambiguous.pm 2004/12/20 20:13:52 1.13 +++ rat/lonambiguous.pm 2006/02/07 19:46:08 1.17 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to resolve ambiguous file locations # -# $Id: lonambiguous.pm,v 1.13 2004/12/20 20:13:52 albertel Exp $ +# $Id: lonambiguous.pm,v 1.17 2006/02/07 19:46:08 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; @@ -49,6 +44,7 @@ sub cleanup { &Apache::lonnet::logthis('Failed cleanup ambiguous: bighash'); } } + return OK; } # ----------------------------------------------------------- Could not resolve @@ -56,7 +52,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'. @@ -87,18 +83,18 @@ sub handler { # ---------------------------------------------------------- Is this selecting? - if ($ENV{'form.selecturl'}) { + if ($env{'form.selecturl'}) { my $envkey; - if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', + if (tie(%bighash,'GDBM_File',$env{'request.course.fn'}.'.db', &GDBM_READER(),0640)) { - foreach $envkey (keys %ENV) { + foreach $envkey (keys %env) { if ($envkey=~/^form\.(\d+)\.(\d+)$/) { # ---------------------------------------------------- Update symb and redirect my $mapid=$1; 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); @@ -115,7 +111,7 @@ sub handler { # ---------------------------------------------------------- Do we have a case? my $thisfn; - unless (($thisfn=$ENV{'request.ambiguous'})&&($ENV{'request.course.fn'})) { + unless (($thisfn=$env{'request.ambiguous'})&&($env{'request.course.fn'})) { &getlost($r,'Could not find information on resource.'); return OK; } @@ -126,7 +122,7 @@ sub handler { my %hash; my $syval=''; - if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'_symb.db', + if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db', &GDBM_READER(),0640)) { $syval=$hash{$thisfn}; untie(%hash); @@ -135,13 +131,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 @@ -150,14 +146,14 @@ sub handler { } } # ------------------------------------Encrypted requests go straight to navmaps - if ($ENV{'request.enc'}) { - $r->content_type('text/html'); + 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', + if (tie(%bighash,'GDBM_File',$env{'request.course.fn'}.'.db', &GDBM_READER(),0640)) { # ---------------------------------------------- Get ID(s) for current resource my $ids=$bighash{'ids_'.&Apache::lonnet::clutter($thisfn)}; @@ -183,7 +179,7 @@ sub handler { my $resurl=$bighash{'src_'.$id}; my $mapurl=$bighash{'map_id_'.(split(/\./,$id))[0]}; my $symb=&make_symb($id); - $r->content_type('text/html'); + &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); @@ -191,7 +187,7 @@ sub handler { } 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');