]> git.decadent.org.uk Git - maypole.git/commitdiff
Slight refactoring, send out the template output, and provide an error routine.
authorSimon Cozens <simon@simon-cozens.org>
Sat, 24 Jan 2004 14:03:57 +0000 (14:03 +0000)
committerSimon Cozens <simon@simon-cozens.org>
Sat, 24 Jan 2004 14:03:57 +0000 (14:03 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@6 48953598-375a-da11-a14b-00016c27c3ee

lib/Apache/MVC/View/TT.pm

index 5c67d502a9d17a0d095df6fdaba5d8c477787fce..30e0f89030ca2e606654e9a376d1ff123e24e55e 100644 (file)
@@ -4,19 +4,22 @@ use Template;
 use File::Spec;
 use UNIVERSAL::moniker;
 
-sub template_root { "/opt/houseshare/templates" } # For now
 
 sub new { bless {}, shift } # Not worth having
 
-sub process {
+sub _tt {
     my ($self, $r) = @_;
-    my $root = $self->template_root;
-    my $template = Template->new({ INCLUDE_PATH => [
+    my $root = $r->config->{template_root};
+    Template->new({ INCLUDE_PATH => [
         $root,
         File::Spec->catdir($root, $r->model_class->moniker),
         File::Spec->catdir($root, "custom"),
         File::Spec->catdir($root, "factory")
     ]});
+}
+
+sub _args {
+    my ($self, $r) = @_;
     my %args = (
         request => $r,
         class   => $r->model_class,
@@ -30,6 +33,27 @@ sub process {
     } else {
         ($args{$r->model_class->moniker}) = @{$r->objects};
     }
+    %args;
+}
+
+sub process {
+    my ($self, $r) = @_;
+    my $template = $self->_tt($r):
+    my $output;
+    $template->process($r->template, { $self->_args($r) }, \$output);
+    || $self->error($r, $template->error);
+    $r->{ar}->content_type("text/html");
+    $r->{ar}->headers_out->set("Content-Length" => length $output);
+    $r->send_http_header;
+    $r->print($output);
+    return 200;
+}
 
-    $template->process($r->template, \%args);
+sub error {
+    my ($self, $r, $error) = @_;
+    $r->{ar}_>content_type("text/plain");
+    $r->send_http_header;
+    $r->print($error);
+    return 500;
+    exit;
 }