]> 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 fedd3e5af00af2e0d671cefae041f808db8f7c60..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 {