--- loncom/interface/lonnavmaps.pm 2003/03/08 21:16:38 1.155
+++ loncom/interface/lonnavmaps.pm 2003/03/13 19:57:10 1.158
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.155 2003/03/08 21:16:38 bowersj2 Exp $
+# $Id: lonnavmaps.pm,v 1.158 2003/03/13 19:57:10 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -158,6 +158,7 @@ sub real_handler {
$r->print("
Navigate Course Contents");
# ------------------------------------------------------------ Get query string
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register']);
+
# ----------------------------------------------------- Force menu registration
my $addentries='';
if ($ENV{'form.register'}) {
@@ -177,7 +178,6 @@ sub real_handler {
# Now that we've displayed some stuff to the user, init the navmap
$navmap->init();
-
$r->print('
');
$r->rflush();
@@ -361,6 +361,12 @@ sub lastTry {
}
# This puts a human-readable name on the ENV variable.
+# FIXME: This needs better logic: Who gets the advanced view of navmaps?
+# As of 3-13-03, it's an open question. Guy doesn't want to check
+# roles directly because it should be a check of capabilities for future
+# role compatibity. There is no capability that matches this one for
+# now, so this is done. (A hack for 1.0 might be to simply check roles
+# anyhow.)
sub advancedUser {
return $ENV{'user.adv'};
}
@@ -546,9 +552,7 @@ Most of these parameters are only useful
=item * B: A string identifying the URL to place the anchor 'curloc' at. Default to no anchor at all. It is the responsibility of the renderer user to ensure that the #curloc is in the URL. By default, determined through the use of the ENV{} 'jump' and 'jumpType' information.
-=item * B: A URL identifying where to place the 'here' marker. By default, will pull this from the ENV{'form.here*'} info.
-
-=item * B: A Symb identifying where to place the 'here' marker. Default same as hereURL.
+=item * B: A Symb identifying where to place the 'here' marker. Default empty, which means no marker.
=item * B: A string identifying the indentation string to use. By default, this is a 25 pixel whitespace image with no alt text.
@@ -620,7 +624,7 @@ sub render_resource {
my $icon = "
";
if ($resource->is_problem()) {
- if ($part eq "0" || $params->{'condensed'}) {
+ if ($part eq "" || $params->{'condensed'}) {
$icon = '
';
} else {
$icon = $params->{'indentString'};
@@ -683,16 +687,14 @@ sub render_resource {
my $curMarkerEnd = '';
# Is this the current resource?
- if (!$params->{'displayedHereMarker'} &&
- (($params->{'hereType'} == SYMB() &&
- $resource->symb() eq $params->{'here'}) ||
- ($params->{'hereType'} == URL() &&
- $resource->src() eq $params->{'here'}))) {
+ if (!$params->{'displayedHereMarker'} &&
+ $resource->symb() eq $params->{'here'} ) {
$curMarkerBegin = '> ';
$curMarkerEnd = '<';
+ $params->{'displayedHereMarker'} = 1;
}
- if ($resource->is_problem() && $part ne "0" &&
+ if ($resource->is_problem() && $part ne "" &&
!$params->{'condensed'}) {
$partLabel = " (Part $part)";
$title = "";
@@ -835,14 +837,12 @@ sub render {
$navmap = $args->{'navmap'};
}
+ my $r = $args->{'r'};
my $queryString = $args->{'queryString'};
my $jumpToURL = $args->{'jumpToURL'};
my $jumpToSymb = $args->{'jumpToSymb'};
my $jumpType;
- my $hereURL = $args->{'hereURL'};
- my $hereSymb = $args->{'hereSymb'};
- my $hereType;
- my $here;
+ my $here = $args->{'here'};
my $jump;
my $currentJumpIndex = setDefault($args->{'currentJumpIndex'}, 0);
my $suppressNavmap = setDefault($args->{'suppressNavmap'}, 0);
@@ -884,20 +884,16 @@ sub render {
# Preference: Symb
if ($ENV{'form.symb'}) {
- $hereType = $jumpType = SYMB();
$here = $jump = $ENV{'form.symb'};
} elsif ($ENV{'form.postdata'}) {
# couldn't find a symb, is there a URL?
my $currenturl = $ENV{'form.postdata'};
- $currenturl=~s/^http\:\/\///;
- $currenturl=~s/^[^\/]+//;
+ #$currenturl=~s/^http\:\/\///;
+ #$currenturl=~s/^[^\/]+//;
- $hereType = $jumpType = URL;
- $here = $jump = $currenturl;
- } else {
- # Nothing
- $hereType = $jumpType = NOTHING();
+ $here = $jump = &Apache::lonnet::symbread($currenturl);
}
+
# Step three: Ensure the folders are open
my $mapIterator = $navmap->getIterator(undef, undef, undef, 1);
my $depth = 1;
@@ -913,9 +909,7 @@ sub render {
if ($curRes == $mapIterator->BEGIN_MAP()) { $depth++; }
if ($curRes == $mapIterator->END_MAP()) { $depth--; }
- if (ref($curRes) &&
- ($hereType == SYMB() && $curRes->symb() eq $here) ||
- (ref($curRes) && $hereType == URL() && $curRes->src() eq $here)) {
+ if (ref($curRes) && $curRes->symb() eq $here) {
my $mapStack = $mapIterator->getStack();
# Ensure the parent maps are open
@@ -962,9 +956,7 @@ sub render {
if ( !defined($args->{'iterator'}) && $ENV{'form.folderManip'} ) { # we came from a user's manipulation of the nav page
# If this is a click on a folder or something, we want to preserve the "here"
# from the querystring, and get the new "jump" marker
- $hereType = $ENV{'form.hereType'};
$here = $ENV{'form.here'};
- $jumpType = $ENV{'form.jumpType'} || NOTHING();
$jump = $ENV{'form.jump'};
}
@@ -1000,7 +992,6 @@ sub render {
# keeps track of when the current resource is found,
# so we can back up a few and put the anchor above the
# current resource
- my $r = $args->{'r'};
my $printKey = $args->{'printKey'};
my $printCloseAll = $args->{'printCloseAll'};
if (!defined($printCloseAll)) { $printCloseAll = 1; }
@@ -1032,11 +1023,11 @@ sub render {
if ($printCloseAll) {
if ($condition) {
$result.="Close All Folders";
} else {
$result.="Open All Folders";
}
$result .= "
\n";
@@ -1077,7 +1068,6 @@ sub render {
# export "here" marker information
$args->{'here'} = $here;
- $args->{'hereType'} = $hereType;
while ($depth > 0) {
if ($curRes == $it->BEGIN_MAP()) { $depth++; }
@@ -1099,7 +1089,6 @@ sub render {
# If this isn't an actual resource, continue on
if (!ref($curRes)) {
- $curRes = $it->next();
next;
}
@@ -1107,14 +1096,12 @@ sub render {
# If this has been filtered out, continue on
if (!(&$filterFunc($curRes))) {
- $curRes = $it->next();
$args->{'isNewBranch'} = 0; # Don't falsely remember this
next;
}
# If we're suppressing navmaps and this is a navmap, continue on
if ($suppressNavmap && $curRes->src() =~ /^\/adm\/navmaps/) {
- $curRes = $it->next();
next;
}
@@ -1168,28 +1155,19 @@ sub render {
}
}
+ }
- } else {
- # Not showing parts
- @parts = ("0"); # show main part only
- }
-
# If the multipart problem was condensed, "forget" it was multipart
if (scalar(@parts) == 1) {
$args->{'multipart'} = 0;
}
- # In the event of a network error, display one part.
- # If this is a single part, we can at least show the correct
- # status, but if it's multipart, we're lost, since we can't
- # retreive the metadata to count the parts
- if ($curRes->{RESOURCE_ERROR}) {
- @parts = ("0");
- }
-
# Now, we've decided what parts to show. Loop through them and
# show them.
- foreach my $part (@parts) {
+ foreach my $part ('', @parts) {
+ if ($part eq '0') {
+ next;
+ }
$rownum ++;
my $backgroundColor = $backgroundColors[$rownum % scalar(@backgroundColors)];
@@ -1235,7 +1213,7 @@ sub render {
$result = "";
$r->rflush();
}
-
+ } continue {
$curRes = $it->next();
}
@@ -2756,11 +2734,6 @@ sub extractParts {
$self->{PARTS} = \@sortedParts;
}
- # Ensure part 0 is included at the beginning.
- if ($self->{PARTS}->[0] ne '0') {
- unshift @{$self->{PARTS}}, '0';
- }
-
return;
}