1 package Apache::MVC::View::TT;
2 use Lingua::EN::Inflect;
5 use UNIVERSAL::moniker;
9 sub new { bless {}, shift } # Not worth having
13 my $root = $r->config->{template_root};
14 Template->new({ INCLUDE_PATH => [
16 File::Spec->catdir($root, $r->model_class->moniker),
17 File::Spec->catdir($root, "custom"),
18 File::Spec->catdir($root, "factory")
24 my $class = $r->model_class;
28 objects => $r->objects,
29 base => $r->config->{uri_base},
33 $args{classmetadata} = {
35 columns => [ $class->columns ],
36 colnames => { $class->column_names },
37 related_accessors => [ $class->related($r) ],
38 moniker => $class->moniker,
39 plural => $class->plural_moniker,
40 cgi => { $class->to_cgi },
41 description => $class->description
44 # User-friendliness facility for custom template writers.
45 if (@{$r->objects} > 1){
46 $args{$r->model_class->plural_moniker} = $r->objects;
48 ($args{$r->model_class->moniker}) = @{$r->objects};
52 %args = (%args, %{$r->{template_args}||{}});
58 my $template = $self->_tt($r);
60 $template->process($r->template, { $self->_args($r) }, \$output)
61 || $self->error($r, $template->error);
62 $r->{ar}->content_type("text/html");
63 $r->{ar}->headers_out->set("Content-Length" => length $output);
64 $r->{ar}->send_http_header;
65 $r->{ar}->print($output);
70 my ($self, $r, $error) = @_;
71 $r->{ar}->send_http_header("text/plain");
72 $r->{ar}->print($error);