=head1 NAME Catalyst::Manual::Components - Reuseable components for Catalyst applications =head1 DESCRIPTION This section lists the some of the components (and plugins) that are available to extend the runtime functionality of Catalyst. Most components 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, conversely, may now part of core L. Be sure to check the Catalyst:: and CatalystX:: namespaces for additional components, and consult the mailing list ( L ) for advice on the current status or preferred use of your chosen plugin/framework. =head1 PLUGINS =head2 L Provides Account Auto-Discovery for Catalyst. =head2 L 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 =head2 L Allows you to dispatch AtomPP methods. =head2 L A plugin that implements the necessary bits to make it easy to build an Atom API server for any Catalyst-based application. =head2 L An infrastructure plugin for the Catalyst authentication framework. Now the recommended way to do any form of Authentication. Note that newer versions of the authentication plugin allow multiple C, so that you can authenticate users in different ways in different parts of your application. This, however, has involved deprecated all classes in the C and C namespaces. These plugins are still usable, but they have mostly been replaced with new modules in the new namespace which will work together. =head3 Available Credential modules: =head4 L Allows you to use the L module with Catalyst. =head4 L Allows you to authenticate Facebook users using the FBConnect API. =head4 L Provides authentication via Flickr, using its API. =head4 L Allows you to authenticate users using HTTP Basic or Digest authentication. =head4 L Allows you to authenticate users against a remote web server offering HTTP authentication. =head4 L Allows you to authenticate your users against a Kerberos server. =head4 L Allows you to authenticate users using their login on other websites supporting the OAuth protocol. =head4 L Allows you to authenticate users using their login on other websites supporting the OpenID protocol. =head4 L 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. =head4 L Allows you to authenticate users using the RPX protocol. =head4 L Allows you to authenticate users in Catalyst that have already been authenticated by your web server. This is useful for authenticating users with SSL Client certificates, and using NTLM or any other authentication protocol natively supported by your web server. =head4 L Allows you to set the same password for all users, which is useful when you want to test logging in as multiple users or multiple types of user, without having to mock things, or set all users' passwords in your test suite. =head4 L Allows any of the L family of modules to be used to authenticate users in Catalyst. =head3 Available Store modules: =head4 L Does authentication and authorization against a L model. =head4 L Uses L to let your application use C<.htpasswd> files for its authentication storage. =head4 L This module implements the Catalyst::Authentication API for L. =head4 L Allows you to use a plain L database connection to identify users. =head4 L Allows you to use an Apache htpasswd type file to authenticate users. =head4 L Authenticate users stored as objects in the L object graph storage engine system. =head4 L Authenticates users using an LDAP server. =head4 L Lets you create a very quick and dirty user database in your application's config hash. Great for getting up and running quickly. =head4 L The Null store is a transparent store where any supplied user data is accepted. This is mainly useful for remotely authenticating credentials (e.g. OpenID) which may not be tied to any local storage. =head4 L Allows access to authentication information stored in a database via a L class. =head4 L Allows access to authentication information stored in a database via a L class. =head4 L Allows access to authentication information stored in a database via a L class. =head4 L Allows access to authentication information stored in a database via a L class. =head4 L An easy authentication user object based on hashes. See L for more info. =head2 L This module provides Access Control List style path protection, with arbitrary rules for L applications. It operates only on the Catalyst private namespace, at least at the moment. =head2 L L provides role-based authorization for Catalyst based on L. =head2 L L enables specified request parameters to generate session variables. =head2 L Extends L by adding the capability of browser detection. It returns an instance of L, which lets you get information from the client's user agent. =head2 L Provides a cache method enabling easy access to a shared cache implementing the C<< Cache:: >> APO, such as: =over =item FastMmap =item FileCache =item BerkeleyDB =item Memcached =item CHI =back =head2 L Provides specific charset handlers for the Japanese charsets. =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L Provides a standard method for loading config files. Support exists for various formats. See L L, L, L, L, and L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L Sends email with L and L. =head2 L =head2 L =head2 L =head2 L A plugin based on C, 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 is a subclass of C and uses it to parse the HTML and insert the values into the form tags. =head2 L =head2 L 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 =head2 L =head2 L =head2 L An internationalization plugin for Catalyst. Supports C/C files and Maketext classes under your application's I18N namespace. =head2 L =head2 L =head2 L =head2 L Provides the ability to register AOP-like callbacks to specific Engine events. Subclasses L. =head2 L 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 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 =head2 L =head2 L A plugin for pluggable Catalyst applications. =head2 L A plugin for the Prototype JavaScript library. This plugin allows you to easily implement AJAX functionality without actually knowing Javascript. =head2 L Allows for easy redirecting with the Catalyst app. =head2 L =head2 L 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 =head2 L The L 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 =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L Allows your controller class to dispatch SRU actions (C, C, and C) from its own class. =head2 L =head2 L L is a plugin to serve static files from C<< $c->config(root => 'foo') >>. Intended chiefly for development purposes. =head2 L Serves static files in your application without requiring a single line of code. =head2 L A plugin to allow subrequests to actions to be made within Catalyst. Nice for portal software and such. =head2 L An interface to the L module, enabling easy HTML form creation. =head2 L 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 Disrecommended plugin which tries to autodetect the uft8ness of the output and do the correct thing. This may work in some cases, but if it helps, you've already painted yourself into a corner - try to avoid! =head2 L =head2 L Computes the MD5 message digest of uploaded files. =head2 L =head2 L =head2 L Allows your Controller class to dispatch XMLRPC methods from its own class. =head1 CONTROLLERS =head2 L Catalyst integration for . =head1 MODELS =head2 L The C (CDBI) model class. It is built on top of C, which automates the definition of C sub-classes by scanning the underlying table schemas, setting up columns and primary keys. =head2 L A neutral interface to the C module which does not attempt to automate table setup. It allows the user to manually set up C classes, either by doing so within the Catalyst model classes themselves, or by inheriting from existing C classes. =head2 L A L model class that can use either an explicit L or one automatically loaded from your database via L. =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L A model class for the Plucene search engine. =head2 L =head2 L =head2 L A model class for the Xapian search engine. =head1 VIEWS =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L =head2 L A view component for rendering pages with L. =head2 L =head2 L =head2 L A view component for rendering pages with L. =head2 L =head2 L =head2 L A view component for rendering pages using PSP, a Perl extension implementing a JSP-like templating system. See L. =head2 L A view component for rendering pages using Petal, the Perl Template Attribute Language, an XML-based templating system. See L. =head2 L A view component for rendering pages with Template Toolkit. See L. =head2 L =head2 L =head1 Actions =head2 L Creates a sane, standard end method for your application. =head1 OBSOLETE MODULES =head2 L Lets you mark lexical variables with a C attribute, automatically passing them to the stash. Discouraged by the author. =head2 L Replaced by L. =head2 L Replaced by L. =head2 L Replaced by L. =head2 L Replaced by L. =head2 L Replaced by L. =head2 L Replaced by L. =head2 L =head2 L =head2 Catalyst::Plugin::Config::* The L and L modules have been replaced by their corresponding L modules. =head2 L Replaced by L =head2 L =head2 L =head2 Catalyst::Plugin::Session::* The L, L, L, and L modules have been replaced by the framework. =head1 AUTHORS Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut