Make =head1 NAME match the filename
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Components.pod
CommitLineData
cb93c9d7 1=head1 NAME
2
a481d68f 3Catalyst::Manual::Components - Reuseable components for Catalyst applications
cb93c9d7 4
5=head1 DESCRIPTION
6
bbddff00 7This section lists the some of the components (and plugins) that are
8available to extend the runtime functionality of Catalyst. Most components
cb93c9d7 9are not distributed with Catalyst but should be available from CPAN.
10They typically require additional modules from CPAN.
11
46a5f2f5 12This list may well be outdated by the time you read this, and some
13plugins may be deprecated, or, conversely, may now part of core
14L<Catalyst>. Be sure to check the Catalyst:: and CatalystX:: namespaces
15for additional components, and consult the mailing list (
16L<http://dev.catalyst.perl.org/wiki/Support> ) for advice on the current
17status or preferred use of your chosen plugin/framework.
cb93c9d7 18
19=head1 PLUGINS
20
21=head2 L<Catalyst::Plugin::Account::AutoDiscovery>
22
23Provides Account Auto-Discovery for Catalyst.
24
25=head2 L<Catalyst::Plugin::Acme::Scramble>
26
27Implements a potent meme about how easily we can read scrambled text if
28the first and last letters remain constant. Operates on text/plain and
29text/html served by your Catalyst application.
30
31=head2 L<Catalyst::Plugin::Alarm>
32
33=head2 L<Catalyst::Plugin::AtomPP>
34
35Allows you to dispatch AtomPP methods.
36
37=head2 L<Catalyst::Plugin::AtomServer>
38
39A plugin that implements the necessary bits to make it easy to build an
40Atom API server for any Catalyst-based application.
41
42=head2 L<Catalyst::Plugin::Authentication>
43
44An infrastructure plugin for the Catalyst authentication framework. Now the
45recommended way to do any form of Authentication.
46
bbddff00 47Note that newer versions of the authentication plugin allow multiple
48C<realms>, so that you can authenticate users in different ways in different
49parts of your application.
cb93c9d7 50
bbddff00 51This, however, has involved deprecated all classes in the
52C<Catalyst::Plugin::Authentication::Credential::XXX> and
53C<Catalyst::Plugin::Authentication::Store::XXX> namespaces.
cb93c9d7 54
46a5f2f5 55These plugins are still usable, but they have mostly been replaced with
56new modules in the new namespace which will work together.
cb93c9d7 57
bbddff00 58=head3 Available Credential modules:
59
60=head4 L<Catalyst::Authentication::Credential::AuthTkt>
61
62Allows you to use the L<Apache::AuthTkt> module with Catalyst.
63
64=head4 L<Catalyst::Authentication::Credential::FBConnect>
65
46a5f2f5 66Allows you to authenticate Facebook users using the FBConnect API.
bbddff00 67
68=head4 L<Catalyst::Authentication::Credential::Flickr>
cb93c9d7 69
70Provides authentication via Flickr, using its API.
71
bbddff00 72=head4 L<Catalyst::Authentication::Credential::HTTP>
73
74Allows you to authenticate users using HTTP Basic or Digest authentication.
75
76=head4 L<Catalyst::Authentication::Credential::HTTP::Proxy>
77
78Allows you to authenticate users against a remote web server
79offering HTTP authentication.
cb93c9d7 80
bbddff00 81=head4 L<Catalyst::Authentication::Credential::Kerberos>
cb93c9d7 82
bbddff00 83Allows you to authenticate your users against a Kerberos server.
cb93c9d7 84
bbddff00 85=head4 L<Catalyst::Authentication::Credential::OAuth>
cb93c9d7 86
46a5f2f5 87Allows you to authenticate users using their login on other websites
88supporting the OAuth protocol.
cb93c9d7 89
bbddff00 90=head4 L<Catalyst::Authentication::Credential::OpenID>
91
46a5f2f5 92Allows you to authenticate users using their login on other websites
93supporting the OpenID protocol.
bbddff00 94
95=head4 L<Catalyst::Authentication::Credential::Password>
cb93c9d7 96
58193af5 97Takes a username (or userid) and a password, and tries various methods of
cb93c9d7 98comparing a password based on what the chosen store's user objects support.
99Part of the Authentication Framework L<Catalyst::Plugin::Authentication>.
100
bbddff00 101=head4 L<Catalyst::Authentication::Credential::RPX>
102
46a5f2f5 103Allows you to authenticate users using the RPX protocol.
bbddff00 104
105=head4 L<Catalyst::Authentication::Credential::Remote>
cb93c9d7 106
46a5f2f5 107Allows you to authenticate users in Catalyst that have already been
108authenticated by your web server. This is useful for authenticating
bbddff00 109users with SSL Client certificates, and using NTLM or any other
110authentication protocol natively supported by your web server.
cb93c9d7 111
bbddff00 112=head4 L<Catalyst::Authentication::Credential::Testing>
cb93c9d7 113
46a5f2f5 114Allows you to set the same password for all users, which is useful when
115you want to test logging in as multiple users or multiple types of user,
116without having to mock things, or set all users' passwords in your test
117suite.
cb93c9d7 118
bbddff00 119=head4 L<Catalyst::Authentication::Credential::Authen::Simple>
cb93c9d7 120
bbddff00 121Allows any of the L<Authen::Simple> family of modules to be used
122to authenticate users in Catalyst.
cb93c9d7 123
46a5f2f5 124=head3 Available Store modules:
cb93c9d7 125
bbddff00 126=head4 L<Catalyst::Authentication::Store::DBIx::Class>
cb93c9d7 127
bbddff00 128Does authentication and authorization against a L<DBIx::Class> model.
129
130=head4 L<Catalyst::Authentication::Store::Htpasswd>
cb93c9d7 131
46a5f2f5 132Uses L<Authen::Htpasswd> to let your application use C<.htpasswd> files
133for its authentication storage.
cb93c9d7 134
bbddff00 135=head4 L<Catalyst::Authentication::Store::AuthTkt>
136
137This module implements the Catalyst::Authentication API for L<Apache::AuthTkt>.
138
139=head4 L<Catalyst::Authentication::Store::DBI>
cb93c9d7 140
bbddff00 141Allows you to use a plain L<DBI> database connection to identify users.
142
143=head4 L<Catalyst::Authentication::Store::Htpasswd>
144
46a5f2f5 145Allows you to use an Apache htpasswd type file to authenticate users.
bbddff00 146
147=head4 L<Catalyst::Authentication::Store::KiokuDB>
148
46a5f2f5 149Authenticate users stored as objects in the L<KiokuDB> object graph
150storage engine system.
bbddff00 151
152=head4 L<Catalyst::Authentication::Store::LDAP>
cb93c9d7 153
154Authenticates users using an LDAP server.
155
bbddff00 156=head4 L<Catalyst::Authentication::Store::Minimal>
cb93c9d7 157
58193af5 158Lets you create a very quick and dirty user database in your application's
cb93c9d7 159config hash. Great for getting up and running quickly.
160
bbddff00 161=head4 L<Catalyst::Authentication::Store::Null>
162
46a5f2f5 163The Null store is a transparent store where any supplied user data is
164accepted. This is mainly useful for remotely authenticating credentials
165(e.g. OpenID) which may not be tied to any local storage.
bbddff00 166
167=head4 L<Catalyst::Authentication::Store::RDBO>
168
169Allows access to authentication information stored in a database via a L<Rose::DB::Object> class.
170
171=head4 L<Catalyst::Authentication::Store::Tangram>
172
46a5f2f5 173Allows access to authentication information stored in a database via a
174L<Tangram> class.
bbddff00 175
176=head4 L<Catalyst::Authentication::Store::DBIx::Class>
177
46a5f2f5 178Allows access to authentication information stored in a database via a
179L<DBIx::Class> class.
bbddff00 180
181=head4 L<Catalyst::Authentication::Store::Jifty::DBI>
182
183Allows access to authentication information stored in a database via a L<Jifty::DBI> class.
184
185=head4 L<Catalyst::Authentication::User::Hash>
cb93c9d7 186
58193af5 187An easy authentication user object based on hashes.
bbddff00 188See L<Catalyst::Authentication::Store::Minimal> for more info.
cb93c9d7 189
190=head2 L<Catalyst::Plugin::Authorization::ACL>
191
58193af5 192This module provides Access Control List style path protection, with arbitrary
193rules for L<Catalyst> applications. It operates only on the Catalyst private
cb93c9d7 194namespace, at least at the moment.
195
196=head2 L<Catalyst::Plugin::Authorization::Roles>
197
46a5f2f5 198L<Catalyst::Plugin::Authorization::Roles> provides role-based
199authorization for Catalyst based on L<Catalyst::Plugin::Authentication>.
cb93c9d7 200
201=head2 L<Catalyst::Plugin::AutoSession>
202
203=head2 L<Catalyst::Plugin::Browser>
204
205Extends L<Catalyst::Request> by adding the capability of browser
206detection. It returns an instance of L<HTTP::BrowserDetect>, which lets
207you get information from the client's user agent.
208
bbddff00 209=head2 L<Catalyst::Plugin::Cache>
cb93c9d7 210
bbddff00 211Provides a cache method enabling easy access to a shared cache implementing
212the C<< Cache:: >> APO, such as:
cb93c9d7 213
bbddff00 214=over
215
216=item FastMmap
217
218=item FileCache
219
220=item BerkeleyDB
221
222=item Memcached
223
224=item CHI
225
226=back
cb93c9d7 227
228=head2 L<Catalyst::Plugin::CGI::Untaint>
229
230=head2 L<Catalyst::Plugin::Charsets::Japanese>
231
232=head2 L<Catalyst::Plugin::Compress::Bzip2>
233
234=head2 L<Catalyst::Plugin::Compress::Deflate>
235
236=head2 L<Catalyst::Plugin::Compress::Gzip>
237
238=head2 L<Catalyst::Plugin::Compress::Zlib>
239
240=head2 L<Catalyst::Plugin::ConfigLoader>
241
242Provides a standard method for loading config files. Support
243exists for various formats. See
c010ae0d 244L<Catalyst::Plugin::ConfigLoader::General>
cb93c9d7 245L<Catalyst::Plugin::ConfigLoader::INI>,
246L<Catalyst::Plugin::ConfigLoader::JSON>,
247L<Catalyst::Plugin::ConfigLoader::Perl>,
248L<Catalyst::Plugin::ConfigLoader::XML>, and
249L<Catalyst::Plugin::ConfigLoader::YAML>
250
251=head2 L<Catalyst::Plugin::ConfigurablePathTo>
252
cb93c9d7 253=head2 L<Catalyst::Plugin::Devel::InPageLogs>
254
255=head2 L<Catalyst::Plugin::Devel::InPageLogs::Log>
256
257=head2 L<Catalyst::Plugin::Dojo>
258
259=head2 L<Catalyst::Plugin::Dumper>
260
261=head2 L<Catalyst::Plugin::Email>
262
263Sends email with L<Email::Send> and L<Email::MIME::Creator>.
264
265=head2 L<Catalyst::Plugin::Email::Japanese>
266
267=head2 L<Catalyst::Plugin::Email::Page>
268
269=head2 L<Catalyst::Plugin::EmailValid>
270
271=head2 L<Catalyst::Plugin::FillInForm>
272
273A plugin based on C<HTML::FillInForm>, which describes itself as a module
274to automatically insert data from a previous HTML form into the HTML input,
275textarea, radio buttons, checkboxes, and select tags. C<HTML::FillInForm>
276is a subclass of C<HTML::Parser> and uses it to parse the HTML and insert
277the values into the form tags.
278
279=head2 L<Catalyst::Plugin::Flavour>
280
cb93c9d7 281=head2 L<Catalyst::Plugin::Geography>
282
283Allows you to retrieve various kinds of geographical information. You can
284retrieve the country or code from the current user, from a given IP
285address, or from a given hostname.
286
287=head2 L<Catalyst::Plugin::Geography::Implementation>
288
289=head2 L<Catalyst::Plugin::HashedCookies>
290
291=head2 L<Catalyst::Plugin::HTML::Scrubber>
292
cb93c9d7 293=head2 L<Catalyst::Plugin::I18N>
294
295An internationalization plugin for Catalyst. Supports C<mo>/C<po> files
296and Maketext classes under your application's I18N namespace.
297
298=head2 L<Catalyst::Plugin::JSONRPC>
299
cb93c9d7 300=head2 L<Catalyst::Plugin::Message>
301
302=head2 L<Catalyst::Plugin::MobileAgent>
303
304=head2 L<Catalyst::Plugin::Observe>
305
306Provides the ability to register AOP-like callbacks to specific Engine
307events. Subclasses L<Class::Publisher>.
308
309=head2 L<Catalyst::Plugin::OrderedParams>
310
311Adjusts the way that parameters operate, causing them to appear in the same
312order they were submitted by the browser. This can be useful for creating
313things such as email forms.
314
315=head2 L<Catalyst::Plugin::PageCache>
316
317Helps improve the performance of slow or frequently accessed pages by
318caching the entire output of your page. Subsequent requests to the page
319will receive the page very quickly from cache.
320
321=head2 L<Catalyst::Plugin::Params::Nested>
322
323=head2 L<Catalyst::Plugin::Params::Nested::Expander>
324
325=head2 L<Catalyst::Plugin::Pluggable>
326
327A plugin for pluggable Catalyst applications.
328
329=head2 L<Catalyst::Plugin::Prototype>
330
46a5f2f5 331A plugin for the Prototype JavaScript library. This plugin allows you to
cb93c9d7 332easily implement AJAX functionality without actually knowing Javascript.
333
334=head2 L<Catalyst::Plugin::Redirect>
335
336=head2 L<Catalyst::Plugin::RequestToken>
337
338=head2 L<Catalyst::Plugin::RequireSSL>
339
340Use this if you would like to force visitors to access certain pages using
341only SSL mode. An attempt to access the page in non-SSL mode will receive a
342redirect into SSL mode. Useful for login pages, shopping carts, user
343registration forms, and other sensitive data.
344
345=head2 L<Catalyst::Plugin::Scheduler>
346
347=head2 L<Catalyst::Plugin::Session>
348
349The L<Catalyst::Plugin::Session> series of modules provide an easy way to
350include session handling in an application. You can choose from several
351different backend storage methods and combine that with your choice of
352client-side storage methods.
353
354=head2 L<Catalyst::Plugin::Session::PerUser>
355
356=head2 L<Catalyst::Plugin::Session::State>
357
358=head2 L<Catalyst::Plugin::Session::State::Cookie>
359
360=head2 L<Catalyst::Plugin::Session::State::URI>
361
362=head2 L<Catalyst::Plugin::Session::Store>
363
364=head2 L<Catalyst::Plugin::Session::Store::CDBI>
365
366=head2 L<Catalyst::Plugin::Session::Store::DBI>
367
368=head2 L<Catalyst::Plugin::Session::Store::DBIC>
369
370=head2 L<Catalyst::Plugin::Session::Store::Dummy>
371
372=head2 L<Catalyst::Plugin::Session::Store::FastMmap>
373
374=head2 L<Catalyst::Plugin::Session::Store::File>
375
376=head2 L<Catalyst::Plugin::Session::Store::Memcached>
377
378=head2 L<Catalyst::Plugin::Session::Test::Store>
379
380=head2 L<Catalyst::Plugin::Singleton>
381
382=head2 L<Catalyst::Plugin::Snippets>
383
384=head2 L<Catalyst::Plugin::SRU>
385
386Allows your controller class to dispatch SRU actions (C<explain>, C<scan>,
387and C<searchRetrieve>) from its own class.
388
389=head2 L<Catalyst::Plugin::StackTrace>
390
391=head2 L<Catalyst::Plugin::Static>
392
393L<Catalyst::Plugin::Static> is a plugin to serve static files from
bbddff00 394C<< $c->config(root => 'foo') >>. Intended chiefly for development
cb93c9d7 395purposes.
396
397=head2 L<Catalyst::Plugin::Static::Simple>
398
399Serves static files in your application without requiring a single line of
bbddff00 400code.
cb93c9d7 401
402=head2 L<Catalyst::Plugin::SubRequest>
403
404A plugin to allow subrequests to actions to be made within Catalyst. Nice
405for portal software and such.
406
407=head2 L<Catalyst::Plugin::SuperForm>
408
409An interface to the L<HTML::SuperForm> module, enabling easy HTML form
410creation.
411
5521f179 412=head2 L<Catalyst::Plugin::Unicode::Encoding>
cb93c9d7 413
414Provides a Unicode-aware Catalyst. On request, it decodes all params from
415UTF-8 octets into a sequence of logical characters. On response, it encodes
416the body into UTF-8 octets.
417
5521f179 418=head2 L<Catalyst::Plugin::Unicode>
419
420Disrecommended plugin which tries to autodetect the uft8ness of the output
421and do the correct thing. This may work in some cases, but if it helps,
422you've already painted yourself into a corner - try to avoid!
cb93c9d7 423
424=head2 L<Catalyst::Plugin::Upload::Basename>
425
426=head2 L<Catalyst::Plugin::Upload::MD5>
427
428=head2 L<Catalyst::Plugin::Upload::MIME>
429
430=head2 L<Catalyst::Plugin::UploadProgress>
431
432=head2 L<Catalyst::Plugin::XMLRPC>
433
434Allows your Controller class to dispatch XMLRPC methods from its own class.
435
436=head1 CONTROLLERS
437
58193af5 438=head2 L<Catalyst::Controller::HTML::FormFu>
cb93c9d7 439
58193af5 440Catalyst integration for <HTML::FormFu>.
cb93c9d7 441
442=head1 MODELS
443
444=head2 L<Catalyst::Model::CDBI>
445
446The C<Class::DBI> (CDBI) model class. It is built on top of
447C<Class::DBI::Loader>, which automates the definition of C<Class::DBI>
448sub-classes by scanning the underlying table schemas, setting up columns
449and primary keys.
450
451=head2 L<Catalyst::Model::CDBI::Plain>
452
453A neutral interface to the C<Class::DBI> module which does not attempt
454to automate table setup. It allows the user to manually set up
455C<Class::DBI> classes, either by doing so within the Catalyst model
456classes themselves, or by inheriting from existing C<Class::DBI>
457classes.
458
459=head2 L<Catalyst::Model::DBIC::Schema>
460
461A L<DBIx::Class> model class that can use either an explicit
462L<DBIx::Class::Schema> or one automatically loaded from your database
463via L<DBIx::Class::Schema::Loader>.
464
465=head2 L<Catalyst::Model::EVDB>
466
467=head2 L<Catalyst::Model::File>
468
469=head2 L<Catalyst::Model::Gedcom>
470
471=head2 L<Catalyst::Model::LDAP>
472
473=head2 L<Catalyst::Model::NetBlogger>
474
475=head2 L<Catalyst::Model::Plucene>
476
477A model class for the Plucene search engine.
478
479=head2 L<Catalyst::Model::Proxy>
480
481=head2 L<Catalyst::Model::SVN>
482
483=head2 L<Catalyst::Model::Xapian>
484
485A model class for the Xapian search engine.
486
487=head1 VIEWS
488
489=head2 L<Catalyst::View::Atom::XML>
490
491=head2 L<Catalyst::View::Chart::Strip>
492
493=head2 L<Catalyst::View::CSS::Squish>
494
495=head2 L<Catalyst::View::Embperl>
496
497=head2 L<Catalyst::View::GD::Barcode>
498
499=head2 L<Catalyst::View::GraphViz>
500
501=head2 L<Catalyst::View::HTML::Template>
502
503A view component for rendering pages with L<HTML::Template>.
504
505=head2 L<Catalyst::View::Jemplate>
506
507=head2 L<Catalyst::View::JSON>
508
509=head2 L<Catalyst::View::Mason>
510
511A view component for rendering pages with L<HTML::Mason>.
512
513=head2 L<Catalyst::View::MicroMason>
514
515=head2 L<Catalyst::View::PHP>
516
517=head2 L<Catalyst::View::PSP>
518
519A view component for rendering pages using PSP, a Perl extension
520implementing a JSP-like templating system. See L<Text::PSP>.
521
522=head2 L<Catalyst::View::Petal>
523
524A view component for rendering pages using Petal, the Perl Template
525Attribute Language, an XML-based templating system. See L<Petal>.
526
527=head2 L<Catalyst::View::TT>
528
529A view component for rendering pages with Template Toolkit. See
530L<Template::Manual>.
531
532=head2 L<Catalyst::View::XSLT>
533
534=head2 L<Catalyst::View::vCard>
535
bbddff00 536=head1 Actions
537
538=head2 L<Catalyst::Action::RenderView>
539
540Creates a sane, standard end method for your application.
541
cb93c9d7 542=head1 OBSOLETE MODULES
543
58193af5 544=head2 L<Catalyst::Controller::BindLex>
545
546Lets you mark lexical variables with a C<Stashed> attribute, automatically
547passing them to the stash. Discouraged by the author.
548
cb93c9d7 549=head2 L<Catalyst::Model::DBIC>
550
551Replaced by L<Catalyst::Model::DBIC::Schema>.
552
553=head2 L<Catalyst::Plugin::Authentication::Basic::Remote>
554
555Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
556
557=head2 L<Catalyst::Plugin::Authentication::CDBI>
558
559Replaced by L<Catalyst::Plugin::Authentication::Store::DBIC>.
560
561=head2 L<Catalyst::Plugin::Authentication::CDBI::Basic>
562
563Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
564
565=head2 L<Catalyst::Plugin::Authentication::LDAP>
566
567Replaced by L<Catalyst::Plugin::Authentication::Store::LDAP>.
568
569=head2 L<Catalyst::Plugin::Authentication::Simple>
570
571Replaced by L<Catalyst::Plugin::Authentication>.
572
573=head2 L<Catalyst::Plugin::Authorization::CDBI::GroupToken>
574
575=head2 L<Catalyst::Plugin::CDBI::Transaction>
576
577=head2 Catalyst::Plugin::Config::*
578
579The L<Catalyst::Plugin::Config::JSON> and
580L<Catalyst::Plugin::Config::YAML> modules have been replaced by their
581corresponding L<Catalyst::Plugin::ConfigLoader> modules.
582
583=head2 L<Catalyst::Plugin::DefaultEnd>
584
585Replaced by L<Catalyst::Action::RenderView>
586
587=head2 L<Catalyst::Plugin::SanitizeUrl>
588
589=head2 L<Catalyst::Plugin::SanitizeUrl::PrepAction>
590
591=head2 Catalyst::Plugin::Session::*
592
58193af5 593The L<Catalyst::Plugin::Session::CGISession>,
cb93c9d7 594L<Catalyst::Plugin::Session::FastMmap>,
595L<Catalyst::Plugin::Session::Flex>, and
596L<Catalyst::Plugin::Session::Manager>
597modules have been replaced by the <Catalyst::Plugin::Session> framework.
598
599=head1 AUTHORS
600
bbddff00 601Catalyst Contributors, see Catalyst.pm
cb93c9d7 602
603=head1 COPYRIGHT
604
bbddff00 605This library is free software. You can redistribute it and/or modify it under
cb93c9d7 606the same terms as Perl itself.
bbddff00 607
608=cut
609