]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole/View/Base.pm
change to view::base to only call display_columns, stringify_columns, to_cgi if...
[maypole.git] / lib / Maypole / View / Base.pm
index 277a0c93d95dcb30db2649acd57db9f1548e7957..07564c2b8c5b065e008eb36e8ccae347a6962883 100644 (file)
@@ -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 ) {