X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=f21e77135ac77d91d02ccfd8480e992d1e00ad73;hb=4f4bbd04570ff3c5f59f99c5cbf868d9b1a3da49;hp=ece5d98cb8af3167e06d8f132056c8ad1f286451;hpb=f19715f56244cc6d862169c2dd656b8a2f3845b5;p=maypole.git diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index ece5d98..f21e771 100644 --- a/lib/Maypole/View/Base.pm +++ b/lib/Maypole/View/Base.pm @@ -1,4 +1,5 @@ package Maypole::View::Base; +use Class::C3; use File::Spec; use UNIVERSAL::moniker; use strict; @@ -19,7 +20,7 @@ sub paths { push(@output, ( $r->model_class - && File::Spec->catdir( $path, $r->model_class->moniker ) + && File::Spec->catdir( $path, $r->model_class->table ) ) ); push(@output, File::Spec->catdir( $path, "custom" )); @@ -41,10 +42,11 @@ sub vars { request => $r, objects => $r->objects, base => $base, - config => $r->config - - # ... + config => $r->config, ); + + $args{object} = $r->object if ($r->can('object')); + if ($class) { my $classmeta = $r->template_args->{classmetadata} ||= {}; $classmeta->{name} ||= $class; @@ -55,7 +57,7 @@ sub vars { $classmeta->{related_accessors} ||= [ $class->related($r) ]; $classmeta->{moniker} ||= $class->moniker; $classmeta->{plural} ||= $class->plural_moniker; - $classmeta->{cgi} ||= { $class->to_cgi }; + $classmeta->{cgi} ||= { $class->to_cgi } if ($r->build_form_elements); $classmeta->{stringify_column} ||= $class->stringify_column; # User-friendliness facility for custom template writers. @@ -82,16 +84,14 @@ sub process { sub error { my ( $self, $r, $desc ) = @_; $desc = $desc ? "$desc: " : ""; - carp $desc . $r->{error}; if ( $r->{error} =~ /not found$/ ) { - + warn "template not found error : ", $r->{error}; # This is a rough test to see whether or not we're a template or # a static page return -1 unless @{ $r->{objects} || [] }; my $template_error = $r->{error}; $r->{error} = < Template not found A template was not found while processing the following request: @@ -119,9 +119,6 @@ EOF $r->{output} = $r->{error}; return OK; } - $r->{content_type} = "text/plain"; - $r->{output} = $r->{error}; - $r->send_output; return ERROR; }