diff --git a/Changes b/Changes index 65729ef..106fa73 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,9 @@ Revision history for Mojolicious::Plugin::TtRenderer {{$NEXT}} + - Compatibility with Mojolicious 3.33+ + +1.23 August 23, 2012 - Use die instead of render_exception (GH#29) 1.22 August 21, 2012 diff --git a/dist.ini b/dist.ini index 28abc0e..3c2ba4d 100644 --- a/dist.ini +++ b/dist.ini @@ -6,7 +6,7 @@ copyright_holder = Ask Bjørn Hansen # copyright_year = 2009 [Prereqs] -Mojolicious = 2.51 +Mojolicious = 3.33 Template = 2.18 [Prereqs / TestRequires ] diff --git a/lib/Mojolicious/Plugin/TtRenderer/Engine.pm b/lib/Mojolicious/Plugin/TtRenderer/Engine.pm index bfc2078..f30c64a 100644 --- a/lib/Mojolicious/Plugin/TtRenderer/Engine.pm +++ b/lib/Mojolicious/Plugin/TtRenderer/Engine.pm @@ -82,7 +82,9 @@ sub _render { $$output = ''; my @params = ({%{$c->stash}, c => $c, h => $helper}, $output, {binmode => ':utf8'}); - $self->tt->{SERVICE}->{CONTEXT}->{LOAD_TEMPLATES}->[0]->ctx($c); + my $provider = $self->tt->{SERVICE}->{CONTEXT}->{LOAD_TEMPLATES}->[0]; + $provider->options($options); + $provider->ctx($c); my $ok = $self->tt->process(defined $inline ? \$inline : $t, @params); @@ -147,6 +149,7 @@ sub new { sub renderer { @_ > 1 ? $_[0]->{renderer} = $_[1] : $_[0]->{renderer} } sub ctx { @_ > 1 ? $_[0]->{ctx} = $_[1] : $_[0]->{ctx} } +sub options { @_ > 1 ? $_[0]->{options} = $_[1] : $_[0]->{options} } sub _template_modified {1} @@ -154,17 +157,32 @@ sub _template_content { my $self = shift; my ($path) = @_; + my $options = delete $self->{options}; + # Convert backslashes to forward slashes to make inline templates work on Windows $path =~ s/\\/\//g; my ($t) = ($path =~ m{templates\/(.*)$}); - + if (-r $path) { return $self->SUPER::_template_content(@_); } # Try DATA section - elsif (my $d = $self->renderer->get_data_template($self->ctx, $t)) { - return wantarray ? ($d, '', time) : $d; + if(defined $options) + { + my $d = $self->renderer->get_data_template($options); + return wantarray ? ($d, '', time) : $d + if $d; + } + else + { + my $loader = Mojo::Loader->new; + foreach my $class (@{ $self->renderer->classes }) + { + my $d = $loader->data($class, $t); + return wantarray ? ($d, '', time) : $d + if $d; + } } my $data = '';