X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=9863e155475581355431b4d2636f781a77984a89;hb=e767951f92d57740dc76425868cce32f6bcf1296;hp=0e9378fd465d15cbd60613304fb44f9456f7eba3;hpb=55afe5b445e78a93fd7e501c49b53b654722c7c3;p=maypole.git diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index 0e9378f..9863e15 100644 --- a/lib/Maypole/View/Base.pm +++ b/lib/Maypole/View/Base.pm @@ -1,5 +1,4 @@ package Maypole::View::Base; -use Class::C3; use File::Spec; use UNIVERSAL::moniker; use strict; @@ -10,12 +9,12 @@ 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 = (); + my $i = 0; foreach my $path (@$root) { push(@output, ( @@ -23,9 +22,10 @@ sub paths { && File::Spec->catdir( $path, $r->model_class->table ) ) ); - push(@output, File::Spec->catdir( $path, "custom" )); + push(@output, File::Spec->catdir( $path, "custom" )) unless ($i); push(@output, $path); - push(@output, File::Spec->catdir( $path, "factory" )); + push(@output, File::Spec->catdir( $path, "factory" )) unless ($i); + $i = 1; } return grep( $_, @output); @@ -49,14 +49,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 } if ($r->build_form_elements); - $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 ) {