X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FTT.pm;h=f634ca8fedb7604ef9d97af249bcfc738f746bd7;hb=29550a30ca082a8f1f1d0cb1b4a92eb39bc3dd84;hp=7a2ab0307501e6da5fe6281b2c17ece946966b37;hpb=a183ff6bda2ae98ef8f4a4f979647052e0020dea;p=maypole.git diff --git a/lib/Maypole/View/TT.pm b/lib/Maypole/View/TT.pm index 7a2ab03..f634ca8 100644 --- a/lib/Maypole/View/TT.pm +++ b/lib/Maypole/View/TT.pm @@ -12,7 +12,6 @@ our $VERSION = 2.11; sub template { my ( $self, $r ) = @_; - unless ($self->{tt}) { my $view_options = $r->config->view_options || {}; $self->{provider} = Template::Provider->new($view_options); @@ -25,16 +24,24 @@ sub template { $self->{provider}->include_path([ $self->paths($r) ]); my $template_file = $r->template; + my $ext = $r->config->template_extension; $template_file .= $ext if defined $ext; my $output; - if ($self->{tt}->process($template_file, { $self->vars($r) }, \$output )) { - $r->{output} = $output; - return OK; + my $processed_ok = eval{$self->{tt}->process($template_file, { $self->vars($r) }, \$output );}; + if ($processed_ok) { + $r->{output} = $output; + return OK; } else { + if ($@) { + warn "fatal error in template '$template_file' : $@\n"; + $r->{error} = "fatal error in template '$template_file' : $@"; + } else { + warn "TT error for template '$template_file'\n" . $self->{tt}->error; $r->{error} = "TT error for template '$template_file'\n" . $self->{tt}->error; - return ERROR; + } + return ERROR; } } @@ -44,10 +51,15 @@ sub report_error { my $output; # Need to be very careful here. my $tt = Template->new; + unless (ref $r->{config}) { + warn "no config for this request\n"; + $error .= '
There was a problem finding configuration for this request'; + $r->{config} ||= {}; + } if ($tt->process(\$error_template, - { err_type => $type, error => $error, - config => { %{$r->{config}}}, - request => $r, # We have that at least + { err_type => $type, error => $error, + config => $r->{config}, + request => $r, eval{$self->vars($r)} }, \$output )) { $r->{output} = $output; if ($tt->error) { $r->{output} = "Even the error template @@ -387,19 +399,19 @@ the path "[% request.path %]". The error text returned was:

Request details

- - [% FOR thing = ["model_class", "table", "template", "path", +
+ [% FOR attribute = ["model_class", "table", "template", "path", "content_type", "document_encoding", "action", "args", "objects"] %] - + [% END %]
[%thing %] [% - request.$thing.list.join(" , ") %]
[% attribute %] [% + request.$attribute.list.join(" , ") %]

Application configuration

- - [% FOR thing = config.keys %] - +
[%thing %] [% - config.$thing.list.join(" , ") %]
+ [% FOR field IN config %] + [% END %]
[% field.key %] [% + $field.value.list.join(" , ") %]