Skip to content

Instantly share code, notes, and snippets.

@pbcj
Created April 11, 2011 23:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pbcj/5444b48de7bfeeb594b8 to your computer and use it in GitHub Desktop.
Save pbcj/5444b48de7bfeeb594b8 to your computer and use it in GitHub Desktop.
diff --git a/lib/WebGUI/Asset/Template.pm b/lib/WebGUI/Asset/Template.pm
index 170c8af..8b1b764 100644
--- a/lib/WebGUI/Asset/Template.pm
+++ b/lib/WebGUI/Asset/Template.pm
@@ -611,12 +611,21 @@ sub process {
$self->prepare unless ($self->{_prepared});
my $parser = $self->getParser($session, $self->get("parser"));
- my $template = $self->get('usePacked')
- ? $self->get('templatePacked')
- : $self->get('template')
- ;
my $output;
- eval { $output = $parser->process($template, $vars); };
+ $vars->{processTemplate} = sub {
+ my $templateHint = shift;
+ my $templateAsset = $templateHint;
+ if( !$templateHint->isa( 'WebGUI::Asset::Template' ) ) {
+ $templateAsset = WebGUI::Asset->newByUrl( 'WebGUI::Asset::Template', $session, $templateHint, undef );
+ }
+ my $template = $templateAsset->get('usePacked')
+ ? $templateAsset->get('templatePacked')
+ : $templateAsset->get('template')
+ ;
+ $parser->process( $templateAsset, $vars );
+
+ };
+ eval { $output = $vars->{ processTemplate }->( $self ) };
if (my $e = Exception::Class->caught) {
$session->log->error(sprintf "Error processing template: %s, %s, %s", $self->getUrl, $self->getId, $e->error);
my $i18n = WebGUI::International->new($session, 'Asset_Template');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment