]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole.pm
Add constants; refactor View classes and tests to use them; refactor out handler_guts
[maypole.git] / lib / Maypole.pm
index fd11fbe9d3862760bfeacd4398ca5604bb1218f0..46fb7d4ac953451059e795351d89fbbc3652431a 100644 (file)
@@ -10,10 +10,7 @@ __PACKAGE__->mk_accessors ( qw( ar params query objects model_class
 args action template ));
 __PACKAGE__->config({});
 __PACKAGE__->init_done(0);
-
-# Ape Apache::Constants interface
-use constant OK => 0;
-use constant DECLINED => -1;
+use Maypole::Constants;
 
 sub debug { 0 }
 
@@ -57,7 +54,17 @@ sub handler {
     my $r = bless { config => $class->config }, $class;
     $r->get_request();
     $r->parse_location();
+    my $status = $r->handler_guts();
+    if ($status != OK) {
+        warn "NOT OK!";
+        return $status;
+    }
+    $r->send_output;
+    return $status;
+}
 
+sub handler_guts {
+    my $r = shift;
     $r->model_class($r->config->{model}->class_of($r, $r->{table}));
     my $status = $r->is_applicable;
     if ($status == OK) { 
@@ -77,12 +84,9 @@ sub handler {
         $r->{path} =~ s{/}{}; # De-absolutify
         $r->template($r->{path});
     }
-    $status = OK;
     if (!$r->{output}) { # You might want to do it yourself
-        $status = $r->view_object->process($r);
-    }
-    $r->send_output;
-    return $status;
+        return $r->view_object->process($r);
+    } else { return OK; }
 }
 
 sub is_applicable {
@@ -243,7 +247,8 @@ introduction to the process we're trying to automate.
 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
@@ -263,6 +268,8 @@ 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>