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