grammar; minor correction to namespace references
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Components.pod
1 =head1 NAME
2
3 Catalyst::Manual::Components - Reuseable components for Catalyst applications
4
5 =head1 DESCRIPTION
6
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.
11
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.
18
19 =head1 PLUGINS
20
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>.
24
25 =head2 L<Catalyst::Plugin::Account::AutoDiscovery>
26
27 Provides Account Auto-Discovery for Catalyst.
28
29 =head2 L<Catalyst::Plugin::Acme::Scramble>
30
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.
35
36 =head2 L<Catalyst::Plugin::Alarm>
37
38 =head2 L<Catalyst::Plugin::AtomPP>
39
40 Allows you to dispatch AtomPP methods.
41
42 =head2 L<Catalyst::Plugin::AtomServer>
43
44 A plugin that implements the necessary bits to make it easy to build an
45 Atom API server for any Catalyst-based application.
46
47 =head2 L<Catalyst::Plugin::Authentication>
48
49 An infrastructure plugin for the Catalyst authentication framework. Now the
50 recommended way to do any form of Authentication.
51
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.
55
56 This, however, has involved deprecating all classes in the
57 C<Catalyst::Plugin::Authentication::Credential::> and
58 C<Catalyst::Plugin::Authentication::Store::> namespaces.
59
60 These plugins are still usable, but they have mostly been replaced with
61 new modules in the new namespace which will work together.
62
63 =head3 Available Credential modules:
64
65 =head4 L<Catalyst::Authentication::Credential::AuthTkt>
66
67 Allows you to use the L<Apache::AuthTkt> module with Catalyst.
68
69 =head4 L<Catalyst::Authentication::Credential::FBConnect>
70
71 Allows you to authenticate Facebook users using the FBConnect API.
72
73 =head4 L<Catalyst::Authentication::Credential::Flickr>
74
75 Provides authentication via Flickr, using its API.
76
77 =head4 L<Catalyst::Authentication::Credential::HTTP>
78
79 Allows you to authenticate users using HTTP Basic or Digest authentication.
80
81 =head4 L<Catalyst::Authentication::Credential::HTTP::Proxy>
82
83 Allows you to authenticate users against a remote web server
84 offering HTTP authentication.
85
86 =head4 L<Catalyst::Authentication::Credential::Kerberos>
87
88 Allows you to authenticate your users against a Kerberos server.
89
90 =head4 L<Catalyst::Authentication::Credential::OAuth>
91
92 Allows you to authenticate users using their login on other websites
93 supporting the OAuth protocol.
94
95 =head4 L<Catalyst::Authentication::Credential::OpenID>
96
97 Allows you to authenticate users using their login on other websites
98 supporting the OpenID protocol.
99
100 =head4 L<Catalyst::Authentication::Credential::Password>
101
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>.
105
106 =head4 L<Catalyst::Authentication::Credential::RPX>
107
108 Allows you to authenticate users using the RPX protocol.
109
110 =head4 L<Catalyst::Authentication::Credential::Remote>
111
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.
116
117 =head4 L<Catalyst::Authentication::Credential::Testing>
118
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
122 suite.
123
124 =head4 L<Catalyst::Authentication::Credential::Authen::Simple>
125
126 Allows any of the L<Authen::Simple> family of modules to be used
127 to authenticate users in Catalyst.
128
129 =head3 Available Store modules:
130
131 =head4 L<Catalyst::Authentication::Store::DBIx::Class>
132
133 Does authentication and authorization against a L<DBIx::Class> model.
134
135 =head4 L<Catalyst::Authentication::Store::Htpasswd>
136
137 Uses L<Authen::Htpasswd> to let your application use C<.htpasswd> files
138 for its authentication storage.
139
140 =head4 L<Catalyst::Authentication::Store::AuthTkt>
141
142 This module implements the Catalyst::Authentication API for L<Apache::AuthTkt>.
143
144 =head4 L<Catalyst::Authentication::Store::DBI>
145
146 Allows you to use a plain L<DBI> database connection to identify users. 
147
148 =head4 L<Catalyst::Authentication::Store::Htpasswd>
149
150 Allows you to use an Apache htpasswd type file to authenticate users.
151
152 =head4 L<Catalyst::Authentication::Store::KiokuDB>
153
154 Authenticate users stored as objects in the L<KiokuDB> object graph
155 storage engine system.
156
157 =head4 L<Catalyst::Authentication::Store::LDAP>
158
159 Authenticates users using an LDAP server.
160
161 =head4 L<Catalyst::Authentication::Store::Minimal>
162
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.
165
166 =head4 L<Catalyst::Authentication::Store::Null>
167
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.
171
172 =head4 L<Catalyst::Authentication::Store::RDBO>
173
174 Allows access to authentication information stored in a database via a L<Rose::DB::Object> class.
175
176 =head4 L<Catalyst::Authentication::Store::Tangram>
177
178 Allows access to authentication information stored in a database via a
179 L<Tangram> class.
180
181 =head4 L<Catalyst::Authentication::Store::DBIx::Class>
182
183 Allows access to authentication information stored in a database via a
184 L<DBIx::Class> class.
185
186 =head4 L<Catalyst::Authentication::Store::Jifty::DBI>
187
188 Allows access to authentication information stored in a database via a L<Jifty::DBI> class.
189
190 =head4 L<Catalyst::Authentication::User::Hash>
191
192 An easy authentication user object based on hashes.
193 See L<Catalyst::Authentication::Store::Minimal> for more info.
194
195 =head2 L<Catalyst::Plugin::Authorization::ACL>
196
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.
200
201 =head2 L<Catalyst::Plugin::Authorization::Roles>
202
203 L<Catalyst::Plugin::Authorization::Roles> provides role-based
204 authorization for Catalyst based on L<Catalyst::Plugin::Authentication>.
205
206 =head2 L<Catalyst::Plugin::AutoSession>
207
208 L<Catalyst::Plugin::AutoSession> enables specified request parameters
209 to generate session variables.
210
211 =head2 L<Catalyst::Plugin::Browser>
212
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.
216
217 =head2 L<Catalyst::Plugin::Cache>
218
219 Provides a cache method enabling easy access to a shared cache implementing
220 the C<< Cache:: >> APO, such as:
221
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
235
236 =head2 L<Catalyst::Plugin::CGI::Untaint>
237
238 =head2 L<Catalyst::Plugin::Charsets::Japanese>
239
240 Provides specific charset handlers for the Japanese charsets.
241
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
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>
260
261 =head2 L<Catalyst::Plugin::ConfigurablePathTo>
262
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
271 =head2 L<Catalyst::Plugin::Email::Japanese>
272
273 =head2 L<Catalyst::Plugin::Email::Page>
274
275 =head2 L<Catalyst::Plugin::FillInForm>
276
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.
282
283 =head2 L<Catalyst::Plugin::Flavour>
284
285 =head2 L<Catalyst::Plugin::Geography>
286
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.
290
291 =head2 L<Catalyst::Plugin::Geography::Implementation>
292
293 =head2 L<Catalyst::Plugin::HashedCookies>
294
295 =head2 L<Catalyst::Plugin::HTML::Scrubber>
296
297 =head2 L<Catalyst::Plugin::I18N>
298
299 An internationalization plugin for Catalyst. Supports C<mo>/C<po> files
300 and Maketext classes under your application's I18N namespace.
301
302 =head2 L<Catalyst::Plugin::JSONRPC>
303
304 =head2 L<Catalyst::Plugin::Message>
305
306 =head2 L<Catalyst::Plugin::MobileAgent>
307
308 =head2 L<Catalyst::Plugin::Observe>
309
310 Provides the ability to register AOP-like callbacks to specific Engine
311 events. Subclasses L<Class::Publisher>.
312
313 =head2 L<Catalyst::Plugin::OrderedParams>
314
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.
318
319 =head2 L<Catalyst::Plugin::PageCache>
320
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.
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
331 A plugin for pluggable Catalyst applications.
332
333 =head2 L<Catalyst::Plugin::Prototype>
334
335 A plugin for the Prototype JavaScript library. This plugin allows you to
336 easily implement AJAX functionality without actually knowing Javascript.
337
338 =head2 L<Catalyst::Plugin::Redirect>
339
340 Allows for easy redirecting with the Catalyst app.
341
342 =head2 L<Catalyst::Plugin::RequestToken>
343
344 =head2 L<Catalyst::Plugin::RequireSSL>
345
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.
350
351 =head2 L<Catalyst::Plugin::Scheduler>
352
353 =head2 L<Catalyst::Plugin::Session>
354
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.
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
392 Allows your controller class to dispatch SRU actions (C<explain>, C<scan>,
393 and C<searchRetrieve>) from its own class.
394
395 =head2 L<Catalyst::Plugin::StackTrace>
396
397 =head2 L<Catalyst::Plugin::Static>
398
399 L<Catalyst::Plugin::Static> is a plugin to serve static files from
400 C<< $c->config(root => 'foo') >>. Intended chiefly for development
401 purposes.
402
403 =head2 L<Catalyst::Plugin::Static::Simple>
404
405 Serves static files in your application without requiring a single line of
406 code.
407
408 =head2 L<Catalyst::Plugin::SubRequest>
409
410 A plugin to allow subrequests to actions to be made within Catalyst. Nice
411 for portal software and such.
412
413 =head2 L<Catalyst::Plugin::SuperForm>
414
415 An interface to the L<HTML::SuperForm> module, enabling easy HTML form
416 creation.
417
418 =head2 L<Catalyst::Plugin::Unicode::Encoding>
419
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.
423
424 =head2 L<Catalyst::Plugin::Unicode>
425
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!
429
430 =head2 L<Catalyst::Plugin::Upload::Basename>
431
432 =head2 L<Catalyst::Plugin::Upload::MD5>
433
434 Computes the MD5 message digest of uploaded files.
435
436 =head2 L<Catalyst::Plugin::Upload::MIME>
437
438 =head2 L<Catalyst::Plugin::UploadProgress>
439
440 =head2 L<Catalyst::Plugin::XMLRPC>
441
442 Allows your Controller class to dispatch XMLRPC methods from its own class.
443
444 =head1 CONTROLLERS
445
446 =head2 L<Catalyst::Controller::HTML::FormFu>
447
448 Catalyst integration for <HTML::FormFu>.
449
450 =head1 MODELS
451
452 =head2 L<Catalyst::Model::CDBI>
453
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
457 and primary keys.
458
459 =head2 L<Catalyst::Model::CDBI::Plain>
460
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>
465 classes.
466
467 =head2 L<Catalyst::Model::DBIC::Schema>
468
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>.
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
485 A 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
493 A 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
511 A 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
519 A 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
527 A view component for rendering pages using PSP, a Perl extension
528 implementing a JSP-like templating system. See L<Text::PSP>.
529
530 =head2 L<Catalyst::View::Petal>
531
532 A view component for rendering pages using Petal, the Perl Template
533 Attribute Language, an XML-based templating system. See L<Petal>.
534
535 =head2 L<Catalyst::View::TT>
536
537 A view component for rendering pages with Template Toolkit. See
538 L<Template::Manual>.
539
540 =head2 L<Catalyst::View::XSLT>
541
542 =head2 L<Catalyst::View::vCard>
543
544 =head1 Actions
545
546 =head2 L<Catalyst::Action::RenderView>
547
548 Creates a sane, standard end method for your application.
549
550 =head1 OBSOLETE MODULES
551
552 =head2 L<Catalyst::Controller::BindLex>
553
554 Lets you mark lexical variables with a C<Stashed> attribute, automatically
555 passing them to the stash. Discouraged by the author.
556
557 =head2 L<Catalyst::Model::DBIC>
558
559 Replaced by L<Catalyst::Model::DBIC::Schema>.
560
561 =head2 L<Catalyst::Plugin::Authentication::Basic::Remote>
562
563 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
564
565 =head2 L<Catalyst::Plugin::Authentication::CDBI>
566
567 Replaced by L<Catalyst::Plugin::Authentication::Store::DBIC>.
568
569 =head2 L<Catalyst::Plugin::Authentication::CDBI::Basic>
570
571 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
572
573 =head2 L<Catalyst::Plugin::Authentication::LDAP>
574
575 Replaced by L<Catalyst::Plugin::Authentication::Store::LDAP>.
576
577 =head2 L<Catalyst::Plugin::Authentication::Simple>
578
579 Replaced 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
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.
590
591 =head2 L<Catalyst::Plugin::DefaultEnd>
592
593 Replaced 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
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.
606
607 =head1 AUTHORS
608
609 Catalyst Contributors, see Catalyst.pm
610
611 =head1 COPYRIGHT
612
613 This library is free software. You can redistribute it and/or modify it under
614 the same terms as Perl itself.
615
616 =cut
617