Fix svn and git uris
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Components.pod
CommitLineData
cb93c9d7 1=head1 NAME
2
bbddff00 3Catalyst::Manual::Component - 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
12This list may well be outdated by the time you read this and some
13plugins may be deprecated or now part of core L<Catalyst>. Be sure to
bbddff00 14check the Catalyst:: and CatalystX:: namespaces for additional components and consult
cb93c9d7 15the mailing list ( L<http://dev.catalyst.perl.org/wiki/Support> ) for
16advice on the current status or preferred use of your chosen
17plugin/framework.
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
bbddff00 55These plugins are still useable, however they have mostly been
56replaced with new 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
66Allows you to authenticate facebook users using the FBConnect API.
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
bbddff00 87Allows you to authenticate users using their login on other websites supporting
88the OAuth protocol.
cb93c9d7 89
bbddff00 90=head4 L<Catalyst::Authentication::Credential::OpenID>
91
92Allows you to authenticate users using their login on other websites supporting
93the OpenID protocol.
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
103Allows you to autheticate users using the RPX protocol.
104
105=head4 L<Catalyst::Authentication::Credential::Remote>
cb93c9d7 106
bbddff00 107Allows you to authenticate users in Catalyst which have already been
108authenticated by your web server - this is useful for authenticating
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
bbddff00 114Allows you to set the same password for all users, which is useful
115when you want to test logging in as multiple users / types of user,
116without having to mock things, or set all users passwords in your
117test suite.
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
bbddff00 124=head3 LAvailable 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
58193af5 132Uses L<Authen::Htpasswd> to let your application use C<.htpasswd> files for its
cb93c9d7 133authentication storage.
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
145Allows you to use an apache htpassed type file to authenticate users from.
146
147=head4 L<Catalyst::Authentication::Store::KiokuDB>
148
149Authenticate users stored as objects in the L<KiokuDB> object graph storage
150engine system.
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
163The Null store is a transparent store where any supplied user data is accepted.
164This is mainly useful for remotely authenticating credentials (e.g. OpenID) which
165may not be tied to any local storage.
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
173Allows access to authentication information stored in a database via a L<Tangram> class.
174
175=head4 L<Catalyst::Authentication::Store::DBIx::Class>
176
177Allows access to authentication information stored in a database via a L<DBIx::Class> class.
178
179=head4 L<Catalyst::Authentication::Store::Jifty::DBI>
180
181Allows access to authentication information stored in a database via a L<Jifty::DBI> class.
182
183=head4 L<Catalyst::Authentication::User::Hash>
cb93c9d7 184
58193af5 185An easy authentication user object based on hashes.
bbddff00 186See L<Catalyst::Authentication::Store::Minimal> for more info.
cb93c9d7 187
188=head2 L<Catalyst::Plugin::Authorization::ACL>
189
58193af5 190This module provides Access Control List style path protection, with arbitrary
191rules for L<Catalyst> applications. It operates only on the Catalyst private
cb93c9d7 192namespace, at least at the moment.
193
194=head2 L<Catalyst::Plugin::Authorization::Roles>
195
58193af5 196L<Catalyst::Plugin::Authorization::Roles> provides role based authorization
197for Catalyst based on L<Catalyst::Plugin::Authentication>.
cb93c9d7 198
199=head2 L<Catalyst::Plugin::AutoSession>
200
201=head2 L<Catalyst::Plugin::Browser>
202
203Extends L<Catalyst::Request> by adding the capability of browser
204detection. It returns an instance of L<HTTP::BrowserDetect>, which lets
205you get information from the client's user agent.
206
bbddff00 207=head2 L<Catalyst::Plugin::Cache>
cb93c9d7 208
bbddff00 209Provides a cache method enabling easy access to a shared cache implementing
210the C<< Cache:: >> APO, such as:
cb93c9d7 211
bbddff00 212=over
213
214=item FastMmap
215
216=item FileCache
217
218=item BerkeleyDB
219
220=item Memcached
221
222=item CHI
223
224=back
cb93c9d7 225
226=head2 L<Catalyst::Plugin::CGI::Untaint>
227
228=head2 L<Catalyst::Plugin::Charsets::Japanese>
229
230=head2 L<Catalyst::Plugin::Compress::Bzip2>
231
232=head2 L<Catalyst::Plugin::Compress::Deflate>
233
234=head2 L<Catalyst::Plugin::Compress::Gzip>
235
236=head2 L<Catalyst::Plugin::Compress::Zlib>
237
238=head2 L<Catalyst::Plugin::ConfigLoader>
239
240Provides a standard method for loading config files. Support
241exists for various formats. See
c010ae0d 242L<Catalyst::Plugin::ConfigLoader::General>
cb93c9d7 243L<Catalyst::Plugin::ConfigLoader::INI>,
244L<Catalyst::Plugin::ConfigLoader::JSON>,
245L<Catalyst::Plugin::ConfigLoader::Perl>,
246L<Catalyst::Plugin::ConfigLoader::XML>, and
247L<Catalyst::Plugin::ConfigLoader::YAML>
248
249=head2 L<Catalyst::Plugin::ConfigurablePathTo>
250
cb93c9d7 251=head2 L<Catalyst::Plugin::Devel::InPageLogs>
252
253=head2 L<Catalyst::Plugin::Devel::InPageLogs::Log>
254
255=head2 L<Catalyst::Plugin::Dojo>
256
257=head2 L<Catalyst::Plugin::Dumper>
258
259=head2 L<Catalyst::Plugin::Email>
260
261Sends email with L<Email::Send> and L<Email::MIME::Creator>.
262
263=head2 L<Catalyst::Plugin::Email::Japanese>
264
265=head2 L<Catalyst::Plugin::Email::Page>
266
267=head2 L<Catalyst::Plugin::EmailValid>
268
269=head2 L<Catalyst::Plugin::FillInForm>
270
271A plugin based on C<HTML::FillInForm>, which describes itself as a module
272to automatically insert data from a previous HTML form into the HTML input,
273textarea, radio buttons, checkboxes, and select tags. C<HTML::FillInForm>
274is a subclass of C<HTML::Parser> and uses it to parse the HTML and insert
275the values into the form tags.
276
277=head2 L<Catalyst::Plugin::Flavour>
278
cb93c9d7 279=head2 L<Catalyst::Plugin::Geography>
280
281Allows you to retrieve various kinds of geographical information. You can
282retrieve the country or code from the current user, from a given IP
283address, or from a given hostname.
284
285=head2 L<Catalyst::Plugin::Geography::Implementation>
286
287=head2 L<Catalyst::Plugin::HashedCookies>
288
289=head2 L<Catalyst::Plugin::HTML::Scrubber>
290
cb93c9d7 291=head2 L<Catalyst::Plugin::I18N>
292
293An internationalization plugin for Catalyst. Supports C<mo>/C<po> files
294and Maketext classes under your application's I18N namespace.
295
296=head2 L<Catalyst::Plugin::JSONRPC>
297
cb93c9d7 298=head2 L<Catalyst::Plugin::Message>
299
300=head2 L<Catalyst::Plugin::MobileAgent>
301
302=head2 L<Catalyst::Plugin::Observe>
303
304Provides the ability to register AOP-like callbacks to specific Engine
305events. Subclasses L<Class::Publisher>.
306
307=head2 L<Catalyst::Plugin::OrderedParams>
308
309Adjusts the way that parameters operate, causing them to appear in the same
310order they were submitted by the browser. This can be useful for creating
311things such as email forms.
312
313=head2 L<Catalyst::Plugin::PageCache>
314
315Helps improve the performance of slow or frequently accessed pages by
316caching the entire output of your page. Subsequent requests to the page
317will receive the page very quickly from cache.
318
319=head2 L<Catalyst::Plugin::Params::Nested>
320
321=head2 L<Catalyst::Plugin::Params::Nested::Expander>
322
323=head2 L<Catalyst::Plugin::Pluggable>
324
325A plugin for pluggable Catalyst applications.
326
327=head2 L<Catalyst::Plugin::Prototype>
328
329A plugin for the Prototype JavaScript library. This Plugin allows you to
330easily implement AJAX functionality without actually knowing Javascript.
331
332=head2 L<Catalyst::Plugin::Redirect>
333
334=head2 L<Catalyst::Plugin::RequestToken>
335
336=head2 L<Catalyst::Plugin::RequireSSL>
337
338Use this if you would like to force visitors to access certain pages using
339only SSL mode. An attempt to access the page in non-SSL mode will receive a
340redirect into SSL mode. Useful for login pages, shopping carts, user
341registration forms, and other sensitive data.
342
343=head2 L<Catalyst::Plugin::Scheduler>
344
345=head2 L<Catalyst::Plugin::Session>
346
347The L<Catalyst::Plugin::Session> series of modules provide an easy way to
348include session handling in an application. You can choose from several
349different backend storage methods and combine that with your choice of
350client-side storage methods.
351
352=head2 L<Catalyst::Plugin::Session::PerUser>
353
354=head2 L<Catalyst::Plugin::Session::State>
355
356=head2 L<Catalyst::Plugin::Session::State::Cookie>
357
358=head2 L<Catalyst::Plugin::Session::State::URI>
359
360=head2 L<Catalyst::Plugin::Session::Store>
361
362=head2 L<Catalyst::Plugin::Session::Store::CDBI>
363
364=head2 L<Catalyst::Plugin::Session::Store::DBI>
365
366=head2 L<Catalyst::Plugin::Session::Store::DBIC>
367
368=head2 L<Catalyst::Plugin::Session::Store::Dummy>
369
370=head2 L<Catalyst::Plugin::Session::Store::FastMmap>
371
372=head2 L<Catalyst::Plugin::Session::Store::File>
373
374=head2 L<Catalyst::Plugin::Session::Store::Memcached>
375
376=head2 L<Catalyst::Plugin::Session::Test::Store>
377
378=head2 L<Catalyst::Plugin::Singleton>
379
380=head2 L<Catalyst::Plugin::Snippets>
381
382=head2 L<Catalyst::Plugin::SRU>
383
384Allows your controller class to dispatch SRU actions (C<explain>, C<scan>,
385and C<searchRetrieve>) from its own class.
386
387=head2 L<Catalyst::Plugin::StackTrace>
388
389=head2 L<Catalyst::Plugin::Static>
390
391L<Catalyst::Plugin::Static> is a plugin to serve static files from
bbddff00 392C<< $c->config(root => 'foo') >>. Intended chiefly for development
cb93c9d7 393purposes.
394
395=head2 L<Catalyst::Plugin::Static::Simple>
396
397Serves static files in your application without requiring a single line of
bbddff00 398code.
cb93c9d7 399
400=head2 L<Catalyst::Plugin::SubRequest>
401
402A plugin to allow subrequests to actions to be made within Catalyst. Nice
403for portal software and such.
404
405=head2 L<Catalyst::Plugin::SuperForm>
406
407An interface to the L<HTML::SuperForm> module, enabling easy HTML form
408creation.
409
cb93c9d7 410=head2 L<Catalyst::Plugin::Unicode>
411
412Provides a Unicode-aware Catalyst. On request, it decodes all params from
413UTF-8 octets into a sequence of logical characters. On response, it encodes
414the body into UTF-8 octets.
415
416=head2 L<Catalyst::Plugin::Unicode::Encoding>
417
418=head2 L<Catalyst::Plugin::Upload::Basename>
419
420=head2 L<Catalyst::Plugin::Upload::MD5>
421
422=head2 L<Catalyst::Plugin::Upload::MIME>
423
424=head2 L<Catalyst::Plugin::UploadProgress>
425
426=head2 L<Catalyst::Plugin::XMLRPC>
427
428Allows your Controller class to dispatch XMLRPC methods from its own class.
429
430=head1 CONTROLLERS
431
58193af5 432=head2 L<Catalyst::Controller::HTML::FormFu>
cb93c9d7 433
58193af5 434Catalyst integration for <HTML::FormFu>.
cb93c9d7 435
436=head1 MODELS
437
438=head2 L<Catalyst::Model::CDBI>
439
440The C<Class::DBI> (CDBI) model class. It is built on top of
441C<Class::DBI::Loader>, which automates the definition of C<Class::DBI>
442sub-classes by scanning the underlying table schemas, setting up columns
443and primary keys.
444
445=head2 L<Catalyst::Model::CDBI::Plain>
446
447A neutral interface to the C<Class::DBI> module which does not attempt
448to automate table setup. It allows the user to manually set up
449C<Class::DBI> classes, either by doing so within the Catalyst model
450classes themselves, or by inheriting from existing C<Class::DBI>
451classes.
452
453=head2 L<Catalyst::Model::DBIC::Schema>
454
455A L<DBIx::Class> model class that can use either an explicit
456L<DBIx::Class::Schema> or one automatically loaded from your database
457via L<DBIx::Class::Schema::Loader>.
458
459=head2 L<Catalyst::Model::EVDB>
460
461=head2 L<Catalyst::Model::File>
462
463=head2 L<Catalyst::Model::Gedcom>
464
465=head2 L<Catalyst::Model::LDAP>
466
467=head2 L<Catalyst::Model::NetBlogger>
468
469=head2 L<Catalyst::Model::Plucene>
470
471A model class for the Plucene search engine.
472
473=head2 L<Catalyst::Model::Proxy>
474
475=head2 L<Catalyst::Model::SVN>
476
477=head2 L<Catalyst::Model::Xapian>
478
479A model class for the Xapian search engine.
480
481=head1 VIEWS
482
483=head2 L<Catalyst::View::Atom::XML>
484
485=head2 L<Catalyst::View::Chart::Strip>
486
487=head2 L<Catalyst::View::CSS::Squish>
488
489=head2 L<Catalyst::View::Embperl>
490
491=head2 L<Catalyst::View::GD::Barcode>
492
493=head2 L<Catalyst::View::GraphViz>
494
495=head2 L<Catalyst::View::HTML::Template>
496
497A view component for rendering pages with L<HTML::Template>.
498
499=head2 L<Catalyst::View::Jemplate>
500
501=head2 L<Catalyst::View::JSON>
502
503=head2 L<Catalyst::View::Mason>
504
505A view component for rendering pages with L<HTML::Mason>.
506
507=head2 L<Catalyst::View::MicroMason>
508
509=head2 L<Catalyst::View::PHP>
510
511=head2 L<Catalyst::View::PSP>
512
513A view component for rendering pages using PSP, a Perl extension
514implementing a JSP-like templating system. See L<Text::PSP>.
515
516=head2 L<Catalyst::View::Petal>
517
518A view component for rendering pages using Petal, the Perl Template
519Attribute Language, an XML-based templating system. See L<Petal>.
520
521=head2 L<Catalyst::View::TT>
522
523A view component for rendering pages with Template Toolkit. See
524L<Template::Manual>.
525
526=head2 L<Catalyst::View::XSLT>
527
528=head2 L<Catalyst::View::vCard>
529
bbddff00 530=head1 Actions
531
532=head2 L<Catalyst::Action::RenderView>
533
534Creates a sane, standard end method for your application.
535
cb93c9d7 536=head1 OBSOLETE MODULES
537
58193af5 538=head2 L<Catalyst::Controller::BindLex>
539
540Lets you mark lexical variables with a C<Stashed> attribute, automatically
541passing them to the stash. Discouraged by the author.
542
cb93c9d7 543=head2 L<Catalyst::Model::DBIC>
544
545Replaced by L<Catalyst::Model::DBIC::Schema>.
546
547=head2 L<Catalyst::Plugin::Authentication::Basic::Remote>
548
549Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
550
551=head2 L<Catalyst::Plugin::Authentication::CDBI>
552
553Replaced by L<Catalyst::Plugin::Authentication::Store::DBIC>.
554
555=head2 L<Catalyst::Plugin::Authentication::CDBI::Basic>
556
557Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>.
558
559=head2 L<Catalyst::Plugin::Authentication::LDAP>
560
561Replaced by L<Catalyst::Plugin::Authentication::Store::LDAP>.
562
563=head2 L<Catalyst::Plugin::Authentication::Simple>
564
565Replaced by L<Catalyst::Plugin::Authentication>.
566
567=head2 L<Catalyst::Plugin::Authorization::CDBI::GroupToken>
568
569=head2 L<Catalyst::Plugin::CDBI::Transaction>
570
571=head2 Catalyst::Plugin::Config::*
572
573The L<Catalyst::Plugin::Config::JSON> and
574L<Catalyst::Plugin::Config::YAML> modules have been replaced by their
575corresponding L<Catalyst::Plugin::ConfigLoader> modules.
576
577=head2 L<Catalyst::Plugin::DefaultEnd>
578
579Replaced by L<Catalyst::Action::RenderView>
580
581=head2 L<Catalyst::Plugin::SanitizeUrl>
582
583=head2 L<Catalyst::Plugin::SanitizeUrl::PrepAction>
584
585=head2 Catalyst::Plugin::Session::*
586
58193af5 587The L<Catalyst::Plugin::Session::CGISession>,
cb93c9d7 588L<Catalyst::Plugin::Session::FastMmap>,
589L<Catalyst::Plugin::Session::Flex>, and
590L<Catalyst::Plugin::Session::Manager>
591modules have been replaced by the <Catalyst::Plugin::Session> framework.
592
593=head1 AUTHORS
594
bbddff00 595Catalyst Contributors, see Catalyst.pm
cb93c9d7 596
597=head1 COPYRIGHT
598
bbddff00 599This library is free software. You can redistribute it and/or modify it under
cb93c9d7 600the same terms as Perl itself.
bbddff00 601
602=cut
603