]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole.pm
fixed MANIFEST to include Maypole::HTTPD
[maypole.git] / lib / Maypole.pm
index bc41335cd5758aa76565f18c8670f29f2f5acff9..596479e21ec8f2b57cbe4dd20dc1957c2385ad18 100644 (file)
@@ -184,7 +184,8 @@ __PACKAGE__->mk_classdata($_) for qw( config init_done view_object model_classes
 __PACKAGE__->mk_accessors(
     qw( params query objects model_class template_args output path
         args action template error document_encoding content_type table
-        headers_in headers_out stash status parent build_form_elements)
+        headers_in headers_out stash status parent build_form_elements
+        user session)
 );
 
 __PACKAGE__->config( Maypole::Config->new() );
@@ -435,8 +436,10 @@ sub handler : method  {
   return $self->status unless $self->status == Maypole::Constants::OK();
   die "status undefined after start_request_hook()" unless defined
     $self->status;
-  $self->get_session;
-  $self->get_user;
+
+  $self->session($self->get_session);
+  $self->user($self->get_user);
+
   my $status = $self->handler_guts;
   return $status unless $status == OK;
   # TODO: require send_output to return a status code
@@ -459,7 +462,7 @@ to call those actions. You may pass a query string in the usual URL style.
 You should not fully qualify the Maypole URLs.
 
 Note: any HTTP POST or URL parameters passed to the parent are not passed to the
-component sub-request, only what is included in the url passed as an argyument
+component sub-request, only what is included in the url passed as an argument
 to the method
 
 =cut
@@ -474,7 +477,9 @@ sub component {
     $self->args([]);
     $self->objects([]);
 
-    $self->get_user;
+    $self->session($self->get_session);
+    $self->user($self->get_user);
+
     my $url = URI->new($path);
     $self->{path} = $url->path;
     $self->parse_path;
@@ -582,7 +587,11 @@ sub handler_guts {
   }
 
   # less frequent path - perhaps output has been set to an error message
-  return OK if $self->output;
+  if ($self->output) {
+    $self->{content_type}      ||= $self->__get_mime_type();
+    $self->{document_encoding} ||= "utf-8";
+    return OK;
+  }
 
   # normal path - no output has been generated yet
   my $processed_view_ok = $self->__call_process_view;
@@ -636,15 +645,16 @@ sub __setup_plain_template
     my ($self) = @_;
 
     # It's just a plain template
+    $self->build_form_elements(0);
     $self->model_class(undef);
 
-    # FIXME: this is likely to be redundant and is definately causing problems.
-
-    my $path = $self->path;
-    $path =~ s{/$}{};    # De-absolutify
-    $self->path($path);
-
-    $self->template($self->path);
+    unless ($self->template) {
+      # FIXME: this is likely to be redundant and is definately causing problems.
+      my $path = $self->path;
+      $path =~ s{/$}{};    # De-absolutify
+      $self->path($path);
+      $self->template($self->path);
+    }
 }
 
 # The model has been processed or skipped (if is_applicable returned false),