--- loncom/interface/lonnavmaps.pm 2011/11/27 22:51:28 1.468 +++ loncom/interface/lonnavmaps.pm 2011/12/18 17:15:03 1.472 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.468 2011/11/27 22:51:28 www Exp $ +# $Id: lonnavmaps.pm,v 1.472 2011/12/18 17:15:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees @@ -225,7 +225,7 @@ automatically. =over 4 -=item * B: default: constructs one from %env +=item * B{'displayedHereMarker'} && $resource->symb() eq $params->{'here'} ) { - $curMarkerBegin = ''; - $curMarkerEnd = ''; + $curMarkerBegin = ''; + $curMarkerEnd = ''; $params->{'displayedHereMarker'} = 1; } @@ -1137,7 +1137,7 @@ sub render_long_status { } if ($resource->is_map()) { if (&Apache::lonnet::allowed('mdc')) { - if ($resource->symb=~/^uploaded/) { + if ($resource->symb=~/\_\_\_[^\_]+\_\_\_uploaded/) { $result.=" ". "".&mt("Edit Content").' '; } @@ -1397,6 +1397,7 @@ sub render { } } + # (re-)Locate the jump point, if any # Note this does not take filtering or hidden into account... need # to be fixed? @@ -1649,6 +1650,7 @@ END $curRes = shift(@resources); } else { $curRes = $it->next($closeAllPages); + } if (!$curRes) { last; } @@ -1995,7 +1997,7 @@ sub new { # assume there are course hashes for the specific requested user@domamin: # - if (($self->{USERNAME} eq $env{'user.name'}) && ($self->{DOMAIN} eq $env{'user.domain'})) { + if ( ($self->{USERNAME} eq $env{'user.name'}) && ($self->{DOMAIN} eq $env{'user.domain'})) { # tie the nav hash @@ -2020,7 +2022,9 @@ sub new { } else { $self->change_user($self->{USERNAME}, $self->{DOMAIN}); } - + + my $d = Data::Dumper->new([$self]); + return $self; } @@ -2055,6 +2059,8 @@ sub change_user { &Apache::lonmap::loadmap($cnum, $cdom, $self->{USERNAME}, $self->{DOMAIN}, \%big_hash); $self->{NAV_HASH} = \%big_hash; + + # Now clear the parm cache and reconstruct the parm hash fromt he big_hash # param.xxxx keys. @@ -2070,6 +2076,7 @@ sub change_user { } $self->{PARM_HASH} = \%parm_hash; + @@ -3062,12 +3069,15 @@ sub new { if ($resourceCount == 1 && $resource->is_sequence() && !$self->{FORCE_TOP}) { my $firstResource = $resource->map_start(); my $finishResource = $resource->map_finish(); - return - Apache::lonnavmaps::iterator->new($self->{NAV_MAP}, $firstResource, - $finishResource, $self->{FILTER}, - $self->{ALREADY_SEEN}, - $self->{CONDITION}, - $self->{FORCE_TOP}); + my $result; + my $rdump = Data::Dumper->new([$result]); + $result = Apache::lonnavmaps::iterator->new($self->{NAV_MAP}, $firstResource, + $finishResource, $self->{FILTER}, + $self->{ALREADY_SEEN}, + $self->{CONDITION}, + $self->{FORCE_TOP}); + return $result; + } @@ -3087,6 +3097,7 @@ sub new { $self->{ALREADY_SEEN}->{$self->{FIRST_RESOURCE}->{ID}} = 1; bless ($self); + my $selfDump = Data::Dumper->new([$self]); return $self; } @@ -3102,6 +3113,8 @@ sub next { # do so. if ($self->{RETURN_0} && !$self->{HAVE_RETURNED_0}) { $self->{HAVE_RETURNED_0} = 1; + my $nextTopLevel = $self->{NAV_MAP}->getById('0.0'); + return $self->{NAV_MAP}->getById('0.0'); } if ($self->{RETURN_0} && !$self->{HAVE_RETURNED_0_BEGIN_MAP}) { @@ -3121,13 +3134,13 @@ sub next { if ($self->{RECURSIVE_DEPTH} == 0) { $self->{RECURSIVE_ITERATOR_FLAG} = 0; } - return $next; } if (defined($self->{FORCE_NEXT})) { my $tmp = $self->{FORCE_NEXT}; $self->{FORCE_NEXT} = undef; + return $tmp; } @@ -3197,6 +3210,8 @@ sub next { # So we need to look at all the resources we can get to from here, # categorize them if we haven't seen them, remember if we have a new my $nextUnfiltered = $here->getNext(); + + my $maxDepthAdded = -1; for (@$nextUnfiltered) { @@ -3230,7 +3245,6 @@ sub next { $self->{RECURSIVE_ITERATOR_FLAG} = 1; my $firstResource = $self->{HERE}->map_start(); my $finishResource = $self->{HERE}->map_finish(); - $self->{RECURSIVE_ITERATOR} = Apache::lonnavmaps::iterator->new($self->{NAV_MAP}, $firstResource, $finishResource, $self->{FILTER}, @@ -3248,6 +3262,8 @@ sub next { return $self->next($closeAllPages); } + my $hereResource = $self->{HERE}; + return $self->{HERE}; } @@ -3414,6 +3430,7 @@ sub next { my $nextUnfiltered; if ($self->{DIRECTION} == FORWARD()) { $nextUnfiltered = $self->{HERE}->getNext(); + } else { $nextUnfiltered = $self->{HERE}->getPrevious(); } @@ -5101,6 +5118,7 @@ sub check_for_slot { my $ip = $slots{$slot_name}->{'ip'}; if ($self->simpleStatus() == OPEN) { my $startreserve = $slots{$slot_name}->{'startreserve'}; + my $endreserve = $slots{$slot_name}->{'endreserve'}; my @proctors; if ($slots{$slot_name}->{'proctor'} ne '') { @proctors = split(',',$slots{$slot_name}->{'proctor'}); @@ -5126,7 +5144,9 @@ sub check_for_slot { } } else { if ($start > $now) { - return (RESERVABLE,$startreserve,$slot_name); + if (!$endreserve || $endreserve > $now) { + return (RESERVABLE,$startreserve,$slot_name); + } } } }