X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole.pm;h=858c1eb608aa1dfa264b5e1206dedbad78399e9a;hb=3ed98309a0852fc198f9e4d0e6f70c5510c8282f;hp=4633b1f2a508f114d528d1eb03db3b65dedaa4cb;hpb=7249c53d755f2eb5b8b5bb471ff49b8dd6f3dbf0;p=maypole.git diff --git a/lib/Maypole.pm b/lib/Maypole.pm index 4633b1f..858c1eb 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -3,6 +3,7 @@ use base qw(Class::Accessor::Fast Class::Data::Inheritable); use UNIVERSAL::require; use strict; use warnings; +use Data::Dumper; use Maypole::Config; use Maypole::Constants; use Maypole::Headers; @@ -254,7 +255,7 @@ Some packages respond to higher debug levels, try increasing it to 2 or 3. =cut -sub debug { 0 } +sub debug { 1 } =item config @@ -444,8 +445,9 @@ sub handler : method { # initialise the request $self->headers_out(Maypole::Headers->new); $self->get_request($req); + $self->parse_location; - + # hook useful for declining static requests e.g. images, or perhaps for # sanitizing request parameters $self->status(Maypole::Constants::OK()); # set the default @@ -459,6 +461,7 @@ sub handler : method { $self->get_user; my $status = $self->handler_guts; + return $status unless $status == OK; # TODO: require send_output to return a status code @@ -558,7 +561,9 @@ sub handler_guts $self->__load_request_model; my $applicable = $self->is_model_applicable == OK; - + + warn "applicable : $applicable"; + $self->__setup_plain_template unless $applicable; my $status; @@ -582,7 +587,7 @@ sub handler_guts $self->view_object->error( $self, "Got unexpected status $status from calling authentication" ); } - + return $status unless $status == OK; # We run additional_data for every request @@ -607,13 +612,21 @@ sub handler_guts # less frequent path - perhaps output has been set to an error message return OK if $self->output; + +# warn "output before processing view : ", $self->output; # normal path - no output has been generated yet my $processed_view_ok = $self->__call_process_view; + warn "output after processing view : ", $self->output; + + warn "error after processing view : ", $self->{error}; + $self->{content_type} ||= $self->__get_mime_type(); $self->{document_encoding} ||= "utf-8"; + warn "made it to end, processed_view_ok : $processed_view_ok"; + return $processed_view_ok; } @@ -626,11 +639,14 @@ my %filetypes = ( sub __get_mime_type { my $self = shift; - my $type; + my $type = 'text/html'; if ($self->path =~ m/.*\.(\w{3,4})$/) { $type = $filetypes{$1}; } else { - $type = $mmagic->checktype_contents($self->output); + my $output = $self->output; + if (defined $output) { + $type = $mmagic->checktype_contents($output); + } } return $type; } @@ -660,27 +676,24 @@ sub __setup_plain_template # The model has been processed or skipped (if is_applicable returned false), # any exceptions have been handled, and there's no content in $self->output -sub __call_process_view -{ - my ($self) = @_; - - my $status; - - eval { $status = $self->view_object->process($self) }; - - if ( my $error = $@ ) - { - $status = $self->call_exception($error, "view"); - - if ( $status != OK ) - { - warn "caught view error: $error" if $self->debug; - return $self->debug ? - $self->view_object->error($self, $error) : ERROR; - } +sub __call_process_view { + my ($self) = @_; + + my $status = eval { $self->view_object->process($self) }; + + my $error = $@ || $self->{error}; + + if ( $error ) { + $status = $self->call_exception($error, "view"); + + if ( $status != OK ) { + warn "caught view error: $error" if $self->debug; + return $self->debug ? + $self->view_object->error($self, $error) : ERROR; } - - return $status; + } + + return $status; } =item get_request @@ -1437,8 +1450,7 @@ L, L, L. =head1 AUTHOR -Maypole is currently maintained by Aaron Trevena, David Baird, Dave Howorth and -Peter Speltz. +Maypole is currently maintained by Aaron Trevena. =head1 AUTHOR EMERITUS