X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=afba7a09486ee6a87ade8953ef2b5360fccd2606;hb=18096e68c595d57caa38ff3f9b5bf59f874d7a22;hp=312d38ba24aeeb3f3e70809776a788433751a5f2;hpb=d2c852208417c014caec0436a677fcadccc197d8;p=maypole.git diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index 312d38b..afba7a0 100644 --- a/lib/Maypole/View/Base.pm +++ b/lib/Maypole/View/Base.pm @@ -10,17 +10,27 @@ sub new { bless {}, shift } # By default, do nothing. sub paths { my ( $self, $r ) = @_; my $root = $r->config->template_root || $r->get_template_root; - return ( - $root, - ( - $r->model_class - && File::Spec->catdir( $root, $r->model_class->moniker ) - ), - File::Spec->catdir( $root, "custom" ), - File::Spec->catdir( $root, "factory" ) - ); + 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 ) + ) + ); + push(@output, File::Spec->catdir( $path, "custom" )); + push(@output, File::Spec->catdir( $path, "factory" )); + } + return @output; } + + + sub vars { my ( $self, $r ) = @_; my $class = $r->model_class; @@ -45,6 +55,7 @@ sub vars { $classmeta->{moniker} ||= $class->moniker; $classmeta->{plural} ||= $class->plural_moniker; $classmeta->{cgi} ||= { $class->to_cgi }; + $classmeta->{stringify_column} ||= $class->stringify_column; # User-friendliness facility for custom template writers. if ( @{ $r->objects || [] } > 1 ) { @@ -79,23 +90,31 @@ sub error { # 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};