X-Git-Url: https://git.decadent.org.uk/gitweb/?p=maypole.git;a=blobdiff_plain;f=lib%2FMaypole.pm;h=bc41335cd5758aa76565f18c8670f29f2f5acff9;hp=858437e39fadc75d1a4ab6ea3543ab5be58f513d;hb=2c5d6782f89dc1532398b1b79c8f67b982c758ac;hpb=8e96ebeddb37ef30d2e215f935e136a9170576cd diff --git a/lib/Maypole.pm b/lib/Maypole.pm index 858437e..bc41335 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -467,12 +467,12 @@ to the method sub component { my ( $r, $path ) = @_; my $self = bless { parent => $r, config => $r->{config}, } , ref $r; - $self->stash({}); - $self->params({}); - $self->query({}); - $self->template_args({}); - $self->args([]); - $self->objects([]); + $self->stash({}); + $self->params({}); + $self->query({}); + $self->template_args({}); + $self->args([]); + $self->objects([]); $self->get_user; my $url = URI->new($path); @@ -538,66 +538,59 @@ request/response and defines the workflow within Maypole. =cut # The root of all evil -sub handler_guts -{ - my ($self) = @_; - $self->build_form_elements(1); - $self->__load_request_model; +sub handler_guts { + my ($self) = @_; + $self->build_form_elements(1) unless (defined ($self->config->build_form_elements) && $self->config->build_form_elements == 0); + $self->__load_request_model; - my $applicable = $self->is_model_applicable == OK; + my $applicable = $self->is_model_applicable == OK; - my $status; + my $status; - # handle authentication - eval { $status = $self->call_authenticate }; - if ( my $error = $@ ) - { - $status = $self->call_exception($error, "authentication"); - if ( $status != OK ) - { - warn "caught authenticate error: $error"; - return $self->debug ? - $self->view_object->error($self, $error) : ERROR; - } - } - if ( $self->debug and $status != OK and $status != DECLINED ) - { - $self->view_object->error( $self, - "Got unexpected status $status from calling authentication" ); + # handle authentication + eval { $status = $self->call_authenticate }; + if ( my $error = $@ ) { + $status = $self->call_exception($error, "authentication"); + if ( $status != OK ) { + $self->warn("caught authenticate error: $error"); + return $self->debug ? + $self->view_object->error($self, $error) : ERROR; } + } + if ( $self->debug and $status != OK and $status != DECLINED ) { + $self->view_object->error( $self, + "Got unexpected status $status from calling authentication" ); + } - return $status unless $status == OK; - - # We run additional_data for every request - $self->additional_data; + return $status unless $status == OK; - if ($applicable) { - eval { $self->model_class->process($self) }; - if ( my $error = $@ ) - { - $status = $self->call_exception($error, "model"); - if ( $status != OK ) - { - warn "caught model error: $error"; - return $self->debug ? - $self->view_object->error($self, $error) : ERROR; - } - } - } else { - $self->__setup_plain_template; + # We run additional_data for every request + $self->additional_data; + + if ($applicable) { + eval { $self->model_class->process($self) }; + if ( my $error = $@ ) { + $status = $self->call_exception($error, "model"); + if ( $status != OK ) { + $self->warn("caught model error: $error"); + return $self->debug ? + $self->view_object->error($self, $error) : ERROR; + } } + } else { + $self->__setup_plain_template; + } - # less frequent path - perhaps output has been set to an error message - return OK if $self->output; - - # normal path - no output has been generated yet - my $processed_view_ok = $self->__call_process_view; + # less frequent path - perhaps output has been set to an error message + return OK if $self->output; - $self->{content_type} ||= $self->__get_mime_type(); - $self->{document_encoding} ||= "utf-8"; + # normal path - no output has been generated yet + my $processed_view_ok = $self->__call_process_view; + $self->{content_type} ||= $self->__get_mime_type(); + $self->{document_encoding} ||= "utf-8"; - return $processed_view_ok; + return $processed_view_ok; } my %filetypes = ( @@ -629,8 +622,8 @@ sub __load_request_model if ( eval {$mclass->isa('Maypole::Model::Base')} ) { $self->model_class( $mclass ); } - elsif ($self->debug) { - warn "***Warning: No $mclass class appropriate for model. @_"; + elsif ($self->debug > 1) { + $self->warn("***Warning: No $mclass class appropriate for model. @_"); } } @@ -644,11 +637,13 @@ sub __setup_plain_template # It's just a plain template $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); } @@ -692,8 +687,11 @@ sub warn { } $r->build_form_elements(0); -Specify whether to build HTML form elements and populate -the cgi element of classmetadata. +Specify (in an action) whether to build HTML form elements and populate +the cgi element of classmetadata in the view. + +You can set this globally using the accessor of the same name in Maypole::Config, +this method allows you to over-ride that setting per action. =cut @@ -1335,13 +1333,13 @@ sub redirect_request { die "redirect_request is a virtual method. Do not use Maypole directly; use Apache::MVC or similar"; } -=item redirect_internal_request - -=cut - -sub redirect_internal_request { - -} +# =item redirect_internal_request +# +# =cut +# +# sub redirect_internal_request { +# +# } =item make_random_id