version 1.88, 2002/10/28 19:10:35
|
version 1.89, 2002/10/28 20:48:29
|
Line 995 sub new_handle {
|
Line 995 sub new_handle {
|
my $isNewBranch = 0; |
my $isNewBranch = 0; |
my $now = time(); |
my $now = time(); |
my $in24Hours = $now + 24 * 60 * 60; |
my $in24Hours = $now + 24 * 60 * 60; |
my $depth = 1; |
|
my $displayedHereMarker = 0; |
my $displayedHereMarker = 0; |
|
|
# We know the first thing is a BEGIN_MAP (see "$self->{STARTED}" |
# We know the first thing is a BEGIN_MAP (see "$self->{STARTED}" |
# code in iterator->next), so ignore the first one |
# code in iterator->next), so ignore the first one |
my $mapIterator = $navmap->getIterator(undef, undef, \%filterHash, |
$mapIterator = $navmap->getIterator(undef, undef, \%filterHash, |
$condition); |
$condition); |
$mapIterator->next(); |
$mapIterator->next(); |
my $curRes = $mapIterator->next(); |
$curRes = $mapIterator->next(); |
my $deltadepth = 0; |
my $deltadepth = 0; |
|
|
my @backgroundColors = ("#FFFFFF", "#F6F6F6"); |
my @backgroundColors = ("#FFFFFF", "#F6F6F6"); |
Line 1739 sub courseMapDefined {
|
Line 1738 sub courseMapDefined {
|
sub getIterator { |
sub getIterator { |
my $self = shift; |
my $self = shift; |
my $iterator = Apache::lonnavmaps::iterator->new($self, shift, shift, |
my $iterator = Apache::lonnavmaps::iterator->new($self, shift, shift, |
shift, undef, shift); |
shift, undef, shift, |
|
$ENV{'form.direction'}); |
return $iterator; |
return $iterator; |
} |
} |
|
|
Line 1963 getIterator behaves as follows:
|
Line 1963 getIterator behaves as follows:
|
|
|
=over 4 |
=over 4 |
|
|
=item B<getIterator>(firstResource, finishResource, filterHash, condition): All parameters are optional. firstResource is a resource reference corresponding to where the iterator should start. It defaults to navmap->firstResource() for the corresponding nav map. finishResource corresponds to where you want the iterator to end, defaulting to navmap->finishResource(). filterHash is a hash used as a set containing strings representing the resource IDs, defaulting to empty. Condition is a 1 or 0 that sets what to do with the filter hash: If a 0, then only resource that exist IN the filterHash will be recursed on. If it is a 1, only resources NOT in the filterHash will be recursed on. Defaults to 0, which is to say, do not recurse unless explicitly asked to. |
=item B<getIterator>(firstResource, finishResource, filterHash, condition, direction): All parameters are optional. firstResource is a resource reference corresponding to where the iterator should start. It defaults to navmap->firstResource() for the corresponding nav map. finishResource corresponds to where you want the iterator to end, defaulting to navmap->finishResource(). filterHash is a hash used as a set containing strings representing the resource IDs, defaulting to empty. Condition is a 1 or 0 that sets what to do with the filter hash: If a 0, then only resource that exist IN the filterHash will be recursed on. If it is a 1, only resources NOT in the filterHash will be recursed on. Defaults to 0, which is to say, do not recurse unless explicitly asked to. Direction specifies which direction to recurse, either FORWARD or BACKWARD, with FORWARD being default. |
|
|
Thus, by default, all resources will be shown. Change the condition to a 1 without changing the hash, and only the top level of the map will be shown. Changing the condition to 1 and including some values in the hash will allow you to selectively examine parts of the navmap, while leaving it on 0 and adding things to the hash will allow you to selectively ignore parts of the nav map. See the handler code for examples: By default, the condition is 0 and all folders are closed unless explicitly opened. Clicking "Show All Resources" will use a condition of 1 and an empty filterHash, resulting in all resources being shown. |
Thus, by default, all resources will be shown. Change the condition to a 1 without changing the hash, and only the top level of the map will be shown. Changing the condition to 1 and including some values in the hash will allow you to selectively examine parts of the navmap, while leaving it on 0 and adding things to the hash will allow you to selectively ignore parts of the nav map. See the handler code for examples: By default, the condition is 0 and all folders are closed unless explicitly opened. Clicking "Show All Resources" will use a condition of 1 and an empty filterHash, resulting in all resources being shown. |
|
|
Line 1993 sub BEGIN_MAP { return 1; } # beginin
|
Line 1993 sub BEGIN_MAP { return 1; } # beginin
|
sub END_MAP { return 2; } # end of the map |
sub END_MAP { return 2; } # end of the map |
sub BEGIN_BRANCH { return 3; } # beginning of a branch |
sub BEGIN_BRANCH { return 3; } # beginning of a branch |
sub END_BRANCH { return 4; } # end of a branch |
sub END_BRANCH { return 4; } # end of a branch |
|
sub FORWARD { return 1; } # go forward |
|
sub BACKWARD { return 2; } |
|
|
# Params: nav map, start resource, end resource, filter, condition, |
# Params: nav map, start resource, end resource, filter, condition, |
# already seen hash ref |
# already seen hash ref |
Line 2023 sub new {
|
Line 2025 sub new {
|
$self->{ALREADY_SEEN} = shift; |
$self->{ALREADY_SEEN} = shift; |
if (!defined($self->{ALREADY_SEEN})) { $self->{ALREADY_SEEN} = {} }; |
if (!defined($self->{ALREADY_SEEN})) { $self->{ALREADY_SEEN} = {} }; |
$self->{CONDITION} = shift; |
$self->{CONDITION} = shift; |
|
$self->{DIRECTION} = shift || FORWARD(); |
|
|
# Flag: Have we started yet? If not, the first action is to return BEGIN_MAP. |
# Flag: Have we started yet? If not, the first action is to return BEGIN_MAP. |
$self->{STARTED} = 0; |
$self->{STARTED} = 0; |
Line 2047 sub new {
|
Line 2050 sub new {
|
$self->{FORCE_NEXT} = undef; |
$self->{FORCE_NEXT} = undef; |
|
|
# Start with the first resource |
# Start with the first resource |
push @{$self->{BRANCH_STACK}}, $self->{FIRST_RESOURCE}; |
if ($self->{DIRECTION} == FORWARD) { |
|
push @{$self->{BRANCH_STACK}}, $self->{FIRST_RESOURCE}; |
|
} else { |
|
push @{$self->{BRANCH_STACK}), $self->{FINISH_RESOURCE}; |
|
} |
$self->{BRANCH_STACK_SIZE} = 1; |
$self->{BRANCH_STACK_SIZE} = 1; |
|
|
bless($self); |
bless($self); |
Line 2144 sub next {
|
Line 2151 sub next {
|
$self->{ALREADY_SEEN}->{$self->{HERE}->{ID}} = 1; |
$self->{ALREADY_SEEN}->{$self->{HERE}->{ID}} = 1; |
|
|
# Get the next possible resources |
# Get the next possible resources |
my $nextUnfiltered = $self->{HERE}->getNext(); |
if ($self->{DIRECTION} == FORWARD()) { |
|
my $nextUnfiltered = $self->{HERE}->getNext(); |
|
} else { |
|
my $nextUnfiltered = $self->{HERE}->getPrevious(); |
|
} |
my $next = []; |
my $next = []; |
|
|
# filter the next possibilities to remove things we've |
# filter the next possibilities to remove things we've |