3 Catalyst::Manual::Components - Reuseable components for Catalyst applications
7 This section lists the some of the components (and plugins) that are
8 available to extend the runtime functionality of Catalyst. Most components
9 are not distributed with Catalyst but should be available from CPAN.
10 They typically require additional modules from CPAN.
12 This list may well be outdated by the time you read this, and some
13 plugins may be deprecated, or, conversely, may now part of core
14 L<Catalyst>. Be sure to check the Catalyst:: and CatalystX:: namespaces
15 for additional components, and consult the mailing list (
16 L<http://dev.catalyst.perl.org/wiki/Support> ) for advice on the current
17 status or preferred use of your chosen plugin/framework.
21 =head2 L<Catalyst::Plugin::Account::AutoDiscovery>
23 Provides Account Auto-Discovery for Catalyst.
25 =head2 L<Catalyst::Plugin::Acme::Scramble>
27 Implements a potent meme about how easily we can read scrambled text if
28 the first and last letters remain constant. Operates on text/plain and
29 text/html served by your Catalyst application.
31 =head2 L<Catalyst::Plugin::Alarm>
33 =head2 L<Catalyst::Plugin::AtomPP>
35 Allows you to dispatch AtomPP methods.
37 =head2 L<Catalyst::Plugin::AtomServer>
39 A plugin that implements the necessary bits to make it easy to build an
40 Atom API server for any Catalyst-based application.
42 =head2 L<Catalyst::Plugin::Authentication>
44 An infrastructure plugin for the Catalyst authentication framework. Now the
45 recommended way to do any form of Authentication.
47 Note that newer versions of the authentication plugin allow multiple
48 C<realms>, so that you can authenticate users in different ways in different
49 parts of your application.
51 This, however, has involved deprecated all classes in the
52 C<Catalyst::Plugin::Authentication::Credential::XXX> and
53 C<Catalyst::Plugin::Authentication::Store::XXX> namespaces.
55 These plugins are still usable, but they have mostly been replaced with
56 new modules in the new namespace which will work together.
58 =head3 Available Credential modules:
60 =head4 L<Catalyst::Authentication::Credential::AuthTkt>
62 Allows you to use the L<Apache::AuthTkt> module with Catalyst.
64 =head4 L<Catalyst::Authentication::Credential::FBConnect>
66 Allows you to authenticate Facebook users using the FBConnect API.
68 =head4 L<Catalyst::Authentication::Credential::Flickr>
70 Provides authentication via Flickr, using its API.
72 =head4 L<Catalyst::Authentication::Credential::HTTP>
74 Allows you to authenticate users using HTTP Basic or Digest authentication.
76 =head4 L<Catalyst::Authentication::Credential::HTTP::Proxy>
78 Allows you to authenticate users against a remote web server
79 offering HTTP authentication.
81 =head4 L<Catalyst::Authentication::Credential::Kerberos>
83 Allows you to authenticate your users against a Kerberos server.
85 =head4 L<Catalyst::Authentication::Credential::OAuth>
87 Allows you to authenticate users using their login on other websites
88 supporting the OAuth protocol.
90 =head4 L<Catalyst::Authentication::Credential::OpenID>
92 Allows you to authenticate users using their login on other websites
93 supporting the OpenID protocol.
95 =head4 L<Catalyst::Authentication::Credential::Password>
97 Takes a username (or userid) and a password, and tries various methods of
98 comparing a password based on what the chosen store's user objects support.
99 Part of the Authentication Framework L<Catalyst::Plugin::Authentication>.
101 =head4 L<Catalyst::Authentication::Credential::RPX>
103 Allows you to authenticate users using the RPX protocol.
105 =head4 L<Catalyst::Authentication::Credential::Remote>
107 Allows you to authenticate users in Catalyst that have already been
108 authenticated by your web server. This is useful for authenticating
109 users with SSL Client certificates, and using NTLM or any other
110 authentication protocol natively supported by your web server.
112 =head4 L<Catalyst::Authentication::Credential::Testing>
114 Allows you to set the same password for all users, which is useful when
115 you want to test logging in as multiple users or multiple types of user,
116 without having to mock things, or set all users' passwords in your test
119 =head4 L<Catalyst::Authentication::Credential::Authen::Simple>
121 Allows any of the L<Authen::Simple> family of modules to be used
122 to authenticate users in Catalyst.
124 =head3 Available Store modules:
126 =head4 L<Catalyst::Authentication::Store::DBIx::Class>
128 Does authentication and authorization against a L<DBIx::Class> model.
130 =head4 L<Catalyst::Authentication::Store::Htpasswd>
132 Uses L<Authen::Htpasswd> to let your application use C<.htpasswd> files
133 for its authentication storage.
135 =head4 L<Catalyst::Authentication::Store::AuthTkt>
137 This module implements the Catalyst::Authentication API for L<Apache::AuthTkt>.
139 =head4 L<Catalyst::Authentication::Store::DBI>
141 Allows you to use a plain L<DBI> database connection to identify users.
143 =head4 L<Catalyst::Authentication::Store::Htpasswd>
145 Allows you to use an Apache htpasswd type file to authenticate users.
147 =head4 L<Catalyst::Authentication::Store::KiokuDB>
149 Authenticate users stored as objects in the L<KiokuDB> object graph
150 storage engine system.
152 =head4 L<Catalyst::Authentication::Store::LDAP>
154 Authenticates users using an LDAP server.
156 =head4 L<Catalyst::Authentication::Store::Minimal>
158 Lets you create a very quick and dirty user database in your application's
159 config hash. Great for getting up and running quickly.
161 =head4 L<Catalyst::Authentication::Store::Null>
163 The Null store is a transparent store where any supplied user data is
164 accepted. This is mainly useful for remotely authenticating credentials
165 (e.g. OpenID) which may not be tied to any local storage.
167 =head4 L<Catalyst::Authentication::Store::RDBO>
169 Allows access to authentication information stored in a database via a L<Rose::DB::Object> class.
171 =head4 L<Catalyst::Authentication::Store::Tangram>
173 Allows access to authentication information stored in a database via a
176 =head4 L<Catalyst::Authentication::Store::DBIx::Class>
178 Allows access to authentication information stored in a database via a
179 L<DBIx::Class> class.
181 =head4 L<Catalyst::Authentication::Store::Jifty::DBI>
183 Allows access to authentication information stored in a database via a L<Jifty::DBI> class.
185 =head4 L<Catalyst::Authentication::User::Hash>
187 An easy authentication user object based on hashes.
188 See L<Catalyst::Authentication::Store::Minimal> for more info.
190 =head2 L<Catalyst::Plugin::Authorization::ACL>
192 This module provides Access Control List style path protection, with arbitrary
193 rules for L<Catalyst> applications. It operates only on the Catalyst private
194 namespace, at least at the moment.
196 =head2 L<Catalyst::Plugin::Authorization::Roles>
198 L<Catalyst::Plugin::Authorization::Roles> provides role-based
199 authorization for Catalyst based on L<Catalyst::Plugin::Authentication>.
201 =head2 L<Catalyst::Plugin::AutoSession>
203 L<Catalyst::Plugin::AutoSession> enables specified request parameters
204 to generate session variables.
206 =head2 L<Catalyst::Plugin::Browser>
208 Extends L<Catalyst::Request> by adding the capability of browser
209 detection. It returns an instance of L<HTTP::BrowserDetect>, which lets
210 you get information from the client's user agent.
212 =head2 L<Catalyst::Plugin::Cache>
214 Provides a cache method enabling easy access to a shared cache implementing
215 the C<< Cache:: >> APO, such as:
231 =head2 L<Catalyst::Plugin::CGI::Untaint>
233 Provides specific charset handlers for the Japanese charsets.
235 =head2 L<Catalyst::Plugin::Charsets::Japanese>
237 =head2 L<Catalyst::Plugin::Compress::Bzip2>
239 =head2 L<Catalyst::Plugin::Compress::Deflate>
241 =head2 L<Catalyst::Plugin::Compress::Gzip>
243 =head2 L<Catalyst::Plugin::Compress::Zlib>
245 =head2 L<Catalyst::Plugin::ConfigLoader>
247 Provides a standard method for loading config files. Support
248 exists for various formats. See
249 L<Catalyst::Plugin::ConfigLoader::General>
250 L<Catalyst::Plugin::ConfigLoader::INI>,
251 L<Catalyst::Plugin::ConfigLoader::JSON>,
252 L<Catalyst::Plugin::ConfigLoader::Perl>,
253 L<Catalyst::Plugin::ConfigLoader::XML>, and
254 L<Catalyst::Plugin::ConfigLoader::YAML>
256 =head2 L<Catalyst::Plugin::ConfigurablePathTo>
258 =head2 L<Catalyst::Plugin::Devel::InPageLogs>
260 =head2 L<Catalyst::Plugin::Devel::InPageLogs::Log>
262 =head2 L<Catalyst::Plugin::Dojo>
264 =head2 L<Catalyst::Plugin::Dumper>
266 =head2 L<Catalyst::Plugin::Email>
268 Sends email with L<Email::Send> and L<Email::MIME::Creator>.
270 =head2 L<Catalyst::Plugin::Email::Japanese>
272 =head2 L<Catalyst::Plugin::Email::Page>
274 =head2 L<Catalyst::Plugin::EmailValid>
276 =head2 L<Catalyst::Plugin::FillInForm>
278 A plugin based on C<HTML::FillInForm>, which describes itself as a module
279 to automatically insert data from a previous HTML form into the HTML input,
280 textarea, radio buttons, checkboxes, and select tags. C<HTML::FillInForm>
281 is a subclass of C<HTML::Parser> and uses it to parse the HTML and insert
282 the values into the form tags.
284 =head2 L<Catalyst::Plugin::Flavour>
286 =head2 L<Catalyst::Plugin::Geography>
288 Allows you to retrieve various kinds of geographical information. You can
289 retrieve the country or code from the current user, from a given IP
290 address, or from a given hostname.
292 =head2 L<Catalyst::Plugin::Geography::Implementation>
294 =head2 L<Catalyst::Plugin::HashedCookies>
296 =head2 L<Catalyst::Plugin::HTML::Scrubber>
298 =head2 L<Catalyst::Plugin::I18N>
300 An internationalization plugin for Catalyst. Supports C<mo>/C<po> files
301 and Maketext classes under your application's I18N namespace.
303 =head2 L<Catalyst::Plugin::JSONRPC>
305 =head2 L<Catalyst::Plugin::Message>
307 =head2 L<Catalyst::Plugin::MobileAgent>
309 =head2 L<Catalyst::Plugin::Observe>
311 Provides the ability to register AOP-like callbacks to specific Engine
312 events. Subclasses L<Class::Publisher>.
314 =head2 L<Catalyst::Plugin::OrderedParams>
316 Adjusts the way that parameters operate, causing them to appear in the same
317 order they were submitted by the browser. This can be useful for creating
318 things such as email forms.
320 =head2 L<Catalyst::Plugin::PageCache>
322 Helps improve the performance of slow or frequently accessed pages by
323 caching the entire output of your page. Subsequent requests to the page
324 will receive the page very quickly from cache.
326 =head2 L<Catalyst::Plugin::Params::Nested>
328 =head2 L<Catalyst::Plugin::Params::Nested::Expander>
330 =head2 L<Catalyst::Plugin::Pluggable>
332 A plugin for pluggable Catalyst applications.
334 =head2 L<Catalyst::Plugin::Prototype>
336 A plugin for the Prototype JavaScript library. This plugin allows you to
337 easily implement AJAX functionality without actually knowing Javascript.
339 =head2 L<Catalyst::Plugin::Redirect>
341 Allows for easy redirecting with the Catalyst app.
343 =head2 L<Catalyst::Plugin::RequestToken>
345 =head2 L<Catalyst::Plugin::RequireSSL>
347 Use this if you would like to force visitors to access certain pages using
348 only SSL mode. An attempt to access the page in non-SSL mode will receive a
349 redirect into SSL mode. Useful for login pages, shopping carts, user
350 registration forms, and other sensitive data.
352 =head2 L<Catalyst::Plugin::Scheduler>
354 =head2 L<Catalyst::Plugin::Session>
356 The L<Catalyst::Plugin::Session> series of modules provide an easy way to
357 include session handling in an application. You can choose from several
358 different backend storage methods and combine that with your choice of
359 client-side storage methods.
361 =head2 L<Catalyst::Plugin::Session::PerUser>
363 =head2 L<Catalyst::Plugin::Session::State>
365 =head2 L<Catalyst::Plugin::Session::State::Cookie>
367 =head2 L<Catalyst::Plugin::Session::State::URI>
369 =head2 L<Catalyst::Plugin::Session::Store>
371 =head2 L<Catalyst::Plugin::Session::Store::CDBI>
373 =head2 L<Catalyst::Plugin::Session::Store::DBI>
375 =head2 L<Catalyst::Plugin::Session::Store::DBIC>
377 =head2 L<Catalyst::Plugin::Session::Store::Dummy>
379 =head2 L<Catalyst::Plugin::Session::Store::FastMmap>
381 =head2 L<Catalyst::Plugin::Session::Store::File>
383 =head2 L<Catalyst::Plugin::Session::Store::Memcached>
385 =head2 L<Catalyst::Plugin::Session::Test::Store>
387 =head2 L<Catalyst::Plugin::Singleton>
389 =head2 L<Catalyst::Plugin::Snippets>
391 =head2 L<Catalyst::Plugin::SRU>
393 Allows your controller class to dispatch SRU actions (C<explain>, C<scan>,
394 and C<searchRetrieve>) from its own class.
396 =head2 L<Catalyst::Plugin::StackTrace>
398 =head2 L<Catalyst::Plugin::Static>
400 L<Catalyst::Plugin::Static> is a plugin to serve static files from
401 C<< $c->config(root => 'foo') >>. Intended chiefly for development
404 =head2 L<Catalyst::Plugin::Static::Simple>
406 Serves static files in your application without requiring a single line of
409 =head2 L<Catalyst::Plugin::SubRequest>
411 A plugin to allow subrequests to actions to be made within Catalyst. Nice
412 for portal software and such.
414 =head2 L<Catalyst::Plugin::SuperForm>
416 An interface to the L<HTML::SuperForm> module, enabling easy HTML form
419 =head2 L<Catalyst::Plugin::Unicode::Encoding>
421 Provides a Unicode-aware Catalyst. On request, it decodes all params from
422 UTF-8 octets into a sequence of logical characters. On response, it encodes
423 the body into UTF-8 octets.
425 =head2 L<Catalyst::Plugin::Unicode>
427 Disrecommended plugin which tries to autodetect the uft8ness of the output
428 and do the correct thing. This may work in some cases, but if it helps,
429 you've already painted yourself into a corner - try to avoid!
431 =head2 L<Catalyst::Plugin::Upload::Basename>
433 =head2 L<Catalyst::Plugin::Upload::MD5>
435 Computes the MD5 message digest of uploaded files.
437 =head2 L<Catalyst::Plugin::Upload::MIME>
439 =head2 L<Catalyst::Plugin::UploadProgress>
441 =head2 L<Catalyst::Plugin::XMLRPC>
443 Allows your Controller class to dispatch XMLRPC methods from its own class.
447 =head2 L<Catalyst::Controller::HTML::FormFu>
449 Catalyst integration for <HTML::FormFu>.
453 =head2 L<Catalyst::Model::CDBI>
455 The C<Class::DBI> (CDBI) model class. It is built on top of
456 C<Class::DBI::Loader>, which automates the definition of C<Class::DBI>
457 sub-classes by scanning the underlying table schemas, setting up columns
460 =head2 L<Catalyst::Model::CDBI::Plain>
462 A neutral interface to the C<Class::DBI> module which does not attempt
463 to automate table setup. It allows the user to manually set up
464 C<Class::DBI> classes, either by doing so within the Catalyst model
465 classes themselves, or by inheriting from existing C<Class::DBI>
468 =head2 L<Catalyst::Model::DBIC::Schema>
470 A L<DBIx::Class> model class that can use either an explicit
471 L<DBIx::Class::Schema> or one automatically loaded from your database
472 via L<DBIx::Class::Schema::Loader>.
474 =head2 L<Catalyst::Model::EVDB>
476 =head2 L<Catalyst::Model::File>
478 =head2 L<Catalyst::Model::Gedcom>
480 =head2 L<Catalyst::Model::LDAP>
482 =head2 L<Catalyst::Model::NetBlogger>
484 =head2 L<Catalyst::Model::Plucene>
486 A model class for the Plucene search engine.
488 =head2 L<Catalyst::Model::Proxy>
490 =head2 L<Catalyst::Model::SVN>
492 =head2 L<Catalyst::Model::Xapian>
494 A model class for the Xapian search engine.
498 =head2 L<Catalyst::View::Atom::XML>
500 =head2 L<Catalyst::View::Chart::Strip>
502 =head2 L<Catalyst::View::CSS::Squish>
504 =head2 L<Catalyst::View::Embperl>
506 =head2 L<Catalyst::View::GD::Barcode>
508 =head2 L<Catalyst::View::GraphViz>
510 =head2 L<Catalyst::View::HTML::Template>
512 A view component for rendering pages with L<HTML::Template>.
514 =head2 L<Catalyst::View::Jemplate>
516 =head2 L<Catalyst::View::JSON>
518 =head2 L<Catalyst::View::Mason>
520 A view component for rendering pages with L<HTML::Mason>.
522 =head2 L<Catalyst::View::MicroMason>
524 =head2 L<Catalyst::View::PHP>
526 =head2 L<Catalyst::View::PSP>
528 A view component for rendering pages using PSP, a Perl extension
529 implementing a JSP-like templating system. See L<Text::PSP>.
531 =head2 L<Catalyst::View::Petal>
533 A view component for rendering pages using Petal, the Perl Template
534 Attribute Language, an XML-based templating system. See L<Petal>.
536 =head2 L<Catalyst::View::TT>
538 A view component for rendering pages with Template Toolkit. See
541 =head2 L<Catalyst::View::XSLT>
543 =head2 L<Catalyst::View::vCard>
547 =head2 L<Catalyst::Action::RenderView>
549 Creates a sane, standard end method for your application.
551 =head1 OBSOLETE MODULES
553 =head2 L<Catalyst::Controller::BindLex>
555 Lets you mark lexical variables with a C<Stashed> attribute, automatically
556 passing them to the stash. Discouraged by the author.
558 =head2 L<Catalyst::Model::DBIC>
560 Replaced by L<Catalyst::Model::DBIC::Schema>.
562 =head2 L<Catalyst::Plugin::Authentication::Basic::Remote>
564 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
566 =head2 L<Catalyst::Plugin::Authentication::CDBI>
568 Replaced by L<Catalyst::Plugin::Authentication::Store::DBIC>.
570 =head2 L<Catalyst::Plugin::Authentication::CDBI::Basic>
572 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
574 =head2 L<Catalyst::Plugin::Authentication::LDAP>
576 Replaced by L<Catalyst::Plugin::Authentication::Store::LDAP>.
578 =head2 L<Catalyst::Plugin::Authentication::Simple>
580 Replaced by L<Catalyst::Plugin::Authentication>.
582 =head2 L<Catalyst::Plugin::Authorization::CDBI::GroupToken>
584 =head2 L<Catalyst::Plugin::CDBI::Transaction>
586 =head2 Catalyst::Plugin::Config::*
588 The L<Catalyst::Plugin::Config::JSON> and
589 L<Catalyst::Plugin::Config::YAML> modules have been replaced by their
590 corresponding L<Catalyst::Plugin::ConfigLoader> modules.
592 =head2 L<Catalyst::Plugin::DefaultEnd>
594 Replaced by L<Catalyst::Action::RenderView>
596 =head2 L<Catalyst::Plugin::SanitizeUrl>
598 =head2 L<Catalyst::Plugin::SanitizeUrl::PrepAction>
600 =head2 Catalyst::Plugin::Session::*
602 The L<Catalyst::Plugin::Session::CGISession>,
603 L<Catalyst::Plugin::Session::FastMmap>,
604 L<Catalyst::Plugin::Session::Flex>, and
605 L<Catalyst::Plugin::Session::Manager>
606 modules have been replaced by the <Catalyst::Plugin::Session> framework.
610 Catalyst Contributors, see Catalyst.pm
614 This library is free software. You can redistribute it and/or modify it under
615 the same terms as Perl itself.