From 874ed7ac5abb5f23093620925134ffccda52b840 Mon Sep 17 00:00:00 2001 From: Simon Cozens Date: Fri, 2 Apr 2004 12:31:04 +0000 Subject: [PATCH] Add refactored CGI::Maypole to the mix. git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@111 48953598-375a-da11-a14b-00016c27c3ee --- lib/CGI/Maypole.pm | 78 ++++++++++++++++++++++++++++++++++++++++++++++ lib/Maypole.pm | 5 ++- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 lib/CGI/Maypole.pm diff --git a/lib/CGI/Maypole.pm b/lib/CGI/Maypole.pm new file mode 100644 index 0000000..0426f5a --- /dev/null +++ b/lib/CGI/Maypole.pm @@ -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 1.x. This handler can also be used for Apache 2.0. + +=head1 AUTHORS + +Dave Ranney C + +Simon Cozens C diff --git a/lib/Maypole.pm b/lib/Maypole.pm index fd11fbe..fedd3e5 100644 --- a/lib/Maypole.pm +++ b/lib/Maypole.pm @@ -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, which interfaces -the Maypole framework to Apache mod_perl. +the Maypole framework to Apache mod_perl; another important one is +L. If you are implementing Maypole subclasses, you need to provide at least the C and C 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, L. + =head1 AUTHOR Simon Cozens, C -- 2.39.5