X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=07564c2b8c5b065e008eb36e8ccae347a6962883;hb=15ccc6266852d11e4e4aa10c67b15c70fe9470fb;hp=277a0c93d95dcb30db2649acd57db9f1548e7957;hpb=01323f127ddaf8eb9bd9b9d9ea8bcd6a6fd8a49e;p=maypole.git diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index 277a0c9..07564c2 100644 --- a/lib/Maypole/View/Base.pm +++ b/lib/Maypole/View/Base.pm @@ -16,7 +16,6 @@ sub paths { } my @output = (); foreach my $path (@$root) { - push(@output, $path); push(@output, ( $r->model_class @@ -24,15 +23,13 @@ sub paths { ) ); 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 ) = @_; my $class = $r->model_class; @@ -51,14 +48,14 @@ sub vars { my $classmeta = $r->template_args->{classmetadata} ||= {}; $classmeta->{name} ||= $class; $classmeta->{table} ||= $class->table; - $classmeta->{columns} ||= [ $class->display_columns ]; - $classmeta->{list_columns} ||= [ $class->list_columns ]; - $classmeta->{colnames} ||= { $class->column_names }; + $classmeta->{columns} ||= [ $class->display_columns ] if ($class->can('display_columns')); + $classmeta->{list_columns} ||= [ $class->list_columns ] if ($class->can('list_columns')); + $classmeta->{colnames} ||= { $class->column_names } if ($class->can('column_names')); $classmeta->{related_accessors} ||= [ $class->related($r) ]; $classmeta->{moniker} ||= $class->moniker; $classmeta->{plural} ||= $class->plural_moniker; - $classmeta->{cgi} ||= { $class->to_cgi }; - $classmeta->{stringify_column} ||= $class->stringify_column; + $classmeta->{cgi} ||= { $class->to_cgi } if ($r->build_form_elements && $class->can('to_cgi')); + $classmeta->{stringify_column} ||= $class->stringify_column if ($class->can('stringify_column')); # User-friendliness facility for custom template writers. if ( @{ $r->objects || [] } > 1 ) {