X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole.pm;h=566895129efcadea641af19e81fa13d059c9e9ac;hb=436e67e2ddca8e590809acea95dd4d47b4726da6;hp=f3978abef10d4f4371a90e8e07a529ded2a51b27;hpb=f30e7b2117f62252e2ebf408acfa4340837d6d1a;p=maypole.git diff --git a/lib/Maypole.pm b/lib/Maypole.pm index f3978ab..5668951 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -7,11 +7,11 @@ use Maypole::Config; use Maypole::Constants; use Maypole::Headers; -our $VERSION = '2.10_pre4'; +our $VERSION = '2.10'; __PACKAGE__->mk_classdata($_) for qw( config init_done view_object ); __PACKAGE__->mk_accessors( - qw( ar params query objects model_class template_args output path + qw( params query objects model_class template_args output path args action template error document_encoding content_type table headers_in headers_out ) ); @@ -20,23 +20,23 @@ __PACKAGE__->init_done(0); sub debug { 0 } -sub setup { +sub setup +{ my $calling_class = shift; + $calling_class = ref $calling_class if ref $calling_class; - { - no strict 'refs'; - no warnings 'redefine'; - - # Naughty. - *{ $calling_class . "::handler" } = - sub { Maypole::handler( $calling_class, @_ ) }; - } + my $config = $calling_class->config; - $config->model || $config->model("Maypole::Model::CDBI"); - $config->model->require; - die "Couldn't load the model class $config->{model}: $@" if $@; - $config->model->setup_database( $config, $calling_class, @_ ); - for my $subclass ( @{ $config->classes } ) { + + $config->model || $config->model('Maypole::Model::CDBI'); + + $config->model->require or die + "Couldn't load the model class $config->{model}: $@"; + + $config->model->setup_database($config, $calling_class, @_); + + foreach my $subclass ( @{ $config->classes } ) + { no strict 'refs'; unshift @{ $subclass . "::ISA" }, $config->model; $config->model->adopt($subclass) @@ -44,7 +44,8 @@ sub setup { } } -sub init { +sub init +{ my $class = shift; my $config = $class->config; $config->view || $config->view("Maypole::View::TT"); @@ -57,10 +58,11 @@ sub init { } -sub handler { - +sub handler : method +{ # See Maypole::Workflow before trying to understand this. - my ( $class, $req ) = @_; + my ($class, $req) = @_; + $class->init unless $class->init_done; # Create the request object