From 972ba033ec8860d5452ca1c5c6d26697fd6d1b76 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Wed, 27 Jan 2010 21:50:06 -0800 Subject: [PATCH] Fix the FileUrl macro. --- lib/WebGUI/Macro/FileUrl.pm | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/WebGUI/Macro/FileUrl.pm b/lib/WebGUI/Macro/FileUrl.pm index c843e293c..b52fa238f 100644 --- a/lib/WebGUI/Macro/FileUrl.pm +++ b/lib/WebGUI/Macro/FileUrl.pm @@ -14,6 +14,7 @@ use strict; use WebGUI::Asset; use WebGUI::Storage; use WebGUI::International; +use WebGUI::Exception; =head1 NAME @@ -40,23 +41,23 @@ The URL to the Asset. =cut sub process { - my $session = shift; - my $url = shift; - my $asset = WebGUI::Asset->newByUrl($session,$url); - my $i18n = WebGUI::International->new($session, 'Macro_FileUrl'); - if (not defined $asset) { - return $i18n->get('invalid url'); - } - my $storageId = $asset->get('storageId'); - if (not defined $storageId) { - return $i18n->get('no storage'); - } - my $filename = $asset->get('filename'); - if (not defined $filename) { - return $i18n->get('no filename'); - } - my $storage = WebGUI::Storage->get($session,$storageId); - return $storage->getUrl($filename); + my $session = shift; + my $url = shift; + my $asset = eval { WebGUI::Asset->newByUrl($session,$url); }; + my $i18n = WebGUI::International->new($session, 'Macro_FileUrl'); + if (Exception::Class->caught()) { + return $i18n->get('invalid url'); + } + my $storageId = $asset->storageId; + if (not defined $storageId) { + return $i18n->get('no storage'); + } + my $filename = $asset->filename; + if (not defined $filename) { + return $i18n->get('no filename'); + } + my $storage = WebGUI::Storage->get($session,$storageId); + return $storage->getUrl($filename); }