package Maypole::View::TT;
+use Class::C3;
use base 'Maypole::View::Base';
use Maypole::Constants;
use Template;
use File::Spec::Functions qw(catdir tmpdir);
-our $error_template;
+our $error_template;
{ local $/; $error_template = <DATA>; }
+our $VERSION = '2.11';
+
use strict;
sub template {
return OK;
} else {
if ($@) {
- warn "fatal error in template '$template_file' : $@\n";
- $r->{error} = "fatal error in template '$template_file' : $@";
+ my $error = "fatal error in template '$template_file' : $@\nTT paths : " . join(', ',$self->paths($r)) . "\n";
+ $r->warn($error);
+ $r->{error} = $error;
} else {
- warn "TT error for template '$template_file'\n" . $self->{tt}->error;
- $r->{error} = "TT error for template '$template_file'\n" . $self->{tt}->error;
+ my $error = "TT error for template '$template_file'\n" . $self->{tt}->error . "\nTT paths : " . join(', ',$self->paths($r)) . "\n";
+ $r->warn($error);
+ $r->{error} = $error;
}
return ERROR;
}
with Template Toolkit and they can also be found on CPAN or can be written
easily. See L<Template::Manual::Filters>.
+TT provides stderr and stdout filters, which allow you to write handy macros
+like this one to output debug information to your web server log, etc :
+
+=over 4
+
+[% MACRO debug_msg(text)
+ FILTER stderr; "[TT debug_msg] $text\n"; END;
+%]
+
+=back
+
+
TT Macros allow you to reuse small blocks of content, directives, etc. The MACRO
directive allows you to define a directive or directive block which is then
evaluated each time the macro is called. Macros can be passed named parameters
<tr> <td class="lhs" width="35%"> <b>[% attribute %]</b> </td> <td class="rhs" width="65%"> [%
request.$attribute.list.join(" , ") %] </td></tr>
[% END %]
+ <tr><td colspan="2"></tr>
+ <tr><td class="lhs" colspan="2"><b>CGI Parameters</b> </td></tr>
+ [% FOREACH param IN request.params %]
+ <tr> <td class="lhs" width="35%">[% param.key %]</td> <td class="rhs" width="65%"> [% param.value %] </td></tr>
+ [% END %]
</table>
<h2> Website / Template Paths </h2>