]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/CGI/Maypole.pm
Added support for extra_headers (se Maypole pod)
[maypole.git] / lib / CGI / Maypole.pm
index 7da043c4665e7523836391af557f36199e9b2631..88abc3cebf7218ed1f8c419937834ca04c96d5bd 100644 (file)
@@ -3,8 +3,9 @@ use base 'Maypole';
 
 use strict;
 use warnings;
+use CGI::Simple;
 
-our $VERSION = '2.04';
+our $VERSION = '2.05';
 
 sub run {
     my $self = shift;
@@ -12,7 +13,6 @@ sub run {
 }
 
 sub get_request {
-    require CGI::Simple;
     shift->{cgi} = CGI::Simple->new();
 }
 
@@ -21,6 +21,7 @@ sub parse_location {
     $self->{path} = $self->{cgi}->url( -absolute => 1, -path_info => 1 );
     my $loc = $self->{cgi}->url( -absolute => 1 );
     no warnings 'uninitialized';
+    $self->{path} .= '/' if $self->{path} eq $loc;
     $self->{path} =~ s/^($loc)?\///;
     $self->parse_path;
     $self->parse_args;
@@ -39,10 +40,15 @@ sub parse_args {
 
 sub send_output {
     my $r = shift;
+    my %processed = map { "-".$_,$r->{extra_headers}{$_} } 
+                   keys %{$r->{extra_headers}};
     print $r->{cgi}->header(
         -type           => $r->{content_type},
         -charset        => $r->{document_encoding},
-        -content_length => length $r->{output},
+        -content_length => do { use bytes; length $r->{output} }, 
+       %processed 
+       ? %processed
+       : {}
     );
     print $r->{output};
 }
@@ -61,10 +67,11 @@ CGI::Maypole - CGI-based front-end to Maypole
 =head1 SYNOPSIS
 
      package BeerDB;
-     use base 'CGI::Maypole;
+     use base 'CGI::Maypole';
      BeerDB->setup("dbi:mysql:beerdb");
      BeerDB->config->uri_base("http://your.site/cgi-bin/beer.cgi/");
      BeerDB->config->display_tables([qw[beer brewery pub style]]);
+     BeerDB->config->template_root("/var/www/beerdb/");
      # Now set up your database:
      # has-a relationships
      # untaint columns
@@ -72,12 +79,15 @@ CGI::Maypole - CGI-based front-end to Maypole
      1;
 
      ## example beer.cgi:
-       
+
      #!/usr/bin/perl -w
      use strict;
      use BeerDB;
      BeerDB->run();
 
+Now to access the beer database, type this URL into your browser:
+http://your.site/cgi-bin/beer.cgi/frontpage
+
 =head1 DESCRIPTION
 
 This is a handler for Maypole which will use the CGI instead of Apache's