--- loncom/interface/lonnavmaps.pm 2004/12/07 22:58:05 1.307 +++ loncom/interface/lonnavmaps.pm 2004/12/12 21:06:36 1.308 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.307 2004/12/07 22:58:05 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.308 2004/12/12 21:06:36 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -435,7 +435,6 @@ sub removeFromFilter { # Convenience function: Given a stack returned from getStack on the iterator, # return the correct src() value. -# Later, this should add an anchor when we start putting anchors in pages. sub getLinkForResource { my $stack = shift; my $res; @@ -443,14 +442,18 @@ sub getLinkForResource { # Check to see if there are any pages in the stack foreach $res (@$stack) { if (defined($res)) { + my $anchor; if ($res->is_page()) { - return $res->link(); + foreach (@$stack) { if (defined($_)) { $anchor = $_; } } + $anchor=&Apache::lonnet::escape($anchor->shown_symb()); + return ($res->link(),$res->shown_symb(),$anchor); } # in case folder was skipped over as "only sequence" my ($map,$id,$src)=&Apache::lonnet::decode_symb($res->symb()); if ($map=~/\.page$/) { - return &Apache::lonnet::clutter($map).'#'. - &Apache::lonnet::escape(&Apache::lonnet::declutter($src)); + my $url=&Apache::lonnet::clutter($map); + $anchor=&Apache::lonnet::escape($src->shown_symb()); + return ($url,$res->shown_symb(),$anchor); } } } @@ -463,7 +466,7 @@ sub getLinkForResource { if (defined($_)) { $res = $_; } } - return $res->link(); + return ($res->link(),$res->shown_symb()); } # Convenience function: This separates the logic of how to create @@ -1857,22 +1860,19 @@ END # Set up some data about the parts that the cols might want my $filter = $it->{FILTER}; - my $src; + my ($src,$symb,$anchor); if ($args->{'sort'}) { $src = $curRes->src(); # FIXME this is wrong for .pages + $symb = $curRes->symb(); # FIXME this is wrong for .pages } else { my $stack = $it->getStack(); - $src=getLinkForResource($stack); - } - my $anchor=''; - if ($src=~s/(\#.*)$//) { - $anchor=$1; + ($src,$symb,$anchor)=getLinkForResource($stack); } + if (defined($anchor)) { $anchor='#'.$anchor; } my $srcHasQuestion = $src =~ /\?/; $args->{"resourceLink"} = $src. ($srcHasQuestion?'&':'?') . - 'symb=' . &Apache::lonnet::escape($curRes->shown_symb()). - $anchor; + 'symb=' . &Apache::lonnet::escape($symb).$anchor; # Now, display each column. foreach my $col (@$cols) {