diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 333a16e8c..813a4bede 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1849,7 +1849,9 @@ Returns the view() method of the asset object if the requestor canView. sub www_view { my $self = shift; return $self->session->privilege->noAccess() unless $self->canView; - return $self->view; + $self->prepareView; + $self->session->output->print($self->view); + return undef; } diff --git a/lib/WebGUI/Asset/Wobject.pm b/lib/WebGUI/Asset/Wobject.pm index 727fcce4c..ae09a5b89 100644 --- a/lib/WebGUI/Asset/Wobject.pm +++ b/lib/WebGUI/Asset/Wobject.pm @@ -393,23 +393,6 @@ sub moveCollateralUp { $self->session->db->commit; } -#------------------------------------------------------------------- - -=head2 prepareView ( ) - -See WebGUI::Asset::prepareView() for details. - -=cut - -sub p1repareView { - my $self = shift; - $self->SUPER::prepareView(); - my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); - $template->prepare; - $self->{_viewTemplate} = $template; -} - - #------------------------------------------------------------------- sub processPropertiesFromFormPost { my $self = shift; @@ -614,7 +597,7 @@ sub www_view { my $style = $self->processStyle("~~~"); my ($head, $foot) = split("~~~",$style); $self->session->output->print($head); - $self->view; + $self->session->output->print($self->view); $self->session->output->print($foot); } diff --git a/lib/WebGUI/Asset/Wobject/Dashboard.pm b/lib/WebGUI/Asset/Wobject/Dashboard.pm index 0af9ab9a9..00f408204 100644 --- a/lib/WebGUI/Asset/Wobject/Dashboard.pm +++ b/lib/WebGUI/Asset/Wobject/Dashboard.pm @@ -156,6 +156,23 @@ sub isManaging { return 0; } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub processPropertiesFromFormPost { my $self = shift; diff --git a/lib/WebGUI/Asset/Wobject/EventsCalendar.pm b/lib/WebGUI/Asset/Wobject/EventsCalendar.pm index 05365bc83..1ecae038a 100644 --- a/lib/WebGUI/Asset/Wobject/EventsCalendar.pm +++ b/lib/WebGUI/Asset/Wobject/EventsCalendar.pm @@ -181,6 +181,23 @@ sub getEditForm { +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub view { my $self = shift; @@ -451,7 +468,7 @@ sub view { '; #use Data::Dumper; return '
'.Dumper(\%var).''; my $vars = \%var; - return $self->processTemplate($vars,$self->get("templateId")); + return $self->processTemplate($vars,undef,$self->{_viewTemplate}); } diff --git a/lib/WebGUI/Asset/Wobject/Folder.pm b/lib/WebGUI/Asset/Wobject/Folder.pm index b01b3173d..89095614e 100644 --- a/lib/WebGUI/Asset/Wobject/Folder.pm +++ b/lib/WebGUI/Asset/Wobject/Folder.pm @@ -107,6 +107,23 @@ sub getEditForm { } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub view { my $self = shift; @@ -145,7 +162,7 @@ sub view { }); } } - return $self->processTemplate(\%vars,$self->get("templateId")); + return $self->processTemplate(\%vars,undef,$self->{_viewTemplate}); } diff --git a/lib/WebGUI/Asset/Wobject/HttpProxy.pm b/lib/WebGUI/Asset/Wobject/HttpProxy.pm index d73b2d156..41708c148 100644 --- a/lib/WebGUI/Asset/Wobject/HttpProxy.pm +++ b/lib/WebGUI/Asset/Wobject/HttpProxy.pm @@ -172,6 +172,23 @@ sub getEditForm { } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub purge { my $self = shift; @@ -336,7 +353,7 @@ sub view { $self->session->http->setMimeType($var{header}); return $var{content}; } else { - return $self->processTemplate(\%var,$self->get("templateId")); + return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } } diff --git a/lib/WebGUI/Asset/Wobject/InOutBoard.pm b/lib/WebGUI/Asset/Wobject/InOutBoard.pm index 0b41415f4..9e08ddb0e 100644 --- a/lib/WebGUI/Asset/Wobject/InOutBoard.pm +++ b/lib/WebGUI/Asset/Wobject/InOutBoard.pm @@ -141,6 +141,23 @@ sub getEditForm { } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->getValue("inOutTemplateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub view { my $self = shift; @@ -264,7 +281,7 @@ order by department, lastName, firstName"; $var{'paginateBar'} = $p->getBarTraditional(); $p->appendTemplateVars(\%var); - return $self->processTemplate(\%var,$self->getValue("inOutTemplateId")); + return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/Layout.pm b/lib/WebGUI/Asset/Wobject/Layout.pm index 9d9e2c6f1..fdc5525b8 100644 --- a/lib/WebGUI/Asset/Wobject/Layout.pm +++ b/lib/WebGUI/Asset/Wobject/Layout.pm @@ -229,17 +229,29 @@ sub view { my $showPerformance = $self->session->errorHandler->canShowPerformanceIndicators(); my $out = $self->processTemplate($self->{_viewVars},undef,$self->{_viewTemplate}); my @parts = split("~~~",$self->processTemplate($self->{_viewVars},undef,$self->{_viewTemplate})); + my $output = ""; foreach my $part (@parts) { - $self->session->output->print($part); + if ($self->{_viewPrintOverride}) { + $self->session->output->print($part); + } else { + $output .= $part; + } my $asset = shift @{$self->{_viewPlaceholders}}; if (defined $asset) { my $t = [Time::HiRes::gettimeofday()] if ($showPerformance); - $self->session->output->print($asset->view); - $self->session->output->print("Asset:".Time::HiRes::tv_interval($t)) if ($showPerformance); + my $assetOutput = $asset->view; + $assetOutput .= "Asset:".Time::HiRes::tv_interval($t) if ($showPerformance); + if ($self->{_viewPrintOverride}) { + $self->session->output->print($assetOutput); + } else { + $output .= $assetOutput; + } } } + return $output; } +#------------------------------------------------------------------- sub www_setContentPositions { my $self = shift; return $self->session->privilege->insufficient() unless ($self->canEdit); @@ -249,5 +261,12 @@ sub www_setContentPositions { return "Map set: ".$self->session->form->process("map"); } +#------------------------------------------------------------------- +sub www_view { + my $self = shift; + $self->{_viewPrintOverride} = 1; # we do this to make it output each easset as it goes, rather than waiting until the end + return $self->SUPER::www_view; +} + 1; diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm index c90efe9c1..6d57bac8b 100644 --- a/lib/WebGUI/Asset/Wobject/Matrix.pm +++ b/lib/WebGUI/Asset/Wobject/Matrix.pm @@ -163,6 +163,23 @@ sub incrementCounter { } } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub purge { my $self = shift; @@ -959,7 +976,7 @@ sub view { }); } $sth->finish; - return $self->processTemplate(\%var,$self->get("templateId")); + return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/MessageBoard.pm b/lib/WebGUI/Asset/Wobject/MessageBoard.pm index 37f58e59d..8f9dad0c7 100644 --- a/lib/WebGUI/Asset/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Asset/Wobject/MessageBoard.pm @@ -49,6 +49,23 @@ sub definition { } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub view { my $self = shift; @@ -106,7 +123,7 @@ sub view { $var{'lastpost.label'} = $i18n->get('lastpost'); $var{areMultipleForums} = ($count > 1); $var{forum_loop} = \@forum_loop; - return $self->processTemplate(\%var,$self->get("templateId")); + return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } 1; diff --git a/lib/WebGUI/Asset/Wobject/MultiSearch.pm b/lib/WebGUI/Asset/Wobject/MultiSearch.pm index 5427b8dbf..32110fd07 100644 --- a/lib/WebGUI/Asset/Wobject/MultiSearch.pm +++ b/lib/WebGUI/Asset/Wobject/MultiSearch.pm @@ -70,6 +70,23 @@ sub definition { return $class->SUPER::definition($session, $definition); } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- =head2 view ( ) @@ -80,13 +97,7 @@ to be displayed within the page style sub view { my $self = shift; - my %var = $self->get(); - #Set some template variables - - #Build list of searches as an array -# my $defaults = $self->getValue("predefinedSearches"); - - return $self->processTemplate(\%var, $self->get("templateId")); + return $self->processTemplate({}, undef, $self->{_viewTemplate}); } diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index 49a3dafd0..23e4c1eab 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -300,6 +300,23 @@ sub getToolbar { +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub view { my $self = shift; @@ -431,7 +448,7 @@ sub view { eq @{$var->{page_loop}}[$counter]->{"page.assetId"}); } #use Data::Dumper;$self->session->errorHandler->warn(Dumper($var)); - return $self->processTemplate($var,$self->get("templateId")); + return $self->processTemplate($var,undef,$self->{_viewTemplate}); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/Poll.pm b/lib/WebGUI/Asset/Wobject/Poll.pm index 1b5da6883..bba91c0be 100644 --- a/lib/WebGUI/Asset/Wobject/Poll.pm +++ b/lib/WebGUI/Asset/Wobject/Poll.pm @@ -257,6 +257,23 @@ sub indexContent { } +#------------------------------------------------------------------- + +=head2 prepareView ( ) + +See WebGUI::Asset::prepareView() for details. + +=cut + +sub prepareView { + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + $template->prepare; + $self->{_viewTemplate} = $template; +} + + #------------------------------------------------------------------- sub processPropertiesFromFormPost { my $self = shift; @@ -331,7 +348,7 @@ sub view { } randomizeArray(\@answers) if ($self->get("randomizeAnswers")); $var{answer_loop} = \@answers; - return $self->processTemplate(\%var,$self->get("templateId")); + return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Macro/AssetProxy.pm b/lib/WebGUI/Macro/AssetProxy.pm index 62db526d6..d1b1de47d 100644 --- a/lib/WebGUI/Macro/AssetProxy.pm +++ b/lib/WebGUI/Macro/AssetProxy.pm @@ -43,10 +43,14 @@ sub process { my $asset = WebGUI::Asset->newByUrl($session,$url); #Sorry, you cannot proxy the notfound page. if (defined $asset && $asset->getId ne $session->setting->get("notFoundPage")) { - $asset->toggleToolbar; - my $output = $asset->canView ? $asset->view : undef; - $output .= "AssetProxy:".Time::HiRes::tv_interval($t) if ($session->errorHandler->canShowPerformanceIndicators()); - return $output; + if ($asset->canView) { + $asset->toggleToolbar; + $asset->prepareView; + my $output = $asset->view; + $output .= "AssetProxy:".Time::HiRes::tv_interval($t) if ($session->errorHandler->canShowPerformanceIndicators()); + return $output; + } + return undef; } else { my $i18n = WebGUI::International->new($session, 'Macro_AssetProxy'); return $i18n->get('invalid url'); diff --git a/lib/WebGUI/Macro/RandomAssetProxy.pm b/lib/WebGUI/Macro/RandomAssetProxy.pm index bb794fb47..f11db6858 100644 --- a/lib/WebGUI/Macro/RandomAssetProxy.pm +++ b/lib/WebGUI/Macro/RandomAssetProxy.pm @@ -45,8 +45,12 @@ sub process { my $randomAssetId = $children->[rand(scalar(@{$children}))]; my $randomAsset = WebGUI::Asset->newByDynamicClass($session,$randomAssetId); if (defined $randomAsset) { - $randomAsset->toggleToolbar; - return $randomAsset->canView ? $randomAsset->view() : undef; + if ($randomAsset->canView) { + $randomAsset->toggleToolbar; + $randomAsset->prepareView; + return $randomAsset->view; + } + return undef; } else { return $i18n->get('childless'); }