X-Git-Url: https://git.decadent.org.uk/gitweb/?p=maypole.git;a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=0e9378fd465d15cbd60613304fb44f9456f7eba3;hp=a3d9466562b574b722bf96d7ee05a044087f3725;hb=55afe5b445e78a93fd7e501c49b53b654722c7c3;hpb=0df49a961d4cc7ebb6866f4e31273288ed2305bc diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index a3d9466..0e9378f 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; @@ -9,27 +10,26 @@ sub new { bless {}, shift } # By default, do nothing. sub paths { my ( $self, $r ) = @_; + warn "paths called with @_"; my $root = $r->config->template_root || $r->get_template_root; if(ref($root) ne 'ARRAY') { $root = [ $root ]; } my @output = (); foreach my $path (@$root) { - push(@output, $path); 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" )); + push(@output, $path); push(@output, File::Spec->catdir( $path, "factory" )); } - return @output; -} - - + return grep( $_, @output); +} sub vars { my ( $self, $r ) = @_; @@ -40,10 +40,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; @@ -54,7 +55,8 @@ 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. if ( @{ $r->objects || [] } > 1 ) { @@ -72,8 +74,6 @@ sub vars { sub process { my ( $self, $r ) = @_; - $r->{content_type} ||= "text/html"; - $r->{document_encoding} ||= "utf-8"; my $status = $self->template($r); return $self->error($r) if $status != OK; return OK; @@ -82,38 +82,41 @@ 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 -

Template not found

- -This template was not found while processing the following request: +A template was not found while processing the following request: -@{[$r->{action}]} on table @{[ $r->{table} ]} with objects: +@{[$r->{action}]} on table +@{[ $r->{table} ]} with objects: -
+
 @{[join "\n", @{$r->{objects}}]}
-
+
+ -Looking for template @{[$r->{template}]} in paths: +The main template is @{[$r->{template}]}. +The template subsystem's error message was +
+$template_error
+
+We looked in paths: -
+
 @{[ join "\n", $self->paths($r) ]}
-
+
EOF $r->{content_type} = "text/html"; $r->{output} = $r->{error}; return OK; } - $r->{content_type} = "text/plain"; - $r->{output} = $r->{error}; - $r->send_output; return ERROR; }