]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole.pm
some fixes for Maypole::Config, Maypole::Model::Base and
[maypole.git] / lib / Maypole.pm
index 4c66a6729246c8baf84d420f461a5dd3bac42f4c..bcd0b3ab0d6ff7f6bd12f858b3ab40bab1276e2f 100644 (file)
@@ -1,13 +1,12 @@
 package Maypole;
 use base qw(Class::Accessor::Fast Class::Data::Inheritable);
-use attributes ();
 use UNIVERSAL::require;
 use strict;
 use warnings;
 use Maypole::Config;
 use Maypole::Constants;
 
-our $VERSION = '2.0';
+our $VERSION = '2.05';
 
 __PACKAGE__->mk_classdata($_) for qw( config init_done view_object );
 __PACKAGE__->mk_accessors(
@@ -49,7 +48,7 @@ sub init {
     $config->view->require;
     die "Couldn't load the view class " . $config->view . ": $@" if $@;
     $config->display_tables
-      || $config->display_tables( [ $class->config->tables ] );
+      || $config->display_tables( $class->config->tables );
     $class->view_object( $class->config->view->new );
     $class->init_done(1);
 
@@ -60,7 +59,7 @@ sub handler {
     # See Maypole::Workflow before trying to understand this.
     my ( $class, $req ) = @_;
     $class->init unless $class->init_done;
-    my $r = bless { config => $class->config }, $class;
+    my $r = bless { template_args => {}, config => $class->config }, $class;
     $r->get_request($req);
     $r->parse_location();
     my $status = $r->handler_guts();
@@ -134,7 +133,8 @@ sub is_applicable {
       . "Available tables are: "
       . join( ",", @{ $config->{display_tables} } )
       if $self->debug
-      and not $config->ok_tables->{ $self->{table} };
+      and not $config->ok_tables->{ $self->{table} }
+      and $self->{action};
     return DECLINED() unless exists $config->ok_tables->{ $self->{table} };
 
     # Is it public?
@@ -303,6 +303,13 @@ You should only need to define this method if you are writing a new
 Maypole
 backend. Otherwise, see L<Maypole::Config/"template_root">
 
+=head3 get_request
+
+You should only need to define this method if you are writing a new
+Maypole backend. It should return something that looks like an Apache
+or CGI request object, it defaults to blank.
+
+
 =head3 is_applicable
 
 Returns a Maypole::Constant to indicate whether the request is valid.
@@ -387,6 +394,33 @@ Get/set the output content type. Default: text/html
 
 Sends the output and additional headers to the user.
 
+=head3 call_authenticate
+
+This method first checks if the relevant model class
+can authenticate the user, or falls back to the default
+authenticate method of your Maypole application.
+
+
+=head3 call_exception
+
+This model is called to catch exceptions, first after authenticate
+,then after processing the model class, and finally to check for
+exceptions from the view class.
+
+This method first checks if the relevant model class
+can handle exceptions the user, or falls back to the default
+exception method of your Maypole application.
+
+
+=head3 handler
+
+This method sets up the class if it's not done yet, sets some
+defaults and leaves the dirty work to handler_guts.
+
+=head3 handler_guts
+
+This is the core of maypole. You don't want to know.
+
 =head1 SEE ALSO
 
 There's more documentation, examples, and a wiki at the Maypole web
@@ -407,8 +441,8 @@ Simon Cozens, C<simon@cpan.org>
 =head1 THANKS TO
 
 Danijel Milicevic, Dave Slack, Jesse Sheidlower, Jody Belka, Marcus Ramberg,
-Mickael Joanne, Simon Flack, Veljko Vidovic and all the others who've
-helped.
+Mickael Joanne, Randal Schwartz, Simon Flack, Steve Simms, Veljko Vidovic
+and all the others who've helped.
 
 =head1 LICENSE