diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 0f6911887..a886ac94f 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -288,7 +288,7 @@ sub checkView { $http->setRedirect($self->getUrl("func=manageClipboard")); return "redirect"; } - elsif ($self->get("state") ne "published" && $self->get("state") ne "archived") { # tell em it doesn't exist anymore + elsif ($self->get("state") ne "published") { # tell em it doesn't exist anymore $http->setStatus("410"); my $notFound = WebGUI::Asset->getNotFound($self->session); $self->session->asset($notFound); diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm index da096ae3b..6c0537ae3 100644 --- a/lib/WebGUI/Asset/File.pm +++ b/lib/WebGUI/Asset/File.pm @@ -470,16 +470,15 @@ sub www_view { return $self->session->privilege->noAccess() unless $self->canView; # Check to make sure it's not in the trash or some other weird place - my $state = $self->get("state"); - if ($state ne "published" && $state ne "archived") { + if ($self->get("state") ne "published") { my $i18n = WebGUI::International->new($self->session,'Asset_File'); $self->session->http->setStatus("404"); return sprintf($i18n->get("file not found"), $self->getUrl()); } - $self->session->http->setRedirect($self->getFileUrl); - $self->session->http->setStreamedFile($self->getStorageLocation->getPath($self->get("filename"))); - return 'chunked'; + $self->session->http->setRedirect($self->getFileUrl); + $self->session->http->setStreamedFile($self->getStorageLocation->getPath($self->get("filename"))); + return 'chunked'; } diff --git a/lib/WebGUI/Session/Url.pm b/lib/WebGUI/Session/Url.pm index 8b2fa9a52..0d45d8e72 100644 --- a/lib/WebGUI/Session/Url.pm +++ b/lib/WebGUI/Session/Url.pm @@ -200,9 +200,14 @@ sub getBackToSiteURL { my $media = WebGUI::Asset->getMedia($self->session); my $mediaLineage = $media->get("lineage"); my $assetLineage = $self->session->asset->get("lineage"); - if ($assetLineage =~ /^$importNodeLineage/ || $assetLineage eq "000001" || $assetLineage =~ /^$mediaLineage/ || ($self->session->asset->get("state") ne "published" && $self->session->asset->get("state") ne "archived")) { + if ( $assetLineage =~ /^$importNodeLineage/ + || $assetLineage eq "000001" + || $assetLineage =~ /^$mediaLineage/ + || $self->session->asset->get("state") ne "published" ##Parent state is okay be definition + ) { $url = WebGUI::Asset->getDefault($self->session)->getUrl; - } else { + } + else { $url = $self->session->asset->getContainer->getUrl; } } else { diff --git a/t/Session/Url.t b/t/Session/Url.t index 1c5b7c56e..b9e92bfb3 100644 --- a/t/Session/Url.t +++ b/t/Session/Url.t @@ -325,8 +325,6 @@ is($session->url->getBackToSiteURL, '/goBackToTheSite', 'getBackToSiteURL: when $session->asset($sessionAsset); is($session->url->getBackToSiteURL, $session->asset->getUrl, q!getBackToSiteURL: for most regular old assets, it takes you back to the asset's container!); -my $versionTag = WebGUI::VersionTag->getWorking($session); - my $defaultAssetUrl = WebGUI::Asset->getDefault($session)->getUrl; $session->asset( WebGUI::Asset->getImportNode($session) ); @@ -356,15 +354,10 @@ TODO: { ok(0, 'test a child of the media folder'); } +my $versionTag = WebGUI::VersionTag->getWorking($session); my $statefulAsset = WebGUI::Asset->getRoot($session)->addChild({ className => 'WebGUI::Asset::Snippet' }); - -$statefulAsset->{_properties}{state} = 'archived'; +$versionTag->commit; $session->asset( $statefulAsset ); -is( - $session->url->getBackToSiteURL, - WebGUI::Asset->getRoot($session)->getUrl, - q!getBackToSiteURL: When asset state is archived, it returns you to the Asset's container! -); $statefulAsset->{_properties}{state} = 'published'; is( @@ -373,12 +366,18 @@ is( q!getBackToSiteURL: When asset state is published, it returns you to the Asset's container! ); - $statefulAsset->{_properties}{state} = 'trash'; is( $session->url->getBackToSiteURL, $defaultAssetUrl, - q!getBackToSiteURL: When asset state is not archived or published, it returns you to the default Asset! + q!getBackToSiteURL: When asset state is trash, it returns you to the default Asset! +); + +$statefulAsset->{_properties}{state} = 'clipboard'; +is( + $session->url->getBackToSiteURL, + $defaultAssetUrl, + q!getBackToSiteURL: When asset state is clipboard, it returns you to the default Asset! ); END { ##Always clean-up