- $self->{path} ||= "frontpage";
- my @pi = split /\//, $self->{path};
- shift @pi while @pi and !$pi[0];
- $self->{table} = shift @pi;
- $self->{action} = shift @pi;
- $self->{args} = \@pi;
-
- $self->{params} = { $self->{ar}->content };
- $self->{query} = { $self->{ar}->args };
+ $self->parse_path;
+ $self->parse_args;
+}
+
+sub parse_args {
+ my $self = shift;
+ $self->{params} = { $self->_mod_perl_args( $self->{ar} ) };
+ $self->{query} = { $self->_mod_perl_args( $self->{ar} ) };
+}
+
+sub send_output {
+ my $r = shift;
+ $r->{ar}->content_type(
+ $r->{content_type} =~ m/^text/
+ ? $r->{content_type} . "; charset=" . $r->{document_encoding}
+ : $r->{content_type}
+ );
+ $r->{ar}->headers_out->set(
+ "Content-Length" => do { use bytes; length $r->{output} }
+ );
+ APACHE2 || $r->{ar}->send_http_header;
+ $r->{ar}->print( $r->{output} );
+}
+
+sub get_template_root {
+ my $r = shift;
+ $r->{ar}->document_root . "/" . $r->{ar}->location;
+}
+
+sub _mod_perl_args {
+ my ( $self, $apr ) = @_;
+ my %args;
+ foreach my $key ( $apr->param ) {
+ my @values = $apr->param($key);
+ $args{$key} = @values == 1 ? $values[0] : \@values;
+ }
+ return %args;