package Maypole;
-use Class::C3;
use base qw(Class::Accessor::Fast Class::Data::Inheritable);
use UNIVERSAL::require;
use strict;
__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() );
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
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
$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;
}
# 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;
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),
$self->params->{$key} = $new_val;
}
- return ref $val ? @$val : ($val) if wantarray;
+ return (ref $val eq 'ARRAY') ? @$val : ($val) if wantarray;
- return ref $val ? $val->[0] : $val;
+ return (ref $val eq 'ARRAY') ? $val->[0] : $val;
}