webgui/lib/WebGUI/Template/Plugin/Asset.pm

49 lines
1.1 KiB
Perl

package WebGUI::Template::Plugin::Asset;
use base 'Template::Plugin';
use WebGUI::Template::Proxy::Asset;
sub new {
my $config = ref($_[-1]) eq 'HASH' ? pop(@_) : { };
my ($class, $context, $asset) = @_;
my $stash = $context->stash;
my $session = $stash->{_session};
if ( ref $asset) {
}
elsif ( defined $asset ) {
$asset = $class->_getAsset($session, $asset);
}
elsif ( $stash->{_asset} ) {
$asset = $stash->{_asset};
}
elsif ( $stash->{assetId} ) {
$asset = $class->_getAsset($session, $stash->{assetId});
}
else {
$asset = $session->asset;
}
return WebGUI::Template::Proxy::Asset->_new($context, $asset);
}
sub _getAsset {
my ( $class, $session, $id ) = @_;
my ( $asset );
try {
$asset = WebGUI::Asset->newByUrl( $session, $id );
}
catch {
try {
$asset = WebGUI::Asset->newById( $session, $id );
}
catch {
die "Could not find asset $id to include in template: " . $_;
};
};
return $asset;
}
1;