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