--- loncom/interface/lonnavmaps.pm 2003/03/13 17:10:25 1.157 +++ 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.157 2003/03/13 17:10:25 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. @@ -683,13 +687,11 @@ 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 "" && @@ -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++; }