__PACKAGE__->init_done(0);
-sub set_database {
+sub setup {
my $calling_class = shift;
$calling_class = ref $calling_class if ref $calling_class;
+ {
+ no strict 'refs';
+ # Naughty.
+ *{$calling_class."::handler"} = sub { Maypole::handler($calling_class, @_) };
+ }
my $config = $calling_class->config;
$config->{model} ||= "Maypole::Model::CDBI";
$config->{model}->require;
return $r->view_object->process($r);
}
-sub get_request {
- my $self = shift;
- require Apache; require Apache::Request;
- $self->{ar} = Apache::Request->new(Apache->request);
-}
-
-sub parse_location {
- my $self = shift;
- $self->{path} = $self->{ar}->uri;
- my $loc = $self->{ar}->location;
- $self->{path} =~ s/^$loc//; # I shouldn't need to do this?
- $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;
-
- $self->{params} = { $self->{ar}->content };
- $self->{query} = { $self->{ar}->args };
-}
-
sub is_applicable {
my $self = shift;
my $config = $self->config;
sub authenticate { return OK }
-1;
-
=head1 NAME
Maypole - MVC web application framework
C<http://www.perl.com/pub/a/2003/07/15/nocode.html> is a great
introduction to the process we're trying to automate.
+=head1 USING MAYPOLE
+
+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.
+
+If you are implementing Maypole subclasses, you need to provide at least
+the C<get_request> and C<parse_location> methods. See the
+L<Maypole::Workflow> documentation for what these are expected to do.
+
+=cut
+
+sub get_request { die "Do not use Maypole directly; use Apache::MVC or similar" }
+sub parse_location { die "Do not use Maypole directly; use Apache::MVC or similar" }
+
=head1 AUTHOR
Simon Cozens, C<simon@cpan.org>
=head1 LICENSE
You may distribute this code under the same terms as Perl itself.
+
+=cut
+
+1;
+