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 Take care with plugins! In general with a plugin ask "should this be
22 acting globally on my application application?". If not it should be a
23 Controller Role (e.g. see L<Catalyst::TraitFor::Controller::reCAPTCHA>.
25 =head2 L<Catalyst::Plugin::Account::AutoDiscovery>
27 Provides Account Auto-Discovery for Catalyst.
29 =head2 L<Catalyst::Plugin::Acme::Scramble>
31 Implements a demonstration showing how easily fluent speakers can read
32 scrambled text if the first and last letters remain constant but the middle
33 . Operates on text/plain and text/html served by your Catalyst application.
34 This should really be a controller role, or even a View these days.
36 =head2 L<Catalyst::Plugin::Alarm>
38 =head2 L<Catalyst::Plugin::AtomPP>
40 Allows you to dispatch AtomPP methods.
42 =head2 L<Catalyst::Plugin::AtomServer>
44 A plugin that implements the necessary bits to make it easy to build an
45 Atom API server for any Catalyst-based application.
47 =head2 L<Catalyst::Plugin::Authentication>
49 An infrastructure plugin for the Catalyst authentication framework. Now the
50 recommended way to do any form of Authentication.
52 Note that newer versions of the authentication plugin allow multiple
53 C<realms>, so that you can authenticate users in different ways in different
54 parts of your application.
56 This, however, has involved deprecating all classes in the
57 C<Catalyst::Plugin::Authentication::Credential::> and
58 C<Catalyst::Plugin::Authentication::Store::> namespaces.
60 These plugins are still usable, but they have mostly been replaced with
61 new modules in the new namespace which will work together.
63 =head3 Available Credential modules:
65 =head4 L<Catalyst::Authentication::Credential::AuthTkt>
67 Allows you to use the L<Apache::AuthTkt> module with Catalyst.
69 =head4 L<Catalyst::Authentication::Credential::FBConnect>
71 Allows you to authenticate Facebook users using the FBConnect API.
73 =head4 L<Catalyst::Authentication::Credential::Flickr>
75 Provides authentication via Flickr, using its API.
77 =head4 L<Catalyst::Authentication::Credential::HTTP>
79 Allows you to authenticate users using HTTP Basic or Digest authentication.
81 =head4 L<Catalyst::Authentication::Credential::HTTP::Proxy>
83 Allows you to authenticate users against a remote web server
84 offering HTTP authentication.
86 =head4 L<Catalyst::Authentication::Credential::Kerberos>
88 Allows you to authenticate your users against a Kerberos server.
90 =head4 L<Catalyst::Authentication::Credential::OAuth>
92 Allows you to authenticate users using their login on other websites
93 supporting the OAuth protocol.
95 =head4 L<Catalyst::Authentication::Credential::OpenID>
97 Allows you to authenticate users using their login on other websites
98 supporting the OpenID protocol.
100 =head4 L<Catalyst::Authentication::Credential::Password>
102 Takes a username (or userid) and a password, and tries various methods of
103 comparing a password based on what the chosen store's user objects support.
104 Part of the Authentication Framework L<Catalyst::Plugin::Authentication>.
106 =head4 L<Catalyst::Authentication::Credential::RPX>
108 Allows you to authenticate users using the RPX protocol.
110 =head4 L<Catalyst::Authentication::Credential::Remote>
112 Allows you to authenticate users in Catalyst that have already been
113 authenticated by your web server. This is useful for authenticating
114 users with SSL Client certificates, and using NTLM or any other
115 authentication protocol natively supported by your web server.
117 =head4 L<Catalyst::Authentication::Credential::Testing>
119 Allows you to set the same password for all users, which is useful when
120 you want to test logging in as multiple users or multiple types of user,
121 without having to mock things, or set all users' passwords in your test
124 =head4 L<Catalyst::Authentication::Credential::Authen::Simple>
126 Allows any of the L<Authen::Simple> family of modules to be used
127 to authenticate users in Catalyst.
129 =head3 Available Store modules:
131 =head4 L<Catalyst::Authentication::Store::DBIx::Class>
133 Does authentication and authorization against a L<DBIx::Class> model.
135 =head4 L<Catalyst::Authentication::Store::Htpasswd>
137 Uses L<Authen::Htpasswd> to let your application use C<.htpasswd> files
138 for its authentication storage.
140 =head4 L<Catalyst::Authentication::Store::AuthTkt>
142 This module implements the Catalyst::Authentication API for L<Apache::AuthTkt>.
144 =head4 L<Catalyst::Authentication::Store::DBI>
146 Allows you to use a plain L<DBI> database connection to identify users.
148 =head4 L<Catalyst::Authentication::Store::Htpasswd>
150 Allows you to use an Apache htpasswd type file to authenticate users.
152 =head4 L<Catalyst::Authentication::Store::KiokuDB>
154 Authenticate users stored as objects in the L<KiokuDB> object graph
155 storage engine system.
157 =head4 L<Catalyst::Authentication::Store::LDAP>
159 Authenticates users using an LDAP server.
161 =head4 L<Catalyst::Authentication::Store::Minimal>
163 Lets you create a very quick and dirty user database in your application's
164 config hash. Great for testing or getting up and running quickly.
166 =head4 L<Catalyst::Authentication::Store::Null>
168 The Null store is a transparent store where any supplied user data is
169 accepted. This is mainly useful for remotely authenticating credentials
170 (e.g. OpenID) which may not be tied to any local storage.
172 =head4 L<Catalyst::Authentication::Store::RDBO>
174 Allows access to authentication information stored in a database via a L<Rose::DB::Object> class.
176 =head4 L<Catalyst::Authentication::Store::Tangram>
178 Allows access to authentication information stored in a database via a
181 =head4 L<Catalyst::Authentication::Store::DBIx::Class>
183 Allows access to authentication information stored in a database via a
184 L<DBIx::Class> class.
186 =head4 L<Catalyst::Authentication::Store::Jifty::DBI>
188 Allows access to authentication information stored in a database via a L<Jifty::DBI> class.
190 =head4 L<Catalyst::Authentication::User::Hash>
192 An easy authentication user object based on hashes.
193 See L<Catalyst::Authentication::Store::Minimal> for more info.
195 =head2 L<Catalyst::Plugin::Authorization::ACL>
197 This module provides Access Control List style path protection, with arbitrary
198 rules for L<Catalyst> applications. It operates only on the Catalyst private
199 namespace, at least at the moment.
201 =head2 L<Catalyst::Plugin::Authorization::Roles>
203 L<Catalyst::Plugin::Authorization::Roles> provides role-based
204 authorization for Catalyst based on L<Catalyst::Plugin::Authentication>.
206 =head2 L<Catalyst::Plugin::AutoSession>
208 L<Catalyst::Plugin::AutoSession> enables specified request parameters
209 to generate session variables.
211 =head2 L<Catalyst::Plugin::Browser>
213 Extends L<Catalyst::Request> by adding the capability of browser
214 detection. It returns an instance of L<HTTP::BrowserDetect>, which lets
215 you get information from the client's user agent.
217 =head2 L<Catalyst::Plugin::Cache>
219 Provides a cache method enabling easy access to a shared cache implementing
220 the C<< Cache:: >> APO, such as:
236 =head2 L<Catalyst::Plugin::CGI::Untaint>
238 =head2 L<Catalyst::Plugin::Charsets::Japanese>
240 Provides specific charset handlers for the Japanese charsets.
242 =head2 L<Catalyst::Plugin::Compress::Bzip2>
244 =head2 L<Catalyst::Plugin::Compress::Deflate>
246 =head2 L<Catalyst::Plugin::Compress::Gzip>
248 =head2 L<Catalyst::Plugin::Compress::Zlib>
250 =head2 L<Catalyst::Plugin::ConfigLoader>
252 Provides a standard method for loading config files. Support
253 exists for various formats. See
254 L<Catalyst::Plugin::ConfigLoader::General>
255 L<Catalyst::Plugin::ConfigLoader::INI>,
256 L<Catalyst::Plugin::ConfigLoader::JSON>,
257 L<Catalyst::Plugin::ConfigLoader::Perl>,
258 L<Catalyst::Plugin::ConfigLoader::XML>, and
259 L<Catalyst::Plugin::ConfigLoader::YAML>
261 =head2 L<Catalyst::Plugin::ConfigurablePathTo>
263 =head2 L<Catalyst::Plugin::Devel::InPageLogs>
265 =head2 L<Catalyst::Plugin::Devel::InPageLogs::Log>
267 =head2 L<Catalyst::Plugin::Dojo>
269 =head2 L<Catalyst::Plugin::Dumper>
271 =head2 L<Catalyst::Plugin::Email::Japanese>
273 =head2 L<Catalyst::Plugin::Email::Page>
275 =head2 L<Catalyst::Plugin::FillInForm>
277 A plugin based on C<HTML::FillInForm>, which describes itself as a module
278 to automatically insert data from a previous HTML form into the HTML input,
279 textarea, radio buttons, checkboxes, and select tags. C<HTML::FillInForm>
280 is a subclass of C<HTML::Parser> and uses it to parse the HTML and insert
281 the values into the form tags.
283 =head2 L<Catalyst::Plugin::Flavour>
285 =head2 L<Catalyst::Plugin::Geography>
287 Allows you to retrieve various kinds of geographical information. You can
288 retrieve the country or code from the current user, from a given IP
289 address, or from a given hostname.
291 =head2 L<Catalyst::Plugin::Geography::Implementation>
293 =head2 L<Catalyst::Plugin::HashedCookies>
295 =head2 L<Catalyst::Plugin::HTML::Scrubber>
297 =head2 L<Catalyst::Plugin::I18N>
299 An internationalization plugin for Catalyst. Supports C<mo>/C<po> files
300 and Maketext classes under your application's I18N namespace.
302 =head2 L<Catalyst::Plugin::JSONRPC>
304 =head2 L<Catalyst::Plugin::Message>
306 =head2 L<Catalyst::Plugin::MobileAgent>
308 =head2 L<Catalyst::Plugin::Observe>
310 Provides the ability to register AOP-like callbacks to specific Engine
311 events. Subclasses L<Class::Publisher>.
313 =head2 L<Catalyst::Plugin::OrderedParams>
315 Adjusts the way that parameters operate, causing them to appear in the same
316 order they were submitted by the browser. This can be useful for creating
317 things such as email forms.
319 =head2 L<Catalyst::Plugin::PageCache>
321 Helps improve the performance of slow or frequently accessed pages by
322 caching the entire output of your page. Subsequent requests to the page
323 will receive the page very quickly from cache.
325 =head2 L<Catalyst::Plugin::Params::Nested>
327 =head2 L<Catalyst::Plugin::Params::Nested::Expander>
329 =head2 L<Catalyst::Plugin::Pluggable>
331 A plugin for pluggable Catalyst applications.
333 =head2 L<Catalyst::Plugin::Prototype>
335 A plugin for the Prototype JavaScript library. This plugin allows you to
336 easily implement AJAX functionality without actually knowing Javascript.
338 =head2 L<Catalyst::Plugin::Redirect>
340 Allows for easy redirecting with the Catalyst app.
342 =head2 L<Catalyst::Plugin::RequestToken>
344 =head2 L<Catalyst::Plugin::RequireSSL>
346 Use this if you would like to force visitors to access certain pages using
347 only SSL mode. An attempt to access the page in non-SSL mode will receive a
348 redirect into SSL mode. Useful for login pages, shopping carts, user
349 registration forms, and other sensitive data.
351 =head2 L<Catalyst::Plugin::Scheduler>
353 =head2 L<Catalyst::Plugin::Session>
355 The L<Catalyst::Plugin::Session> series of modules provide an easy way to
356 include session handling in an application. You can choose from several
357 different backend storage methods and combine that with your choice of
358 client-side storage methods.
360 =head2 L<Catalyst::Plugin::Session::PerUser>
362 =head2 L<Catalyst::Plugin::Session::State>
364 =head2 L<Catalyst::Plugin::Session::State::Cookie>
366 =head2 L<Catalyst::Plugin::Session::State::URI>
368 =head2 L<Catalyst::Plugin::Session::Store>
370 =head2 L<Catalyst::Plugin::Session::Store::CDBI>
372 =head2 L<Catalyst::Plugin::Session::Store::DBI>
374 =head2 L<Catalyst::Plugin::Session::Store::DBIC>
376 =head2 L<Catalyst::Plugin::Session::Store::Dummy>
378 =head2 L<Catalyst::Plugin::Session::Store::FastMmap>
380 =head2 L<Catalyst::Plugin::Session::Store::File>
382 =head2 L<Catalyst::Plugin::Session::Store::Memcached>
384 =head2 L<Catalyst::Plugin::Session::Test::Store>
386 =head2 L<Catalyst::Plugin::Singleton>
388 =head2 L<Catalyst::Plugin::Snippets>
390 =head2 L<Catalyst::Plugin::SRU>
392 Allows your controller class to dispatch SRU actions (C<explain>, C<scan>,
393 and C<searchRetrieve>) from its own class.
395 =head2 L<Catalyst::Plugin::StackTrace>
397 =head2 L<Catalyst::Plugin::Static>
399 L<Catalyst::Plugin::Static> is a plugin to serve static files from
400 C<< $c->config(root => 'foo') >>. Intended chiefly for development
403 =head2 L<Catalyst::Plugin::Static::Simple>
405 Serves static files in your application without requiring a single line of
408 =head2 L<Catalyst::Plugin::SubRequest>
410 A plugin to allow subrequests to actions to be made within Catalyst. Nice
411 for portal software and such.
413 =head2 L<Catalyst::Plugin::SuperForm>
415 An interface to the L<HTML::SuperForm> module, enabling easy HTML form
418 =head2 L<Catalyst::Plugin::Unicode::Encoding>
420 Provides a Unicode-aware Catalyst. On request, it decodes all params from
421 UTF-8 octets into a sequence of logical characters. On response, it encodes
422 the body into UTF-8 octets.
424 =head2 L<Catalyst::Plugin::Unicode>
426 Disrecommended plugin which tries to autodetect the uft8ness of the output
427 and do the correct thing. This may work in some cases, but if it helps,
428 you've already painted yourself into a corner - try to avoid!
430 =head2 L<Catalyst::Plugin::Upload::Basename>
432 =head2 L<Catalyst::Plugin::Upload::MD5>
434 Computes the MD5 message digest of uploaded files.
436 =head2 L<Catalyst::Plugin::Upload::MIME>
438 =head2 L<Catalyst::Plugin::UploadProgress>
440 =head2 L<Catalyst::Plugin::XMLRPC>
442 Allows your Controller class to dispatch XMLRPC methods from its own class.
446 =head2 L<Catalyst::Controller::HTML::FormFu>
448 Catalyst integration for <HTML::FormFu>.
452 =head2 L<Catalyst::Model::CDBI>
454 The C<Class::DBI> (CDBI) model class. It is built on top of
455 C<Class::DBI::Loader>, which automates the definition of C<Class::DBI>
456 sub-classes by scanning the underlying table schemas, setting up columns
459 =head2 L<Catalyst::Model::CDBI::Plain>
461 A neutral interface to the C<Class::DBI> module which does not attempt
462 to automate table setup. It allows the user to manually set up
463 C<Class::DBI> classes, either by doing so within the Catalyst model
464 classes themselves, or by inheriting from existing C<Class::DBI>
467 =head2 L<Catalyst::Model::DBIC::Schema>
469 A L<DBIx::Class> model class that can use either an explicit
470 L<DBIx::Class::Schema> or one automatically loaded from your database
471 via L<DBIx::Class::Schema::Loader>.
473 =head2 L<Catalyst::Model::EVDB>
475 =head2 L<Catalyst::Model::File>
477 =head2 L<Catalyst::Model::Gedcom>
479 =head2 L<Catalyst::Model::LDAP>
481 =head2 L<Catalyst::Model::NetBlogger>
483 =head2 L<Catalyst::Model::Plucene>
485 A model class for the Plucene search engine.
487 =head2 L<Catalyst::Model::Proxy>
489 =head2 L<Catalyst::Model::SVN>
491 =head2 L<Catalyst::Model::Xapian>
493 A model class for the Xapian search engine.
497 =head2 L<Catalyst::View::Atom::XML>
499 =head2 L<Catalyst::View::Chart::Strip>
501 =head2 L<Catalyst::View::CSS::Squish>
503 =head2 L<Catalyst::View::Embperl>
505 =head2 L<Catalyst::View::GD::Barcode>
507 =head2 L<Catalyst::View::GraphViz>
509 =head2 L<Catalyst::View::HTML::Template>
511 A view component for rendering pages with L<HTML::Template>.
513 =head2 L<Catalyst::View::Jemplate>
515 =head2 L<Catalyst::View::JSON>
517 =head2 L<Catalyst::View::Mason>
519 A view component for rendering pages with L<HTML::Mason>.
521 =head2 L<Catalyst::View::MicroMason>
523 =head2 L<Catalyst::View::PHP>
525 =head2 L<Catalyst::View::PSP>
527 A view component for rendering pages using PSP, a Perl extension
528 implementing a JSP-like templating system. See L<Text::PSP>.
530 =head2 L<Catalyst::View::Petal>
532 A view component for rendering pages using Petal, the Perl Template
533 Attribute Language, an XML-based templating system. See L<Petal>.
535 =head2 L<Catalyst::View::TT>
537 A view component for rendering pages with Template Toolkit. See
540 =head2 L<Catalyst::View::XSLT>
542 =head2 L<Catalyst::View::vCard>
546 =head2 L<Catalyst::Action::RenderView>
548 Creates a sane, standard end method for your application.
550 =head1 OBSOLETE MODULES
552 =head2 L<Catalyst::Controller::BindLex>
554 Lets you mark lexical variables with a C<Stashed> attribute, automatically
555 passing them to the stash. Discouraged by the author.
557 =head2 L<Catalyst::Model::DBIC>
559 Replaced by L<Catalyst::Model::DBIC::Schema>.
561 =head2 L<Catalyst::Plugin::Authentication::Basic::Remote>
563 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
565 =head2 L<Catalyst::Plugin::Authentication::CDBI>
567 Replaced by L<Catalyst::Plugin::Authentication::Store::DBIC>.
569 =head2 L<Catalyst::Plugin::Authentication::CDBI::Basic>
571 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
573 =head2 L<Catalyst::Plugin::Authentication::LDAP>
575 Replaced by L<Catalyst::Plugin::Authentication::Store::LDAP>.
577 =head2 L<Catalyst::Plugin::Authentication::Simple>
579 Replaced by L<Catalyst::Plugin::Authentication>.
581 =head2 L<Catalyst::Plugin::Authorization::CDBI::GroupToken>
583 =head2 L<Catalyst::Plugin::CDBI::Transaction>
585 =head2 Catalyst::Plugin::Config::*
587 The L<Catalyst::Plugin::Config::JSON> and
588 L<Catalyst::Plugin::Config::YAML> modules have been replaced by their
589 corresponding L<Catalyst::Plugin::ConfigLoader> modules.
591 =head2 L<Catalyst::Plugin::DefaultEnd>
593 Replaced by L<Catalyst::Action::RenderView>
595 =head2 L<Catalyst::Plugin::SanitizeUrl>
597 =head2 L<Catalyst::Plugin::SanitizeUrl::PrepAction>
599 =head2 Catalyst::Plugin::Session::*
601 The L<Catalyst::Plugin::Session::CGISession>,
602 L<Catalyst::Plugin::Session::FastMmap>,
603 L<Catalyst::Plugin::Session::Flex>, and
604 L<Catalyst::Plugin::Session::Manager>
605 modules have been replaced by the <Catalyst::Plugin::Session> framework.
609 Catalyst Contributors, see Catalyst.pm
613 This library is free software. You can redistribute it and/or modify it under
614 the same terms as Perl itself.