--- rat/lonambiguous.pm 2004/12/20 20:13:03 1.12
+++ 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.12 2004/12/20 20:13:03 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
@@ -149,9 +145,15 @@ 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',
+ 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)};
@@ -177,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);
@@ -185,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');