fix to correct problem with LocationMatch and regex based Location directives in apache config.
change to view::base to only call display_columns, stringify_columns, to_cgi if model class can
changed template path to only look for custom, factory, etc on first/only path provided
+ fix to redirect_request
+ Fixed typo in _do_update_or_create (bug 26495)
2.111 Mon 30 April 2007
- forked - see 2.111 changelog
# Reconstruct the request headers
$self->headers_in(Maypole::Headers->new);
+
my %headers;
if ($MODPERL2) { %headers = %{$self->ar->headers_in};
} else { %headers = $self->ar->headers_in; }
$self->headers_in->set($_, $headers{$_});
}
+ $self->preprocess_location();
+
my $path = $self->ar->uri;
my $base = URI->new($self->config->uri_base);
my $loc = $base->path;
=cut
-sub parse_path
-{
+sub parse_path {
my ($self) = @_;
# Previous versions unconditionally set table, action and args to whatever
=item preprocess_path
Sometimes when you don't want to rewrite or over-ride parse_path but
-want to rewrite urls or extract data from them before it is parsed.
+want to rewrite urls or extract data from them before it is parsed,
+the preprocess_path/location methods allow you to munge paths and urls
+before maypole maps them to actions, classes, etc.
This method is called after parse_location has populated the request
information and before parse_path has populated the model and action
information, and is passed the request object.
You can set action, args or table in this method and parse_path will
-then leave those values in place or populate them if not present
+then leave those values in place or populate them based on the current
+value of the path attribute if they are not present.
=cut
sub preprocess_path { };
+=item preprocess_location
+
+This method is called at the start of parse_location, after the headers in, and allows you
+to rewrite the url used by maypole, or dynamically set configuration
+like the base_uri based on the hostname or path.
+
+=cut
+
+sub preprocess_location { };
+
=item make_path( %args or \%args or @args )
This is the counterpart to C<parse_path>. It generates a path to use
=cut
+
sub make_path
{
my $r = shift;
# Need to be very careful here.
my $tt = Template->new;
unless (ref $r->{config}) {
- warn "no config for this request\n";
+ $r->warn("no config for this request");
$error .= '<br> There was a problem finding configuration for this request';
$r->{config} ||= {};
}