--- loncom/interface/lonnavmaps.pm 2017/07/10 13:01:39 1.532 +++ loncom/interface/lonnavmaps.pm 2017/08/21 21:29:56 1.533 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.532 2017/07/10 13:01:39 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.533 2017/08/21 21:29:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1007,9 +1007,12 @@ sub render_resource { # Don't allow users to manipulate folder $icon = "navmap.$folderType." . ($nowOpen ? 'closed' : 'open') . '.gif'; $icon = ""."\"".($nowOpen"; - - $linkopen = ""; - $linkclose = ""; + if ($params->{'caller'} eq 'sequence') { + $linkopen = ""; + } else { + $linkopen = ""; + $linkclose = ""; + } } if (((&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) || (&Apache::lonnet::allowed('cev',$env{'request.course.id'}))) && @@ -1372,10 +1375,11 @@ sub render { my $currenturl = $env{'form.postdata'}; #$currenturl=~s/^http\:\/\///; #$currenturl=~s/^[^\/]+//; - - $here = $jump = &Apache::lonnet::symbread($currenturl); + unless ($args->{'caller'} eq 'sequence') { + $here = $jump = &Apache::lonnet::symbread($currenturl); + } } - if ($here eq '') { + if (($here eq '') && ($args->{'caller'} ne 'sequence')) { my $last; if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db', &GDBM_READER(),0640)) { @@ -1866,9 +1870,13 @@ END } } if (defined($anchor)) { $anchor='#'.$anchor; } - $args->{"resourceLink"} = $src. - ($srcHasQuestion?'&':'?') . - 'symb=' . &escape($symb).$anchor; + if (($args->{'caller'} eq 'sequence') && ($curRes->is_map())) { + $args->{"resourceLink"} = $src.($srcHasQuestion?'&':'?') .'navmap=1'; + } else { + $args->{"resourceLink"} = $src. + ($srcHasQuestion?'&':'?') . + 'symb=' . &escape($symb).$anchor; + } } # Now, we've decided what parts to show. Loop through them and # show them. @@ -2873,6 +2881,42 @@ sub recurseup_maps { return @recurseup; } +sub recursed_crumbs { + my ($self,$mapurl) = @_; + my (@revmapinfo,@revmapres); + my $mapres = $self->getResourceByUrl($mapurl); + if (ref($mapres)) { + @revmapres = map { $self->getByMapPc($_); } split(/,/,$mapres->map_hierarchy()); + shift(@revmapres); + push(@revmapres,$mapres); + } + my %toplevel; + foreach my $map (@revmapres) { + my $pc = $map->map_pc(); + next if ((!$pc) || ($pc == 1)); + my $func = sub { return ($_[0]->src() ne $map->src); }; + my @resources = $self->retrieveResources($map->src,$func,0); + my $count = 0; + my $notmap = 0; + foreach my $res (@resources) { + next unless (ref($res)); + my $symb = $res->symb(); + unless ($toplevel{$symb}) { + $toplevel{$symb} = $res->src; + $count ++; + unless ($res->is_map()) { + $notmap ++; + } + } + } + if (($count > 1) || ($count && $notmap)) { + push(@revmapinfo,{'href' => $map->link().'?navmap=1','text' => $map->title(),'no_mt' => 1,}); + } + } + return @revmapinfo; +} + + # # Determines the open/close dates for printing a map that # encloses a resource.