From d70f29eedcd3de7d26e91f1ec4b4bc3b5178a222 Mon Sep 17 00:00:00 2001 From: Matthew Wilson Date: Mon, 17 Oct 2005 16:13:51 +0000 Subject: [PATCH] [ 1290614 ] 6.7.4 Navigation Template Bug. Also I think this'll speed some things up. --- lib/WebGUI/Asset/Wobject/Navigation.pm | 29 +++++++++----------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index cb0263de3..0d17968af 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -340,6 +340,7 @@ sub view { my $currentLineage = $current->get("lineage"); my $lineageToSkip = "noskip"; my $absoluteDepthOfLastPage; + my %lastChildren; foreach my $asset (@{$assets}) { # skip pages we shouldn't see my $pageLineage = $asset->get("lineage"); @@ -419,31 +420,21 @@ sub view { $pageData->{'page.parent.menuTitle'} = $parent->getMenuTitle; $pageData->{'page.parent.title'} = $parent->getTitle; $pageData->{"page.parent.url"} = $parent->getUrl; - # these next two variables can be very inefficient, consider getting rid of them - my $parentsFirstChild = $parent->getFirstChild; - if (defined $parentsFirstChild) { - $pageData->{"page.isRankedFirst"} = ($asset->getId eq $parentsFirstChild->getId); - } - my $parentsLastChild = $parent->getLastChild; - if (defined $parentsLastChild) { - $pageData->{"page.isRankedLast"} = ($asset->getId eq $parentsLastChild->getId); - } + $pageData->{"page.isRankedFirst"} = 1 unless exists $lastChildren{$parent->getId}; + $lastChildren{$parent->getId} = $asset->getId; } push(@{$var->{page_loop}}, $pageData); } + my $counter; + for($counter=0 ; $counter < scalar( @{$var->{page_loop}} ) ; $counter++) { + @{$var->{page_loop}}[$counter]->{"page.isRankedLast"} = 1 if + ($lastChildren{@{$var->{page_loop}}[$counter]->{"page.parent.assetId"}} + eq @{$var->{page_loop}}[$counter]->{"page.assetId"}); + } + use Data::Dumper;WebGUI::ErrorHandler::warn(Dumper($var)); return $self->processTemplate($var,$self->get("templateId")); } - -#------------------------------------------------------------------- -#sub www_edit { -# my $self = shift; -# return WebGUI::Privilege::insufficient() unless $self->canEdit; -# $self->getAdminConsole->setHelp("navigation add/edit","Asset_Navigation"); -# return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get("22","Asset_Navigation")); -#} - - #------------------------------------------------------------------- sub www_goBackToPage { my $self = shift;