--- loncom/interface/lonnavmaps.pm 2004/11/02 21:02:01 1.302
+++ loncom/interface/lonnavmaps.pm 2004/12/07 22:58:05 1.307
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.302 2004/11/02 21:02:01 albertel Exp $
+# $Id: lonnavmaps.pm,v 1.307 2004/12/07 22:58:05 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,7 +33,9 @@ use strict;
use Apache::Constants qw(:common :http);
use Apache::loncommon();
use Apache::lonmenu();
+use Apache::lonenc();
use Apache::lonlocal;
+use Apache::lonnet;
use POSIX qw (floor strftime);
use Data::Dumper; # for debugging, not always
@@ -375,7 +377,7 @@ ENDSUBM
-
+
");
@@ -442,7 +444,7 @@ sub getLinkForResource {
foreach $res (@$stack) {
if (defined($res)) {
if ($res->is_page()) {
- return $res->src();
+ return $res->link();
}
# in case folder was skipped over as "only sequence"
my ($map,$id,$src)=&Apache::lonnet::decode_symb($res->symb());
@@ -461,7 +463,7 @@ sub getLinkForResource {
if (defined($_)) { $res = $_; }
}
- return $res->src();
+ return $res->link();
}
# Convenience function: This separates the logic of how to create
@@ -1009,6 +1011,15 @@ sub render_resource {
my $nonLinkedText = ''; # stuff after resource title not in link
my $link = $params->{"resourceLink"};
+
+ # The URL part is not escaped at this point, but the symb is...
+ # The stuff to the left of the ? must have ' replaced by \' since
+ # it will be quoted with ' in the href.
+
+ my ($left,$right) = split(/\?/, $link);
+ $left =~ s/'/\\'/g;
+ $link = $left.'?'.$right;
+
my $src = $resource->src();
my $it = $params->{"iterator"};
my $filter = $it->{FILTER};
@@ -1024,7 +1035,11 @@ sub render_resource {
}
# links to open and close the folder
+
+
my $linkopen = "";
+
+
my $linkclose = "";
# Default icon: unknown page
@@ -1065,6 +1080,7 @@ sub render_resource {
'&jump=' .
&Apache::lonnet::escape($resource->symb()) .
"&folderManip=1'>";
+
} else {
# Don't allow users to manipulate folder
$icon = "navmap.$folderType." . ($nowOpen ? 'closed' : 'open') .
@@ -1092,6 +1108,7 @@ sub render_resource {
}
# Decide what to display
+
$result .= "$newBranchText$linkopen$icon$linkclose";
my $curMarkerBegin = '';
@@ -1400,7 +1417,7 @@ sub render {
# Determine where the "here" marker is and where the screen jumps to.
if ($ENV{'form.postsymb'}) {
- $here = $jump = $ENV{'form.postsymb'};
+ $here = $jump = &Apache::lonnet::symbclean($ENV{'form.postsymb'});
} elsif ($ENV{'form.postdata'}) {
# couldn't find a symb, is there a URL?
my $currenturl = $ENV{'form.postdata'};
@@ -1854,7 +1871,7 @@ END
my $srcHasQuestion = $src =~ /\?/;
$args->{"resourceLink"} = $src.
($srcHasQuestion?'&':'?') .
- 'symb=' . &Apache::lonnet::escape($curRes->symb()).
+ 'symb=' . &Apache::lonnet::escape($curRes->shown_symb()).
$anchor;
# Now, display each column.
@@ -3446,6 +3463,7 @@ Returns the title of the resource.
# These info functions can be used directly, as they don't return
# resource information.
sub comesfrom { my $self=shift; return $self->navHash("comesfrom_", 1); }
+sub encrypted { my $self=shift; return $self->navHash("encrypted_", 1); }
sub ext { my $self=shift; return $self->navHash("ext_", 1) eq 'true:'; }
sub from { my $self=shift; return $self->navHash("from_", 1); }
# considered private and undocumented
@@ -3457,10 +3475,20 @@ sub randompick {
return $self->{NAV_MAP}->{PARM_HASH}->{$self->symb .
'.0.parameter_randompick'};
}
+sub link {
+ my $self=shift;
+ if ($self->encrypted()) { return &Apache::lonenc::encrypted($self->src); }
+ return $self->src;
+}
sub src {
my $self=shift;
return $self->navHash("src_", 1);
}
+sub shown_symb {
+ my $self=shift;
+ if ($self->encrypted()) {return &Apache::lonenc::encrypted($self->symb());}
+ return $self->symb();
+}
sub symb {
my $self=shift;
(my $first, my $second) = $self->{ID} =~ /(\d+).(\d+)/;