=head1 NAME

Catalyst::Manual::Plugins - Catalyst Plugins (and Components)

=head1 DESCRIPTION

This section lists the some of the plugins and components that are
available to extend the runtime functionality of Catalyst. Most plugins
are not distributed with Catalyst but should be available from CPAN.
They typically require additional modules from CPAN.

This list may well be outdated by the time you read this and some
plugins may be deprecated or now part of core L<Catalyst>. Be sure to
check the Catalyst::Plugin namespace for additional plugins and consult
the mailing list ( L<http://dev.catalyst.perl.org/wiki/Support> ) for
advice on the current status or preferred use of your chosen
plugin/framework.

=head1 PLUGINS

=head2 L<Catalyst::Plugin::Account::AutoDiscovery>

Provides Account Auto-Discovery for Catalyst.

=head2 L<Catalyst::Plugin::Acme::Scramble>

Implements a potent meme about how easily we can read scrambled text if
the first and last letters remain constant. Operates on text/plain and
text/html served by your Catalyst application.

=head2 L<Catalyst::Plugin::Alarm>

=head2 L<Catalyst::Plugin::AtomPP>

Allows you to dispatch AtomPP methods.

=head2 L<Catalyst::Plugin::AtomServer>

A plugin that implements the necessary bits to make it easy to build an
Atom API server for any Catalyst-based application.

=head2 L<Catalyst::Plugin::Authentication>

An infrastructure plugin for the Catalyst authentication framework. Now the
recommended way to do any form of Authentication.

=head2 L<Catalyst::Plugin::Authentication::Credential::Atom>

L<Catalyst::Plugin::Authentication::Credential::Atom> is a plugin which
implements WSSE and Basic authentication for Catalyst applications using 
L<Catalyst::Plugin::AtomServer>

=head2 L<Catalyst::Plugin::Authentication::Credential::CHAP>

=head2 L<Catalyst::Plugin::Authentication::Credential::Flickr>

Provides authentication via Flickr, using its API.

=head2 L<Catalyst::Plugin::Authentication::Credential::Hatena>

=head2 L<Catalyst::Plugin::Authentication::Credential::HTTP>

Implements HTTP Basic authentication for Catalyst.

=head2 L<Catalyst::Plugin::Authentication::Credential::JugemKey>

=head2 L<Catalyst::Plugin::Authentication::Credential::PAM>

=head2 L<Catalyst::Plugin::Authentication::Credential::Password>

Takes a username (or userid) and a password, and tries various methods of 
comparing a password based on what the chosen store's user objects support.
Part of the Authentication Framework L<Catalyst::Plugin::Authentication>.

=head2 L<Catalyst::Plugin::Authentication::Credential::TypeKey>

Integrates L<Authen::TypeKey> with L<Catalyst::Plugin::Authentication>.

=head2 L<Catalyst::Plugin::Authentication::OpenID>

L<Catalyst::Plugin::Authentication::OpenID> is a plugin that implements 
support for OpenID authentication. For more information on OpenID, take 
a look at L<http://www.openid.net/>.

=head2 L<Catalyst::Plugin::Authentication::Store>

The core authentication store documentation.

=head2 L<Catalyst::Plugin::Authentication::Store::DBIC>

Does authentication and authorization against a L<DBIx::Class> or 
L<Class::DBI> model.

=head2 L<Catalyst::Plugin::Authentication::Store::Htpasswd>

Uses L<Authen::Htpasswd> to let your application use C<.htpasswd> files for its 
authentication storage.

=head2 L<Catalyst::Plugin::Authentication::Store::HTTP>

=head2 L<Catalyst::Plugin::Authentication::Store::LDAP>

Authenticates users using an LDAP server.

=head2 L<Catalyst::Plugin::Authentication::Store::Minimal>

Lets you create a very quick and dirty user database in your application's 
config hash. Great for getting up and running quickly.

=head2 L<Catalyst::Plugin::Authentication::User::Hash>

An easy authentication user object based on hashes. 
See L<Catalyst::Plugin::Authentication::Store::Minimal> for more info.

=head2 L<Catalyst::Plugin::Authorization::ACL>

This module provides Access Control List style path protection, with arbitrary 
rules for L<Catalyst> applications. It operates only on the Catalyst private 
namespace, at least at the moment.

=head2 L<Catalyst::Plugin::Authorization::Roles>

L<Catalyst::Plugin::Authorization::Roles> provides role based authorization 
for Catalyst based on L<Catalyst::Plugin::Authentication>. 

=head2 L<Catalyst::Plugin::AutoSession>

=head2 L<Catalyst::Plugin::Browser>

Extends L<Catalyst::Request> by adding the capability of browser
detection.  It returns an instance of L<HTTP::BrowserDetect>, which lets
you get information from the client's user agent.

=head2 Catalyst::Plugin::Cache::FastMmap, FileCache, BerkeleyDB, and Memcached

L<Catalyst::Plugin::Cache::FastMmap>,
L<Catalyst::Plugin::Cache::FileCache>,
L<Catalyst::Plugin::Cache::BerkeleyDB>, and
L<Catalyst::Plugin::Cache::Memcached> all provide a cache method
enabling easy access to a shared cache.

=head2 L<Catalyst::Plugin::Captcha>

=head2 L<Catalyst::Plugin::CGI::Untaint>

=head2 L<Catalyst::Plugin::Charsets::Japanese>

=head2 L<Catalyst::Plugin::Compress::Bzip2>

=head2 L<Catalyst::Plugin::Compress::Deflate>

=head2 L<Catalyst::Plugin::Compress::Gzip>

=head2 L<Catalyst::Plugin::Compress::Zlib>

=head2 L<Catalyst::Plugin::ConfigLoader>

Provides a standard method for loading config files. Support
exists for various formats. See
L<Catalyst::Plugin::ConfigLoader::INI>,
L<Catalyst::Plugin::ConfigLoader::JSON>,
L<Catalyst::Plugin::ConfigLoader::Perl>,
L<Catalyst::Plugin::ConfigLoader::XML>, and
L<Catalyst::Plugin::ConfigLoader::YAML>

=head2 L<Catalyst::Plugin::ConfigurablePathTo>

=head2 L<Catalyst::Plugin::Continuation>

=head2 L<Catalyst::Plugin::DateTime>

=head2 L<Catalyst::Plugin::DefaultEnd>

Creates a sane, standard end method for your application.

=head2 L<Catalyst::Plugin::Devel::InPageLogs>

=head2 L<Catalyst::Plugin::Devel::InPageLogs::Log>

=head2 L<Catalyst::Plugin::Dojo>

=head2 L<Catalyst::Plugin::Dumper>

=head2 L<Catalyst::Plugin::Email>

Sends email with L<Email::Send> and L<Email::MIME::Creator>.

=head2 L<Catalyst::Plugin::Email::Japanese>

=head2 L<Catalyst::Plugin::Email::Page>

=head2 L<Catalyst::Plugin::EmailValid>

=head2 L<Catalyst::Plugin::FillInForm>

A plugin based on C<HTML::FillInForm>, which describes itself as a module
to automatically insert data from a previous HTML form into the HTML input,
textarea, radio buttons, checkboxes, and select tags.  C<HTML::FillInForm>
is a subclass of C<HTML::Parser> and uses it to parse the HTML and insert
the values into the form tags.

=head2 L<Catalyst::Plugin::Flavour>

=head2 L<Catalyst::Plugin::FormValidator>

A form validator plugin that uses L<Data::FormValidator> to validate and
set up form data from your request parameters. It's a quite thin wrapper
around that module, so most of the relevant information can be found there.

=head2 L<Catalyst::Plugin::FormValidator::Simple>

=head2 L<Catalyst::Plugin::Geography>

Allows you to retrieve various kinds of geographical information. You can
retrieve the country or code from the current user, from a given IP
address, or from a given hostname.

=head2 L<Catalyst::Plugin::Geography::Implementation>

=head2 L<Catalyst::Plugin::HashedCookies>

=head2 L<Catalyst::Plugin::HTML::Scrubber>

=head2 L<Catalyst::Plugin::HTML::Widget>

=head2 L<Catalyst::Plugin::I18N>

An internationalization plugin for Catalyst. Supports C<mo>/C<po> files
and Maketext classes under your application's I18N namespace.

=head2 L<Catalyst::Plugin::JSONRPC>

=head2 L<Catalyst::Plugin::Markdown>

=head2 L<Catalyst::Plugin::Message>

=head2 L<Catalyst::Plugin::MobileAgent>

=head2 L<Catalyst::Plugin::Observe>

Provides the ability to register AOP-like callbacks to specific Engine
events. Subclasses L<Class::Publisher>.

=head2 L<Catalyst::Plugin::OrderedParams>

Adjusts the way that parameters operate, causing them to appear in the same
order they were submitted by the browser. This can be useful for creating
things such as email forms.

=head2 L<Catalyst::Plugin::PageCache>

Helps improve the performance of slow or frequently accessed pages by
caching the entire output of your page. Subsequent requests to the page
will receive the page very quickly from cache.

=head2 L<Catalyst::Plugin::Params::Nested>

=head2 L<Catalyst::Plugin::Params::Nested::Expander>

=head2 L<Catalyst::Plugin::Pluggable>

A plugin for pluggable Catalyst applications.

=head2 L<Catalyst::Plugin::Prototype>

A plugin for the Prototype JavaScript library. This Plugin allows you to
easily implement AJAX functionality without actually knowing Javascript.

=head2 L<Catalyst::Plugin::Redirect>

=head2 L<Catalyst::Plugin::RequestToken>

=head2 L<Catalyst::Plugin::RequireSSL>

Use this if you would like to force visitors to access certain pages using
only SSL mode. An attempt to access the page in non-SSL mode will receive a
redirect into SSL mode. Useful for login pages, shopping carts, user
registration forms, and other sensitive data.

=head2 L<Catalyst::Plugin::Scheduler>

=head2 L<Catalyst::Plugin::Session>

The L<Catalyst::Plugin::Session> series of modules provide an easy way to
include session handling in an application. You can choose from several
different backend storage methods and combine that with your choice of
client-side storage methods.

=head2 L<Catalyst::Plugin::Session::PerUser>

=head2 L<Catalyst::Plugin::Session::State>

=head2 L<Catalyst::Plugin::Session::State::Cookie>

=head2 L<Catalyst::Plugin::Session::State::URI>

=head2 L<Catalyst::Plugin::Session::Store>

=head2 L<Catalyst::Plugin::Session::Store::CDBI>

=head2 L<Catalyst::Plugin::Session::Store::DBI>

=head2 L<Catalyst::Plugin::Session::Store::DBIC>

=head2 L<Catalyst::Plugin::Session::Store::Dummy>

=head2 L<Catalyst::Plugin::Session::Store::FastMmap>

=head2 L<Catalyst::Plugin::Session::Store::File>

=head2 L<Catalyst::Plugin::Session::Store::Memcached>

=head2 L<Catalyst::Plugin::Session::Test::Store>

=head2 L<Catalyst::Plugin::Singleton>

=head2 L<Catalyst::Plugin::Snippets>

=head2 L<Catalyst::Plugin::SRU>

Allows your controller class to dispatch SRU actions (C<explain>, C<scan>,
and C<searchRetrieve>) from its own class.

=head2 L<Catalyst::Plugin::StackTrace>

=head2 L<Catalyst::Plugin::Static>

L<Catalyst::Plugin::Static> is a plugin to serve static files from
C<< $c->config->{root} >>. Intended chiefly for development
purposes.

=head2 L<Catalyst::Plugin::Static::Simple>

Serves static files in your application without requiring a single line of
code. This plugin is now included in the core Catalyst distribution.

=head2 L<Catalyst::Plugin::SubRequest>

A plugin to allow subrequests to actions to be made within Catalyst. Nice
for portal software and such.

=head2 L<Catalyst::Plugin::SuperForm>

An interface to the L<HTML::SuperForm> module, enabling easy HTML form
creation.

=head2 L<Catalyst::Plugin::Textile>

A persistent Textile processor for Catalyst that uses C<Text::Textile>, a
Perl-based implementation of Dean Allen's Textile syntax. Textile is
shorthand for doing common formatting tasks (see L<http://textism.com>).

=head2 L<Catalyst::Plugin::Unicode>

Provides a Unicode-aware Catalyst. On request, it decodes all params from
UTF-8 octets into a sequence of logical characters. On response, it encodes
the body into UTF-8 octets.

=head2 L<Catalyst::Plugin::Unicode::Encoding>

=head2 L<Catalyst::Plugin::Upload::Basename>

=head2 L<Catalyst::Plugin::Upload::MD5>

=head2 L<Catalyst::Plugin::Upload::MIME>

=head2 L<Catalyst::Plugin::UploadProgress>

=head2 L<Catalyst::Plugin::XMLRPC>

Allows your Controller class to dispatch XMLRPC methods from its own class.

=head1 CONTROLLERS

=head2 L<Catalyst::Controller::BindLex>

Lets you mark lexical variables with a C<Stashed> attribute, automatically
passing them to the stash.

=head1 MODELS

=head2 L<Catalyst::Model::CDBI>

The C<Class::DBI> (CDBI) model class.  It is built on top of
C<Class::DBI::Loader>, which automates the definition of C<Class::DBI>
sub-classes by scanning the underlying table schemas, setting up columns
and primary keys.

=head2 L<Catalyst::Model::CDBI::Plain>

A neutral interface to the C<Class::DBI> module which does not attempt
to automate table setup. It allows the user to manually set up
C<Class::DBI> classes, either by doing so within the Catalyst model
classes themselves, or by inheriting from existing C<Class::DBI>
classes.

=head2 L<Catalyst::Model::DBIC::Schema>

A L<DBIx::Class> model class that can use either an explicit
L<DBIx::Class::Schema> or one automatically loaded from your database
via L<DBIx::Class::Schema::Loader>.

=head2 L<Catalyst::Model::EVDB>

=head2 L<Catalyst::Model::File>

=head2 L<Catalyst::Model::Gedcom>

=head2 L<Catalyst::Model::LDAP>

=head2 L<Catalyst::Model::NetBlogger>

=head2 L<Catalyst::Model::Plucene>

A model class for the Plucene search engine.

=head2 L<Catalyst::Model::Proxy>

=head2 L<Catalyst::Model::SVN>

=head2 L<Catalyst::Model::Xapian>

A model class for the Xapian search engine.

=head1 VIEWS

=head2 L<Catalyst::View::Atom::XML>

=head2 L<Catalyst::View::Chart::Strip>

=head2 L<Catalyst::View::CSS::Squish>

=head2 L<Catalyst::View::Embperl>

=head2 L<Catalyst::View::GD::Barcode>

=head2 L<Catalyst::View::GraphViz>

=head2 L<Catalyst::View::HTML::Template>

A view component for rendering pages with L<HTML::Template>.

=head2 L<Catalyst::View::Jemplate>

=head2 L<Catalyst::View::JSON>

=head2 L<Catalyst::View::Mason>

A view component for rendering pages with L<HTML::Mason>.

=head2 L<Catalyst::View::MicroMason>

=head2 L<Catalyst::View::PHP>

=head2 L<Catalyst::View::PSP>

A view component for rendering pages using PSP, a Perl extension
implementing a JSP-like templating system. See L<Text::PSP>.

=head2 L<Catalyst::View::Petal>

A view component for rendering pages using Petal, the Perl Template
Attribute Language, an XML-based templating system. See L<Petal>.

=head2 L<Catalyst::View::TT>

A view component for rendering pages with Template Toolkit. See
L<Template::Manual>.

=head2 L<Catalyst::View::XSLT>

=head2 L<Catalyst::View::vCard>

=head1 OBSOLETE MODULES

=head2 L<Catalyst::Model::DBIC>

Replaced by L<Catalyst::Model::DBIC::Schema>.

=head2 L<Catalyst::Plugin::Authentication::Basic::Remote>

Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.

=head2 L<Catalyst::Plugin::Authentication::CDBI>

Replaced by L<Catalyst::Plugin::Authentication::Store::DBIC>.

=head2 L<Catalyst::Plugin::Authentication::CDBI::Basic>

Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.

=head2 L<Catalyst::Plugin::Authentication::LDAP>

Replaced by L<Catalyst::Plugin::Authentication::Store::LDAP>.

=head2 L<Catalyst::Plugin::Authentication::Simple>

Replaced by L<Catalyst::Plugin::Authentication>.

=head2 L<Catalyst::Plugin::Authorization::CDBI::GroupToken>

=head2 L<Catalyst::Plugin::CDBI::Transaction>

=head2 Catalyst::Plugin::Config::*

The L<Catalyst::Plugin::Config::JSON> and
L<Catalyst::Plugin::Config::YAML> modules have been replaced by their
corresponding L<Catalyst::Plugin::ConfigLoader> modules.

=head2 L<Catalyst::Plugin::DefaultEnd>

Replaced by L<Catalyst::Action::RenderView>

=head2 L<Catalyst::Plugin::SanitizeUrl>

=head2 L<Catalyst::Plugin::SanitizeUrl::PrepAction>

=head2 Catalyst::Plugin::Session::*

The L<Catalyst::Plugin::Session::CGISession>, 
L<Catalyst::Plugin::Session::FastMmap>,
L<Catalyst::Plugin::Session::Flex>, and
L<Catalyst::Plugin::Session::Manager>
modules have been replaced by the <Catalyst::Plugin::Session> framework.

=head1 AUTHORS

Andrew Ford E<lt>A.Ford@ford-mason.co.ukE<gt>

Gavin Henry E<lt>ghenry@suretecsystems.comE<gt>

Jesse Sheidlower E<lt>jester@panix.comE<gt>

Marcus Ramberg E<lt>mramberg@cpan.orgE<gt>

David Kamholz E<lt>dkamholz@cpan.orgE<gt>

=head1 COPYRIGHT

This program is free software, you can redistribute it and/or modify it under
the same terms as Perl itself.

