]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole.pm
fixed bug 22899 + broken link in manual contents, removed some warnings, fixed DFV...
[maypole.git] / lib / Maypole.pm
index 858437e39fadc75d1a4ab6ea3543ab5be58f513d..bc41335cd5758aa76565f18c8670f29f2f5acff9 100644 (file)
@@ -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