]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole/Application.pm
Moved the BeerDB example to Maypole.pm
[maypole.git] / lib / Maypole / Application.pm
index a0e49bc5fbacf33164441c4ed5c08e769dbe8ec9..6804cdead609ff0eb4e9c1ca8ff05df88dfec155 100644 (file)
@@ -6,11 +6,11 @@ use UNIVERSAL::require;
 use Maypole;
 use Maypole::Config;
 
-our @ISA;
 our $VERSION = '2.11';
 
 sub import {
-    my ( $class, @plugins ) = @_;
+    shift; # not interested in this - we manipulate the caller's @ISA directly
+    my @plugins = @_;
     my $caller = caller(0);
     
     my $frontend = 'Apache::MVC' if $ENV{MOD_PERL};
@@ -26,8 +26,6 @@ sub import {
     $frontend ||= 'CGI::Maypole';
     
     $frontend->require or die "Loading $frontend frontend failed: $@";
-    # inheritance may already be set up in a multi-app mod_perl environment
-    push @ISA, $frontend unless __PACKAGE__->isa( $frontend );
 
     my $autosetup=0;
     my $autoinit=0;
@@ -57,7 +55,7 @@ sub import {
         }
     }
     no strict 'refs';
-    push @{"${caller}::ISA"}, @plugin_modules, $class;
+    push @{"${caller}::ISA"}, @plugin_modules, $frontend;
     $caller->config(Maypole::Config->new);
     $caller->config->masonx({}) if $masonx;
     $caller->setup() if $autosetup;
@@ -86,8 +84,18 @@ Maypole::Application - Universal Maypole Frontend
 
 This is a universal frontend for mod_perl1, mod_perl2, HTML::Mason and CGI.
 
-You can omit the Maypole::Plugin:: prefix from plugins.
-So Maypole::Plugin::Config::YAML becomes Config::YAML.
+Automatically determines the appropriate frontend for your environment (unless
+you want to use L<MasonX::Maypole>, in which case include C<MasonX> in the
+arguments).
+
+Loads plugins supplied in the C<use> statement. 
+
+Responds to flags supplied in the C<use> statement. 
+
+Initializes the application's configuration object. 
+
+You can omit the Maypole::Plugin:: prefix from plugins. So
+Maypole::Plugin::Config::YAML becomes Config::YAML.
 
     use Maypole::Application qw(Config::YAML);
 
@@ -95,10 +103,23 @@ You can also set special flags like -Setup, -Debug and -Init.
 
     use Maypole::Application qw(-Debug Config::YAML -Setup);
 
-The position of plugins and flags in the chain is important,
-because they are loaded/executed in the same order they appear.
+The position of plugins in the chain is important, because they are
+loaded/executed in the same order they appear.
+
+=head1 FRONTEND
+
+Under mod_perl (1 or 2), selects L<Apache::MVC>. 
 
-=head2 -Setup
+Otherwise, selects L<CGI::Maypole>.
+
+If C<MasonX> is specified, sets L<MasonX::Maypole> as the frontend. This
+currently also requires a mod_perl environment.
+
+=head1 FLAGS
+
+=over
+
+=item -Setup
 
     use Maypole::Application qw(-Setup);
 
@@ -111,7 +132,7 @@ Note that no options are passed to C<setup()>. You must ensure that the
 required model config parameters are set in C<MyApp-E<gt>config>. See
 L<Maypole::Config> for more information.
 
-=head2 -Init
+=item -Init
 
     use Maypole::Application qw(-Setup -Init);
     
@@ -130,7 +151,7 @@ Note that you must supply all the config data to your app before calling
 C<setup> and C<init>, probably by using one of the C<Maypole::Plugin::Config::*> 
 plugins.
 
-=head2 -Debug
+=item -Debug
 
     use Maypole::Application qw(-Debug);
 
@@ -141,6 +162,8 @@ is equivalent to
 
 You can specify a higher debug level by saying C<-Debug2> etc. 
 
+=back
+
 =head1 AUTHOR
 
 Sebastian Riedel, C<sri@oook.de>