]> 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 1cc9b2bd8f78a9efc906275991eee2765ffb310e..07564c2b8c5b065e008eb36e8ccae347a6962883 100644 (file)
@@ -1,4 +1,5 @@
 package Maypole::View::Base;
+use Class::C3;
 use File::Spec;
 use UNIVERSAL::moniker;
 use strict;
@@ -15,7 +16,6 @@ sub paths {
     }
     my @output = ();
     foreach my $path (@$root) {
-       push(@output, $path);
        push(@output,
             (
               $r->model_class
@@ -23,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;
@@ -42,22 +40,22 @@ sub vars {
         objects => $r->objects,
         base    => $base,
         config  => $r->config,
-       object  => $r->object,
-
-          # ...
     );
+
+    $args{object} = $r->object if ($r->can('object'));
+
     if ($class) {
         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 ) {