]> git.decadent.org.uk Git - maypole.git/commitdiff
Add refactored CGI::Maypole to the mix.
authorSimon Cozens <simon@simon-cozens.org>
Fri, 2 Apr 2004 12:31:04 +0000 (12:31 +0000)
committerSimon Cozens <simon@simon-cozens.org>
Fri, 2 Apr 2004 12:31:04 +0000 (12:31 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@111 48953598-375a-da11-a14b-00016c27c3ee

lib/CGI/Maypole.pm [new file with mode: 0644]
lib/Maypole.pm

diff --git a/lib/CGI/Maypole.pm b/lib/CGI/Maypole.pm
new file mode 100644 (file)
index 0000000..0426f5a
--- /dev/null
@@ -0,0 +1,78 @@
+package CGI::Maypole;
+use base 'Maypole';
+
+use strict;
+use warnings;
+our $VERSION = "0.3";
+
+sub run {
+       my $self = shift;
+       return $self->handler();
+}
+
+sub get_request {
+       require CGI::Simple;
+       shift->{cgi} = CGI::Simple->new();
+}
+
+sub parse_location {
+     my $self = shift;
+     $self->{path} = $self->{cgi}->url(-absolute=>1, -path_info=>1);
+     my $loc = $self->{cgi}->url(-absolute=>1);
+     no warnings 'uninitialized';
+     $self->{path} =~ s/^($loc)?\///;
+     $self->parse_path;
+     $self->{params} = { $self->{cgi}->Vars };
+     $self->{query}  = { $self->{cgi}->Vars };
+}
+
+sub send_output {
+     my $r = shift;    
+       print $r->{cgi}->header(-type => $r->{content_type},
+                                         -content_length => length $r->{output},
+                                         );
+     print $r->{output};
+}
+
+sub get_template_root {
+     my $r = shift;
+     $r->{cgi}->document_root . "/". $r->{cgi}->url(-relative=>1);
+}
+
+
+1;
+
+=head1 NAME
+
+CGI::Maypole - CGI-based front-end to Maypole
+
+=head1 SYNOPSIS
+
+     package BeerDB;
+     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]];
+     # Now set up your database:
+     # has-a relationships
+     # untaint columns
+
+     1;
+
+     ## example beer.cgi:
+       
+     #!/usr/bin/perl -w
+     use strict;
+     use BeerDB;
+     BeerDB->run();
+
+=head1 DESCRIPTION
+
+This is a handler for Maypole which will use the CGI instead of Apache's
+C<mod_perl> 1.x. This handler can also be used for Apache 2.0.
+
+=head1 AUTHORS
+
+Dave Ranney C<dave@sialia.com>
+
+Simon Cozens C<simon@cpan.org>
index fd11fbe9d3862760bfeacd4398ca5604bb1218f0..fedd3e5af00af2e0d671cefae041f808db8f7c60 100644 (file)
@@ -243,7 +243,8 @@ introduction to the process we're trying to automate.
 You should probably not use Maypole directly. Maypole is an abstract
 class which does not specify how to communicate with the outside world.
 The most popular subclass of Maypole is L<Apache::MVC>, which interfaces
-the Maypole framework to Apache mod_perl.
+the Maypole framework to Apache mod_perl; another important one is
+L<CGI::Maypole>.
 
 If you are implementing Maypole subclasses, you need to provide at least
 the C<parse_location> and C<send_output> methods. You may also want to
@@ -263,6 +264,8 @@ There's more documentation, examples, and a wiki at the Maypole web site:
 
 http://maypole.simon-cozens.org/
 
+L<Apache::MVC>, L<CGI::Maypole>.
+
 =head1 AUTHOR
 
 Simon Cozens, C<simon@cpan.org>