X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=a3d9466562b574b722bf96d7ee05a044087f3725;hb=ddd438241495697a59ce9a13eaf03b6f61c5f12a;hp=f7881a2e27106c9bc7bd536993ba3d4ff0c23232;hpb=45e4b287c0925cab5cc2692093034275dd0d17b9;p=maypole.git diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index f7881a2..a3d9466 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; @@ -35,9 +45,8 @@ sub vars { # ... ); if ($class) { - my $classmeta = $args{classmetadata} ||= {}; + my $classmeta = $r->template_args->{classmetadata} ||= {}; $classmeta->{name} ||= $class; - $classmeta->{description} ||= $class->description; $classmeta->{table} ||= $class->table; $classmeta->{columns} ||= [ $class->display_columns ]; $classmeta->{list_columns} ||= [ $class->list_columns ]; @@ -57,9 +66,7 @@ sub vars { } # Overrides - local $r->{template_args} = $r->{template_args}; - delete $r->{template_args}{classmetadata}; # already overrides - %args = ( %args, %{ $r->{template_args} || {} } ); + %args = ( %args, %{ $r->template_args || {} } ); %args; }