Almost there, will finish adding the rest of the components tomorrow. All plugins...
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / Plugins.pod
1 =head1 NAME
2
3 Catalyst::Manual::Plugins - Catalyst Plugins (and Components)
4
5 =head1 DESCRIPTION
6
7 This section lists the some of the plugins and components that are
8 available to extend the runtime functionality of Catalyst. Most plugins
9 are not distributed with Catalyst but should be available from CPAN.
10 They typically require additional modules from CPAN.
11
12 This list is almost certainly outdated by the time you read this and some
13 plugins may even be deprecated or now part of core L<Catalyst>. Be sure 
14 to check the Catalyst::Plugin namespace for additional plugins and consult 
15 the mailing list ( L<http://dev.catalyst.perl.org/wiki/Support> ) for advice 
16 on the current status or preferred use of your chosen plugin/framework.
17
18 =head1 PLUGINS
19
20 =head2 Catalyst::Plugin::Account::AutoDiscovery
21
22 L<Catalyst Plugin for Account Auto-Discovery> provides Account Auto-Discovery
23 for Catalyst.
24
25 =head2 Catalyst::Plugin::Acme::Scramble
26
27 L<Catalyst::Plugin::Acme::Scramble> Implements a potent meme about how easily 
28 we can read scrambled text if the first and last letters remain constant. 
29 Operates on text/plain and text/html served by your Catalyst application.
30
31 =head2 Catalyst::Plugin::AtomPP
32
33 L<Catalyst::Plugin::AtomPP> allows you to dispatch AtomPP methods.
34
35 =head2 Catalyst::Plugin::AtomServer
36
37 L<Catalyst::Plugin::AtomServer> is a plugin that implements the necessary 
38 bits to make it easy to build an Atom API server for any Catalyst-based 
39 application.
40
41 =head2 Catalyst::Plugin::Authentication
42
43 L<Catalyst::Plugin::Authentication> is a infrastructure plugin for the 
44 Catalyst authentication framework. Now the recommended way to do any form
45 of Authentication.
46
47 =head2 Catalyst::Plugin::Authentication::Basic::Remote
48
49 L<Catalyst::Plugin::Authentication::Basic::Remote> is a authentication plugin 
50 that allows you to use a remote host's Basic authentication.
51
52 =head2 Catalyst::Plugin::Authentication::CDBI
53
54 L<Catalyst::Plugin::Authentication::CDBI> is a CDBI (C<Class::DBI>)
55 authentication plugin.  Note that it requires a session plugin.
56
57 =head2 Catalyst::Plugin::Authentication::CDBI::Basic
58
59 L<Catalyst::Plugin::Authentication::CDBI::Basic> provides Basic Authorization 
60 for Catalyst. 
61 Replaced by L<Catalyst::Plugin::Authentication::Credential::HTTP>
62
63 =head2 Catalyst::Plugin::Authentication::Credential::Atom
64
65 L<Catalyst::Plugin::Authentication::Credential::Atom> is a plugin which
66 implements WSSE and Basic authentication for Catalyst applications using 
67 L<Catalyst::Plugin:AtomServer>
68
69 =head2 Catalyst::Plugin::Authentication::Credential::Flickr
70
71 L<Catalyst::Plugin::Authentication::Credential::Flickr> is a plugin which
72 provides authentication via Flickr, using it's API
73
74 =head2 Catalyst::Plugin::Authentication::Credential::HTTP
75
76 L<Catalyst::Plugin::Authentication::Credential::HTTP> is a plugin that 
77 lets you do HTTP Basic authentication for Catalyst.
78
79 =head2 Catalyst::Plugin::Authentication::Credential::Password
80
81 L<Catalyst::Plugin::Authentication::Credential::Password> takes a username 
82 (or userid) and a password, and tries various methods of comparing a 
83 password based on what the chosen store's user objects support.
84 Part of the Authentication Framework <Catalyst::Plugin::Authentication>
85
86
87 =head2 Catalyst::Plugin::Authentication::Credential::TypeKey
88
89 L<Catalyst::Plugin::Authentication::Credential::TypeKey> integrates 
90 L<Authen::TypeKey> with L<Catalyst::Plugin::Authentication>
91
92 =head2 Catalyst::Plugin::Authentication::LDAP
93
94 L<Catalyst::Plugin::Authentication::LDAP> is a plugin allowing you 
95 to authenticate your web users using an LDAP server. Soon to be replaced
96 by L<Catalyst::Plugin::Authentication::Store::LDAP>
97
98 =head2 Catalyst::Plugin::Authentication::OpenID
99
100 L<Catalyst::Plugin::Authentication::OpenID> is a plugin that implements 
101 support for OpenID authentication. For more information on OpenID, take 
102 a look at L<http://www.openid.net/>.
103
104 =head2 Catalyst::Plugin::Authentication::Simple
105
106 Replaced by new L<Catalyst::Plugin::Authentication framework>
107
108 =head2 Catalyst::Plugin::Authentication::Store
109
110 L<Catalyst::Plugin::Authentication::Store> is the core store documentation
111
112 =head2 Catalyst::Plugin::Authentication::Store::DBIC
113
114 L<Catalyst::Plugin::Authentication::Store::DBIC> is a plugin that lets 
115 you do authentication and authorization against a DBIx::Class or 
116 Class::DBI model.
117
118 =head2 Catalyst::Plugin::Authentication::Store::Htpasswd
119
120 L<Catalyst::Plugin::Authentication::Store::Htpasswd> uses L<Authen::Htpasswd> 
121 to let your application use C<.htpasswd> files for it's 
122 authentication storage.
123
124 =head2 Catalyst::Plugin::Authentication::Store::Minimal
125
126 L<Catalyst::Plugin::Authentication::Store::Minimal> lets you create a very 
127 quick and dirty user database in your application's config hash. 
128 Great for getting up and running quickly.
129
130 =head2 Catalyst::Plugin::Authentication::User::Hash
131
132 L<Catalyst::Plugin::Authentication::User::Hash> is an easy authentication 
133 user object based on hashes. 
134 See L<Catalyst::Plugin::Authentication::Store::Minimal> for more info.
135
136 =head2 Catalyst::Plugin::Authorization::ACL
137
138
139 =head2 Catalyst::Plugin::Authorization::ACL::Engine
140
141
142 =head2 Catalyst::Plugin::Authorization::CDBI::GroupToken
143
144
145 =head2 Catalyst::Plugin::Authorization::Roles
146
147 L<Catalyst::Plugin::Authorization::Roles> provides role based authorization 
148 for Catalyst based on L<Catalyst::Plugin::Authentication>. 
149
150 =head2 Catalyst::Plugin::Browser
151
152 L<Catalyst::Plugin::Browser> extends L<Catalyst::Request> by adding the
153 capability of browser detection. It returns an instance of
154 L<HTTP::BrowserDetect>, which lets you get information from the client's
155 user agent.
156
157 =head2 Catalyst::Plugin::Cache::FastMmap, FileCache, and Memcached
158
159 L<Catalyst::Plugin::Cache::FastMmap>,
160 L<Catalyst::Plugin::Cache::FileCache>, and
161 L<Catalyst::Plugin::Cache::Memcached> all provide a cache method
162 enabling easy access to a shared cache.
163
164 =head2 Catalyst::Plugin::CDBI::Transaction
165
166
167 =head2 Catalyst::Plugin::Charsets::Japanese
168
169
170 =head2 Catalyst::Plugin::Compress::Bzip2
171
172 L<Catalyst::Plugin::Compress::Bzip2> compresses a response using
173 bzip compression.
174
175 =head2 Catalyst::Plugin::Compress::Deflate
176
177
178 =head2 Catalyst::Plugin::Compress::Gzip
179
180
181 =head2 Catalyst::Plugin::Compress::Zlib
182
183 L<Catalyst::Plugin::Compress::Zlib> supplies Zlib compression for
184 Catalyst.
185
186 =head2 Catalyst::Plugin::Config::JSON
187
188
189 =head2 Catalyst::Plugin::ConfigLoader
190
191
192 =head2 Catalyst::Plugin::ConfigLoader::INI
193
194
195 =head2 Catalyst::Plugin::ConfigLoader::JSON
196
197
198 =head2 Catalyst::Plugin::ConfigLoader::Perl
199
200
201 =head2 Catalyst::Plugin::ConfigLoader::XML
202
203
204 =head2 Catalyst::Plugin::ConfigLoader::YAML
205
206
207 =head2 Catalyst::Plugin::Config::YAML
208
209
210 =head2 Catalyst::Plugin::DateTime
211
212
213 =head2 Catalyst::Plugin::DefaultEnd
214
215 L<Catalyst::Plugin::DefaultEnd> creates a sane, standard end method for
216 your application.
217
218 =head2 Catalyst::Plugin::Devel::InPageLogs
219
220
221 =head2 Catalyst::Plugin::Devel::InPageLogs::Log
222
223
224 =head2 Catalyst::Plugin::Dumper
225
226
227 =head2 Catalyst::Plugin::Email
228
229 L<Catalyst::Plugin::Email> sends email with Catalyst and L<Email::Send>
230 and L<Email::MIME::Creator>.
231
232 =head2 Catalyst::Plugin::Email::Japanese
233
234
235 =head2 Catalyst::Plugin::Email::Page
236
237
238 =head2 Catalyst::Plugin::EmailValid
239
240
241 =head2 Catalyst::Plugin::FillInForm
242
243 L<Catalyst::Plugin::FillInForm> is plugin for Catalyst based on
244 C<HTML::FillInForm>, which describes itself as a module to automatically
245 insert data from a previous HTML form into the HTML input, textarea,
246 radio buttons, checkboxes, and select tags.  C<HTML::FillInForm> is a
247 subclass of C<HTML::Parser> and uses it to parse the HTML and insert the
248 values into the form tags.
249
250 =head2 Catalyst::Plugin::Flavour
251
252
253 =head2 Catalyst::Plugin::FormValidator
254
255 L<Catalyst::Plugin::FormValidator> is a form validator plugin that uses
256 L<Data::FormValidator> to validate and set up form data from your
257 request parameters. It's a quite thin wrapper around that module, so
258 most of the relevant information can be found there.
259
260 =head2 Catalyst::Plugin::FormValidator::Simple
261
262
263 =head2 Catalyst::Plugin::Geography
264
265 L<Catalyst::Plugin::Geography> allows you to retrieve various kinds
266 of geographical information. You can retrieve the country or code from
267 the current user, from a given IP address, or from a given hostname.
268
269 =head2 Catalyst::Plugin::Geography::Implementation
270
271
272 =head2 Catalyst::Plugin::HashedCookies
273
274
275 =head2 Catalyst::Plugin::HTML::Scrubber
276
277
278 =head2 Catalyst::Plugin::HTML::Widget
279
280
281 =head2 Catalyst::Plugin::I18N
282
283 L<Catalyst::Plugin::I18N> is an internationalization plugin for
284 Catalyst.  Supports C<mo>/C<po> files and Maketext classes under your
285 application's I18N namespace.
286
287 =head2 Catalyst::Plugin::JSONRPC
288
289
290 =head2 Catalyst::Plugin::Message
291
292
293 =head2 Catalyst::Plugin::MobileAgent
294
295
296 =head2 Catalyst::Plugin::Observe
297
298 L<Catalyst::Plugin::Observe> provides the ability to register AOP-like
299 callbacks to specific Engine events. Subclasses L<Class::Publisher>.
300
301 =head2 Catalyst::Plugin::OrderedParams
302
303 L<Catalyst::Plugin::OrderedParams> adjusts the way that parameters operate,
304 causing them to appear in the same order they were submitted by the browser.
305 This can be useful for creating things such as email forms.
306
307 =head2 Catalyst::Plugin::PageCache
308
309 L<Catalyst::Plugin::PageCache> helps improve the performance of slow or
310 frequently accessed pages by caching the entire output of your page.
311 Subsequent requests to the page will receive the page very quickly from
312 cache.
313
314 =head2 Catalyst::Plugin::Params::Nested
315
316
317 =head2 Catalyst::Plugin::Params::Nested::Expander
318
319
320 =head2 Catalyst::Plugin::Pluggable
321
322 L<Catalyst::Plugin::Pluggable> is a plugin for pluggable Catalyst
323 applications.
324
325 =head2 Catalyst::Plugin::Prototype
326
327 L<Catalyst::Plugin::Prototype> is a plugin for the Prototype JavaScript
328 library. This Plugin allows you to easily implement AJAX functionality
329 without actually knowing Javascript.
330
331 =head2 Catalyst::Plugin::Redirect
332
333
334 =head2 Catalyst::Plugin::RequestToken
335
336
337 =head2 Catalyst::Plugin::RequireSSL
338
339 Use L<Catalyst::Plugin::RequireSSL> if you would like to force visitors
340 to access certain pages using only SSL mode. An attempt to access the
341 page in non-SSL mode will receive a redirect into SSL mode. Useful for
342 login pages, shopping carts, user registration forms, and other
343 sensitive data.
344
345 =head2 Catalyst::Plugin::SanitizeUrl
346
347
348 =head2 Catalyst::Plugin::SanitizeUrl::PrepAction
349
350
351 =head2 Catalyst::Plugin::Scheduler
352
353
354 =head2 Catalyst::Plugin::Session
355
356 The L<Catalyst::Plugin::Session> series of modules provide an easy way to
357 include session handling in an application. You can choose from several
358 different backend storage methods and combine that with your choice of
359 client-side storage methods.
360
361 =head2 Catalyst::Plugin::Session::CGISession
362
363
364 =head2 Catalyst::Plugin::Session::FastMmap
365
366 L<Catalyst::Plugin::Session::FastMmap> is a session plugin for Catalyst
367 based on C<Cache::FastMMap>, which uses an mmap'ed file to act as a
368 shared memory interprocess cache. This is an older session plugin; you may
369 wish to look at L<Catalyst::Plugin::Session> instead.
370
371 =head2 Catalyst::Plugin::Session::Flex
372
373
374 =head2 Catalyst::Plugin::Session::Manager
375
376
377 =head2 Catalyst::Plugin::Session::Manager::Client::Cookie
378
379
380 =head2 Catalyst::Plugin::Session::Manager::Client::Rewrite
381
382
383 =head2 Catalyst::Plugin::Session::Manager::Client::StickyQuery
384
385
386 =head2 Catalyst::Plugin::Session::Manager::Storage::CDBI
387
388
389 =head2 Catalyst::Plugin::Session::Manager::Storage::FastMmap
390
391
392 =head2 Catalyst::Plugin::Session::Manager::Storage::File
393
394
395 =head2 Catalyst::Plugin::Session::PerUser
396
397
398 =head2 Catalyst::Plugin::Session::State
399
400
401 =head2 Catalyst::Plugin::Session::State::Cookie
402
403
404 =head2 Catalyst::Plugin::Session::State::URI
405
406
407 =head2 Catalyst::Plugin::Session::Store
408
409
410 =head2 Catalyst::Plugin::Session::Store::CDBI
411
412
413 =head2 Catalyst::Plugin::Session::Store::DBI
414
415
416 =head2 Catalyst::Plugin::Session::Store::Dummy
417
418
419 =head2 Catalyst::Plugin::Session::Store::FastMmap
420
421
422 =head2 Catalyst::Plugin::Session::Store::File
423
424
425 =head2 Catalyst::Plugin::Session::Store::Memcached
426
427
428 =head2 Catalyst::Plugin::Session::Test::Store
429
430
431 =head2 Catalyst::Plugin::Singleton
432
433
434 =head2 Catalyst::Plugin::SRU
435
436 L<Catalyst::Plugin::SRU> allows your controller class to dispatch SRU
437 actions (C<explain>, C<scan>, and C<searchRetrieve>) from its own class.
438
439 =head2 Catalyst::Plugin::StackTrace
440
441
442 =head2 Catalyst::Plugin::Static
443
444 L<Catalyst::Plugin::Static> is a plugin to serve static files from
445 C<$c-E<gt>config-E<gt>{root}>. Intended chiefly for development
446 purposes.
447
448 =head2 Catalyst::Plugin::Static::Simple
449
450 L<Catalyst::Plugin::Static::Simple> serves static files in your
451 application without requiring a single line of code. This plugin is now
452 included in the core Catalyst distribution.
453
454 =head2 Catalyst::Plugin::SubRequest
455
456 L<Catalyst::Plugin::SubRequest> is a plugin to allow subrequests to
457 actions to be made within Catalyst. Nice for portal software and such.
458
459 =head2 Catalyst::Plugin::SuperForm
460
461 L<Catalyst::Plugin::SuperForm> is an interface to the L<HTML::SuperForm>
462 module, enabling easy HTML form creation.
463
464 =head2 Catalyst::Plugin::Textile
465
466 L<Catalyst::Plugin::Textile> is a persistent Textile processor for
467 Catalyst that uses C<Text::Textile>, a Perl-based implementation of Dean
468 Allen's Textile syntax. Textile is shorthand for doing common formatting
469 tasks (see L<http://textism.com>).
470
471 =head2 Catalyst::Plugin::Unicode
472
473 L<Catalyst::Plugin::Unicode> provides a Unicode-aware Catalyst. On
474 request, it decodes all params from UTF-8 octets into a sequence of
475 logical characters. On response, it encodes the body into UTF-8 octets.
476
477 =head2 Catalyst::Plugin::Unicode::Encoding
478
479
480 =head2 Catalyst::Plugin::Upload::Basename
481
482
483 =head2 Catalyst::Plugin::Upload::MD5
484
485
486 =head2 Catalyst::Plugin::Upload::MIME
487
488
489 =head2 Catalyst::Plugin::XMLRPC
490
491 L<Catalyst::Plugin::XMLRPC> plugin allows your Controller class to
492 dispatch XMLRPC methods from its own class.
493
494 =head1 COMPONENT MODULES
495
496 =head2 Catalyst::Model::CDBI
497
498 L<Catalyst::Model::CDBI> is the C<Class::DBI> (CDBI) module class.  It 
499 is built on top of C<Class::DBI::Loader>, which automates the 
500 definition of C<Class::DBI> sub-classes by scanning the underlying 
501 table schemas, setting up columns and primary keys.
502
503 =head2 Catalyst::Model::CDBI::Plain
504
505 L<Catalyst::Model::CDBI::Plain> is a neutral interface to the
506 C<Class::DBI> module, which does not attempt to automate table
507 setup. It allows the user to manually set up C<Class::DBI>
508 classes, either by doing so within the Catalyst model classes
509 themselves, or by inheriting from existing C<Class::DBI>
510 classes.
511
512 =head2 Catalyst::Model::DBIC
513
514 L<Catalyst::Model::DBIC> is a L<DBIx::Class> model class built on top of
515 L<DBIx::Class::Loader>.
516
517 =head2 Catalyst::Model::Plucene
518
519 L<Catalyst::Model::Plucene> is a model class for the Plucene search
520 engine.
521
522 =head2 Catalyst::Model::Xapian
523
524 L<Catalyst::Model::Xapian> is a model class for the Xapian search
525 engine.
526
527 =head2 Catalyst::View::HTML::Template
528
529 L<Catalyst::View::HTML::Template> is a View component for
530 displaying your stash with L<HTML::Template>.
531
532 =head2 Catalyst::View::Mason
533
534 L<Catalyst::View::Mason> is a View component for displaying your stash
535 with L<HTML::Mason>.
536
537 =head2 Catalyst::View::PSP
538
539 L<Catalyst::View::PSP> is a View component for displaying your stash
540 using PSP, a Perl extension implementing a JSP-like templating system;
541 see L<Text::PSP>.
542
543 =head2 Catalyst::View::Petal
544
545 L<Catalyst::View::Petal> is a View component for displaying 
546 your stash using Petal, the Perl Template Attribute Language,
547 an XML-based templating system; see L<Petal>.
548
549 =head2 Catalyst::View::TT
550
551 L<Catalyst::View::TT> is a Template Toolkit view. See L<Template::Manual>.
552
553 =head1 AUTHORS
554
555 Andrew Ford E<lt>A.Ford@ford-mason.co.ukE<gt>
556
557 Gavin Henry E<lt>ghenry@suretecsystems.com<gt>
558
559 Jesse Sheidlower E<lt>jester@panix.comE<gt>
560
561 Marcus Ramberg E<lt>mramberg@cpan.orgE<gt>
562
563 =head1 COPYRIGHT
564
565 This program is free software, you can redistribute it and/or modify it under
566 the same terms as Perl itself.
567
568