From 80dfb9ffd03b231f8fe3f98d56417fcaf83472f3 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Tue, 2 Jun 2009 19:34:18 +0000 Subject: [PATCH] Throw an exception in all wobjects if the main template (used by view) has been deleted. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/Article.pm | 25 ++++++++++++------- lib/WebGUI/Asset/Wobject/Calendar.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/Carousel.pm | 18 ++++++++----- lib/WebGUI/Asset/Wobject/Collaboration.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/DataForm.pm | 14 +++++++++++ lib/WebGUI/Asset/Wobject/DataTable.pm | 7 ++++++ .../Asset/Wobject/EventManagementSystem.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Folder.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Gallery.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/GalleryAlbum.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/HttpProxy.pm | 14 +++++++++++ lib/WebGUI/Asset/Wobject/InOutBoard.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Layout.pm | 9 ++++++- lib/WebGUI/Asset/Wobject/Map.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/Matrix.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/MessageBoard.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/MultiSearch.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Navigation.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Poll.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/ProjectManager.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/SQLReport.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Search.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Shelf.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/StockData.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/StoryArchive.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/StoryTopic.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/Survey.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/SyndicatedContent.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/Thingy.pm | 17 +++++++++---- lib/WebGUI/Asset/Wobject/TimeTracking.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/UserList.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/WeatherData.pm | 7 ++++++ lib/WebGUI/Asset/Wobject/WikiMaster.pm | 7 ++++++ lib/WebGUI/Content/Asset.pm | 5 +++- lib/WebGUI/Exception.pm | 5 ++++ 36 files changed, 350 insertions(+), 97 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index a1783f691..e51b751c8 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -12,6 +12,7 @@ - fixed #10453: Project Management System Broken in 7.7.8 - fixed Two sets of delete buttons for photos in the Story. - fixed #9920: Survey: cannot add questions in IE + - fixed #10449: Undefined template 7.7.8 - fixed: Basic Auth doesn't work if password contains colon (Arjan Widlak, diff --git a/lib/WebGUI/Asset/Wobject/Article.pm b/lib/WebGUI/Asset/Wobject/Article.pm index a266d4009..b74a6456b 100644 --- a/lib/WebGUI/Asset/Wobject/Article.pm +++ b/lib/WebGUI/Asset/Wobject/Article.pm @@ -224,15 +224,22 @@ See WebGUI::Asset::prepareView() for details. =cut sub prepareView { - my $self = shift; - $self->SUPER::prepareView(); - my $templateId = $self->get("templateId"); - if ($self->session->form->process("overrideTemplateId") ne "") { - $templateId = $self->session->form->process("overrideTemplateId"); - } - my $template = WebGUI::Asset::Template->new($self->session, $templateId); - $template->prepare($self->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $templateId = $self->get("templateId"); + if ($self->session->form->process("overrideTemplateId") ne "") { + $templateId = $self->session->form->process("overrideTemplateId"); + } + my $template = WebGUI::Asset::Template->new($self->session, $templateId); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/Calendar.pm b/lib/WebGUI/Asset/Wobject/Calendar.pm index b9a217a3a..0a0174b4f 100644 --- a/lib/WebGUI/Asset/Wobject/Calendar.pm +++ b/lib/WebGUI/Asset/Wobject/Calendar.pm @@ -903,6 +903,13 @@ sub prepareView { #$self->session->errorHandler->warn("Prepare view ".$view." with template ".$self->get("templateId".$view)); my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId".$view)); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId".$view), + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; diff --git a/lib/WebGUI/Asset/Wobject/Carousel.pm b/lib/WebGUI/Asset/Wobject/Carousel.pm index 01a5300d5..e14bc2c34 100644 --- a/lib/WebGUI/Asset/Wobject/Carousel.pm +++ b/lib/WebGUI/Asset/Wobject/Carousel.pm @@ -175,12 +175,18 @@ See WebGUI::Asset::prepareView() for details. =cut sub prepareView { - my $self = shift; - $self->SUPER::prepareView(); - #$self->session->errorHandler->warn('templateId: '.$self->get("parentId")); - my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); - $template->prepare; - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare; + $self->{_viewTemplate} = $template; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index b0fddaf10..56f04cef8 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -1177,11 +1177,18 @@ See WebGUI::Asset::prepareView() for details. =cut sub prepareView { - my $self = shift; - $self->next::method; - my $template = WebGUI::Asset::Template->new($self->session, $self->get("collaborationTemplateId")) or die "no good: ".$self->get("collaborationTemplateId"); - $template->prepare($self->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->next::method; + my $template = WebGUI::Asset::Template->new($self->session, $self->get("collaborationTemplateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("collaborationTemplateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/DataForm.pm b/lib/WebGUI/Asset/Wobject/DataForm.pm index f51b0de43..bbcab4f53 100644 --- a/lib/WebGUI/Asset/Wobject/DataForm.pm +++ b/lib/WebGUI/Asset/Wobject/DataForm.pm @@ -951,6 +951,13 @@ sub prepareViewList { my $self = shift; my $templateId = $self->get('listTemplateId'); my $template = WebGUI::Asset::Template->new($self->session, $templateId); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewListTemplate} = $template; } @@ -967,6 +974,13 @@ sub prepareViewForm { $self->session->style->setScript($self->session->url->extras('tabs/tabs.js'), {"type"=>"text/javascript"}); my $templateId = $self->get('templateId'); my $template = WebGUI::Asset::Template->new($self->session, $templateId); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewFormTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/DataTable.pm b/lib/WebGUI/Asset/Wobject/DataTable.pm index e8f25fd93..3d6b964f6 100644 --- a/lib/WebGUI/Asset/Wobject/DataTable.pm +++ b/lib/WebGUI/Asset/Wobject/DataTable.pm @@ -230,6 +230,13 @@ sub prepareView { # Prepare the template my $template = WebGUI::Asset::Template->new( $session, $self->get("templateId") ); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } $template->prepare; $self->{_template} = $template; diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 38cc95400..163857fc0 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -401,11 +401,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } #------------------------------------------------------------------ diff --git a/lib/WebGUI/Asset/Wobject/Folder.pm b/lib/WebGUI/Asset/Wobject/Folder.pm index 09f431e2f..21a50c3ea 100644 --- a/lib/WebGUI/Asset/Wobject/Folder.pm +++ b/lib/WebGUI/Asset/Wobject/Folder.pm @@ -183,11 +183,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Gallery.pm b/lib/WebGUI/Asset/Wobject/Gallery.pm index 2e625e58a..59d787a78 100644 --- a/lib/WebGUI/Asset/Wobject/Gallery.pm +++ b/lib/WebGUI/Asset/Wobject/Gallery.pm @@ -1001,6 +1001,13 @@ sub prepareViewListAlbums { my $self = shift; my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateIdListAlbums")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateIdListAlbums"), + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/GalleryAlbum.pm b/lib/WebGUI/Asset/Wobject/GalleryAlbum.pm index 78003e957..8413e2293 100644 --- a/lib/WebGUI/Asset/Wobject/GalleryAlbum.pm +++ b/lib/WebGUI/Asset/Wobject/GalleryAlbum.pm @@ -681,6 +681,13 @@ sub prepareView { my $template = WebGUI::Asset::Template->new($self->session, $templateId); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; diff --git a/lib/WebGUI/Asset/Wobject/HttpProxy.pm b/lib/WebGUI/Asset/Wobject/HttpProxy.pm index f7c41ab4c..10ce01e42 100644 --- a/lib/WebGUI/Asset/Wobject/HttpProxy.pm +++ b/lib/WebGUI/Asset/Wobject/HttpProxy.pm @@ -209,12 +209,26 @@ sub prepareView { my $self = shift; $self->SUPER::prepareView(); my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; } #------------------------------------------------------------------- + +=head2 purge + +Extend the base method to delete the cookie jar + +=cut + sub purge { my $self = shift; $self->getCookieJar->delete; diff --git a/lib/WebGUI/Asset/Wobject/InOutBoard.pm b/lib/WebGUI/Asset/Wobject/InOutBoard.pm index fffc08f88..6c7bed368 100644 --- a/lib/WebGUI/Asset/Wobject/InOutBoard.pm +++ b/lib/WebGUI/Asset/Wobject/InOutBoard.pm @@ -150,11 +150,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->getValue("inOutTemplateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->getValue("inOutTemplateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Layout.pm b/lib/WebGUI/Asset/Wobject/Layout.pm index 4cf90ca9b..01abab8be 100644 --- a/lib/WebGUI/Asset/Wobject/Layout.pm +++ b/lib/WebGUI/Asset/Wobject/Layout.pm @@ -194,6 +194,13 @@ sub prepareView { } my $template = WebGUI::Asset->new($session,$templateId,"WebGUI::Asset::Template"); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } $template->prepare( $self->getMetaDataAsTemplateVariables ); $self->{_viewTemplate} = $template; @@ -298,7 +305,7 @@ sub view { my $session = $self->session; my $showPerformance = $session->errorHandler->canShowPerformanceIndicators; my @parts = split $self->{_viewSplitter}, - $self->processTemplate($self->{_viewVars}, undef, $self->{_viewTemplate}); + $self->processTemplate($self->{_viewVars}, undef, $self->{_viewTemplate}); my $output = ""; if ($self->{_viewPrintOverride}) { diff --git a/lib/WebGUI/Asset/Wobject/Map.pm b/lib/WebGUI/Asset/Wobject/Map.pm index 12a66e1aa..fde4e185c 100644 --- a/lib/WebGUI/Asset/Wobject/Map.pm +++ b/lib/WebGUI/Asset/Wobject/Map.pm @@ -335,6 +335,13 @@ sub prepareView { my $self = shift; $self->SUPER::prepareView(); my $template = WebGUI::Asset::Template->new( $self->session, $self->get("templateIdView") ); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateIdView"), + assetId => $self->getId, + ); + } $template->prepare; $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm index d6bfb4832..bea6173a0 100644 --- a/lib/WebGUI/Asset/Wobject/Matrix.pm +++ b/lib/WebGUI/Asset/Wobject/Matrix.pm @@ -575,12 +575,19 @@ See WebGUI::Asset::prepareView() for details. =cut sub prepareView { - my $self = shift; + my $self = shift; - $self->SUPER::prepareView(); - my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); - $template->prepare; - $self->{_viewTemplate} = $template; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare; + $self->{_viewTemplate} = $template; return undef; } diff --git a/lib/WebGUI/Asset/Wobject/MessageBoard.pm b/lib/WebGUI/Asset/Wobject/MessageBoard.pm index b55238e45..7061ce22e 100644 --- a/lib/WebGUI/Asset/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Asset/Wobject/MessageBoard.pm @@ -67,11 +67,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/MultiSearch.pm b/lib/WebGUI/Asset/Wobject/MultiSearch.pm index 80e9472da..15e9a7d8c 100644 --- a/lib/WebGUI/Asset/Wobject/MultiSearch.pm +++ b/lib/WebGUI/Asset/Wobject/MultiSearch.pm @@ -89,11 +89,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index 4cbbbb432..35223f1c1 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -358,11 +358,18 @@ Extend the superclass to add metadata and to preprocess the template. =cut sub prepareView { - my $self = shift; - $self->SUPER::prepareView(); - my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); - $template->prepare($self->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Poll.pm b/lib/WebGUI/Asset/Wobject/Poll.pm index 039a705ab..f933b8e46 100644 --- a/lib/WebGUI/Asset/Wobject/Poll.pm +++ b/lib/WebGUI/Asset/Wobject/Poll.pm @@ -327,11 +327,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/ProjectManager.pm b/lib/WebGUI/Asset/Wobject/ProjectManager.pm index fdb7e0ad3..1353b0296 100644 --- a/lib/WebGUI/Asset/Wobject/ProjectManager.pm +++ b/lib/WebGUI/Asset/Wobject/ProjectManager.pm @@ -613,11 +613,18 @@ sub i18n { =cut sub prepareView { - my $self = shift; - $self->SUPER::prepareView(); - my $template = WebGUI::Asset::Template->new($self->session, $self->get("projectDashboardTemplateId")); - $template->prepare($self->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("projectDashboardTemplateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("projectDashboardTemplateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/SQLReport.pm b/lib/WebGUI/Asset/Wobject/SQLReport.pm index f6a0f6903..fbcbb60dc 100644 --- a/lib/WebGUI/Asset/Wobject/SQLReport.pm +++ b/lib/WebGUI/Asset/Wobject/SQLReport.pm @@ -493,11 +493,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Search.pm b/lib/WebGUI/Asset/Wobject/Search.pm index 61c8ca747..446034918 100644 --- a/lib/WebGUI/Asset/Wobject/Search.pm +++ b/lib/WebGUI/Asset/Wobject/Search.pm @@ -134,11 +134,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Shelf.pm b/lib/WebGUI/Asset/Wobject/Shelf.pm index 365f467ab..3c13cef0e 100644 --- a/lib/WebGUI/Asset/Wobject/Shelf.pm +++ b/lib/WebGUI/Asset/Wobject/Shelf.pm @@ -258,11 +258,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/StockData.pm b/lib/WebGUI/Asset/Wobject/StockData.pm index 120cc66d1..f41c62290 100644 --- a/lib/WebGUI/Asset/Wobject/StockData.pm +++ b/lib/WebGUI/Asset/Wobject/StockData.pm @@ -321,11 +321,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/StoryArchive.pm b/lib/WebGUI/Asset/Wobject/StoryArchive.pm index e05a549a1..c841dee29 100644 --- a/lib/WebGUI/Asset/Wobject/StoryArchive.pm +++ b/lib/WebGUI/Asset/Wobject/StoryArchive.pm @@ -414,6 +414,13 @@ sub prepareView { my $self = shift; $self->SUPER::prepareView(); my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } $template->prepare; $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/StoryTopic.pm b/lib/WebGUI/Asset/Wobject/StoryTopic.pm index f8ec46286..609a7425c 100644 --- a/lib/WebGUI/Asset/Wobject/StoryTopic.pm +++ b/lib/WebGUI/Asset/Wobject/StoryTopic.pm @@ -124,6 +124,13 @@ sub prepareView { my $self = shift; $self->SUPER::prepareView(); my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } $template->prepare; $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index 728d887ed..dbbe57198 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -1194,6 +1194,13 @@ sub prepareView { $templateId = $self->session->form->process('overrideTemplateId'); } my $template = WebGUI::Asset::Template->new( $self->session, $templateId ); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } $template->prepare; $self->{_viewTemplate} = $template; return; diff --git a/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm b/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm index 37035c62b..aaaff5316 100644 --- a/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm +++ b/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm @@ -303,11 +303,18 @@ See WebGUI::Asset::prepareView() for details. =cut sub prepareView { - my $self = shift; - $self->next::method; - my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); - $template->prepare($self->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->next::method; + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm index 0e13cfd5c..27ed66a27 100644 --- a/lib/WebGUI/Asset/Wobject/Thingy.pm +++ b/lib/WebGUI/Asset/Wobject/Thingy.pm @@ -1349,11 +1349,18 @@ 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->getMetaDataAsTemplateVariables); - $self->{_viewTemplate} = $template; + my $self = shift; + $self->SUPER::prepareView(); + my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } + $template->prepare($self->getMetaDataAsTemplateVariables); + $self->{_viewTemplate} = $template; return undef; } diff --git a/lib/WebGUI/Asset/Wobject/TimeTracking.pm b/lib/WebGUI/Asset/Wobject/TimeTracking.pm index 21f42f18d..5ca3cfc0d 100644 --- a/lib/WebGUI/Asset/Wobject/TimeTracking.pm +++ b/lib/WebGUI/Asset/Wobject/TimeTracking.pm @@ -101,6 +101,13 @@ sub prepareView { #} else { $template = WebGUI::Asset::Template->new($self->session, $self->get("userViewTemplateId")); #} + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("userViewTemplateId"), + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/UserList.pm b/lib/WebGUI/Asset/Wobject/UserList.pm index ad0c81aeb..a7f6815a8 100644 --- a/lib/WebGUI/Asset/Wobject/UserList.pm +++ b/lib/WebGUI/Asset/Wobject/UserList.pm @@ -337,6 +337,13 @@ sub prepareView { $templateId = $self->session->form->process("overrideTemplateId"); } my $template = WebGUI::Asset::Template->new($self->session, $templateId); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $templateId, + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; diff --git a/lib/WebGUI/Asset/Wobject/WeatherData.pm b/lib/WebGUI/Asset/Wobject/WeatherData.pm index 7ef165c53..8497b9943 100644 --- a/lib/WebGUI/Asset/Wobject/WeatherData.pm +++ b/lib/WebGUI/Asset/Wobject/WeatherData.pm @@ -99,6 +99,13 @@ sub prepareView { my $self = shift; $self->SUPER::prepareView(); my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId")); + if (!$template) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get("templateId"), + assetId => $self->getId, + ); + } $template->prepare($self->getMetaDataAsTemplateVariables); $self->{_viewTemplate} = $template; } diff --git a/lib/WebGUI/Asset/Wobject/WikiMaster.pm b/lib/WebGUI/Asset/Wobject/WikiMaster.pm index dd0fc4581..61add6960 100644 --- a/lib/WebGUI/Asset/Wobject/WikiMaster.pm +++ b/lib/WebGUI/Asset/Wobject/WikiMaster.pm @@ -379,6 +379,13 @@ sub prepareView { $self->next::method; $self->{_frontPageTemplate} = WebGUI::Asset::Template->new($self->session, $self->get('frontPageTemplateId')); + if (!$self->{_frontPageTemplate}) { + WebGUI::Error::ObjectNotFound::Template->throw( + error => qq{Template not found}, + templateId => $self->get('frontPageTemplateId'), + assetId => $self->getId, + ); + } $self->{_frontPageTemplate}->prepare; } diff --git a/lib/WebGUI/Content/Asset.pm b/lib/WebGUI/Content/Asset.pm index 64480777a..14ced5f1a 100644 --- a/lib/WebGUI/Content/Asset.pm +++ b/lib/WebGUI/Content/Asset.pm @@ -207,7 +207,10 @@ sub tryAssetMethod { $session->asset($asset); my $methodToTry = "www_".$method; my $output = eval{$asset->$methodToTry()}; - if ($@) { + if (my $e = Exception::Class->caught('WebGUI::Error::ObjectNotFound::Template')) { + $session->errorHandler->error(sprintf "%s templateId: %s assetId: %s", $e->error, $e->assetId, $e->templateId); + } + elsif ($@) { $session->errorHandler->warn("Couldn't call method ".$method." on asset for url: ".$session->url->getRequestedUrl." Root cause: ".$@); if ($method ne "view") { $output = tryAssetMethod($session,$asset,'view'); diff --git a/lib/WebGUI/Exception.pm b/lib/WebGUI/Exception.pm index 107b24624..e7c4f3a78 100644 --- a/lib/WebGUI/Exception.pm +++ b/lib/WebGUI/Exception.pm @@ -44,6 +44,11 @@ use Exception::Class ( description => "The object you were trying to retrieve does not exist.", fields => ["id"], }, + 'WebGUI::Error::ObjectNotFound::Template' => { + isa => 'WebGUI::Error', + description => "The template an asset was trying to retrieve does not exist.", + fields => [qw/templateId assetId/], + }, 'WebGUI::Error::InvalidFile' => { isa => 'WebGUI::Error', description => "The file you have provided has errors.",