use UNIVERSAL::require;
use strict;
use warnings;
-our $VERSION = "1.1";
+our $VERSION = "1.3";
__PACKAGE__->mk_classdata($_) for qw( config init_done view_object );
__PACKAGE__->mk_accessors ( qw( ar params query objects model_class
args action template ));
my $config = $calling_class->config;
$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}}) {
no strict 'refs';
my $config = $class->config;
$config->{view} ||= "Maypole::View::TT";
$config->{view}->require;
+ die "Couldn't load the view class $config->{view}: $@" if $@;
$config->{display_tables} ||= [ @{$class->config->{tables}} ];
$class->view_object($class->config->{view}->new);
$class->init_done(1);
sub authenticate { return OK }
+sub parse_path {
+ my $self = shift;
+ $self->{path} ||= "frontpage";
+ my @pi = split /\//, $self->{path};
+ shift @pi while @pi and !$pi[0];
+ $self->{table} = shift @pi;
+ $self->{action} = shift @pi;
+ $self->{args} = \@pi;
+}
+
=head1 NAME
Maypole - MVC web application framework
Then your top-level application package should change the model class:
(Before calling C<setup>)
- ProductDatabase->config->{model_class} = "ProductDatabase::Model";
+ ProductDatabase->config->{model} = "ProductDatabase::Model";
(The C<:Exported> attribute means that the method can be called via the
URL C</I<table>/supersearch/...>.)
You should probably not use Maypole directly. Maypole is an abstract
class which does not specify how to communicate with the outside world.
The most popular subclass of Maypole is L<Apache::MVC>, which interfaces
-the Maypole framework to Apache mod_perl.
+the Maypole framework to Apache mod_perl; another important one is
+L<CGI::Maypole>.
If you are implementing Maypole subclasses, you need to provide at least
the C<parse_location> and C<send_output> methods. You may also want to
sub parse_location { die "Do not use Maypole directly; use Apache::MVC or similar" }
sub send_output{ die "Do not use Maypole directly; use Apache::MVC or similar" }
+=head1 SEE ALSO
+
+There's more documentation, examples, and a wiki at the Maypole web site:
+
+http://maypole.simon-cozens.org/
+
+L<Apache::MVC>, L<CGI::Maypole>.
+
=head1 AUTHOR
Simon Cozens, C<simon@cpan.org>