=head1 SUPPORT
Corrections or amendments may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>
-(or L<bug-Catalyst-Manual@rt.cpan.org|mailto:Catalyst-Manual@rt.cpan.org>).
+(or L<bug-Catalyst-Manual@rt.cpan.org|mailto:bug-Catalyst-Manual@rt.cpan.org>).
There is also a mailing list available for users of this distribution, at
L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst>.
=head1 AUTHORS
-Catalyst Contributors, see Catalyst.pm
+Catalyst Contributors, see L<Catalyst>
=head1 COPYRIGHT AND LICENCE
L<Maypole>--upon which Catalyst was originally based--designed for the
easy development of powerful web databases; L<Jifty>, which does a great
deal of automation in helping to set up web sites with many complex
-features; and Ruby on Rails (see L<http://www.rubyonrails.org>), written
+features; and Ruby on Rails (see L<https://rubyonrails.org>), written
of course in Ruby and among the most popular web development systems. It
is not the purpose of this document to criticize or even briefly
evaluate these other frameworks; they may be useful for you and if so we
plugins may be deprecated, or, conversely, may now part of core
L<Catalyst>. Be sure to check the Catalyst:: and CatalystX:: namespaces
for additional components, and consult the mailing list (
-L<http://dev.catalyst.perl.org/wiki/Support> ) for advice on the current
+L<http://wiki.catalystframework.org/wiki/Support> ) for advice on the current
status or preferred use of your chosen plugin/framework.
=head1 PLUGINS
=head2 L<Catalyst::Plugin::FillInForm>
-A plugin based on C<HTML::FillInForm>, which describes itself as a module
+A plugin based on L<HTML::FillInForm>, which describes itself as a module
to automatically insert data from a previous HTML form into the HTML input,
-textarea, radio buttons, checkboxes, and select tags. C<HTML::FillInForm>
-is a subclass of C<HTML::Parser> and uses it to parse the HTML and insert
+textarea, radio buttons, checkboxes, and select tags. L<HTML::FillInForm>
+is a subclass of L<HTML::Parser> and uses it to parse the HTML and insert
the values into the form tags.
=head2 L<Catalyst::Plugin::Flavour>
=head3 Flowchart
A graphical flowchart of how the dispatcher works can be found on the wiki at
-L<http://dev.catalyst.perl.org/attachment/wiki/WikiStart/catalyst-flow.png>.
+L<http://dev.catalystframework.org/attachment/wiki/WikiStart/catalyst-flow.png>.
=head2 DRY Controllers with Chained actions
=head2 Chef
-L<Chef|http://www.opscode.com/chef/> is an open-source systems integration
+L<Chef|https://www.chef.io/products/chef-infra/> is an open-source systems integration
framework built specifically for automating cloud computing deployments. A
Cookbooks demonstrating how to deploy a Catalyst application using Chef is
-available at L<http://community.opscode.com/cookbooks/catalyst> and
+available at L<https://supermarket.chef.io/cookbooks/catalyst> and
L<https://github.com/melezhik/cookbooks/wiki/Catalyst-cookbook-intro>.
=head1 AUTHORS
=head3 1. Install Apache with mod_fastcgi
mod_fastcgi for Apache is a third-party module, and can be found at
-L<http://www.fastcgi.com/>. It is also packaged in many distributions
+L<https://fastcgi-archives.github.io/>. It is also packaged in many distributions
(for example, libapache2-mod-fastcgi in Debian). You will also need to
install the L<FCGI> module from CPAN.
application.
For more information on using FastCGI under Apache, visit
-L<http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html>
+L<https://fastcgi-archives.github.io/mod_fastcgi.html>
=head3 Authorization header with mod_fastcgi or mod_cgi
By default, mod_fastcgi/mod_cgi do not pass along the Authorization header,
-so modules like C<Catalyst::Plugin::Authentication::Credential::HTTP> will
+so modules like L<Catalyst::Plugin::Authentication::Credential::HTTP> will
not work. To enable pass-through of this header, add the following
mod_rewrite directives:
FastCGI is not a standard part of IIS 6 - you have to install it
separately. For more info and the download, go to
-L<http://www.iis.net/extensions/FastCGI>. Choose the appropriate version
+Lhttps://www.iis.net/downloads/microsoft/fastcgi-for-iis>. Choose the appropriate version
(32-bit/64-bit); installation is quite simple (in fact no questions, no
options).
)
For more information on using FastCGI under Lighttpd, visit
-L<http://www.lighttpd.net/documentation/fastcgi.html>
+L<https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI>
=head2 Static file handling
=head1 MORE INFO
For more information on nginx, visit:
-L<http://nginx.net>
+L<https://nginx.net>
=head1 AUTHORS
write: catagits@git.shadowcat.co.uk:PROJECTNAME
browser: https://git.shadowcat.co.uk/gitweb/gitweb.cgi
-The Catalyst subversion repository can be found at:
-
- svn: http://dev.catalyst.perl.org/repos/Catalyst
- browser: http://dev.catalyst.perl.org/svnweb/Catalyst
-
=head2 Schedule
There is no dated release cycle for Catalyst. New releases will be made
This gives a stable basis for contribution, and even more importantly,
builds trust. The easiest way is a test application. See
-L<Catalyst::Manual::Tutorial::Testing> for more information.
+L<Catalyst::Manual::Tutorial::Testing|Catalyst::Manual::Tutorial::08_Testing>
+for more information.
=back
You can specify any valid Perl attribute on Catalyst actions you like.
(See L<attributes/"Syntax of Attribute Lists"> for a description of
-what is valid.) These will be available on the C<Catalyst::Action>
+what is valid.) These will be available on the L<Catalyst::Action>
instance via its C<attributes> accessor. To give an example, this
action:
Catalyst automatically loads all
components it finds in the C<$class::Controller>, C<$class::C>,
C<$class::Model>, C<$class::M>, C<$class::View> and C<$class::V>
-namespaces (using C<Module::Pluggable>). As each is loaded, if it has a
+namespaces (using L<Module::Pluggable>). As each is loaded, if it has a
L<COMPONENT|Catalyst::Component/"COMPONENT"> method then this method
will be called, and passed that component's configuration. It then returns
an instance of the component, which becomes the C<$self> when methods in
Each controller has it's C<register_actions> method called. At this point,
the subroutine attributes are retrieved from the
-L<MooseX::MethodAttributes::Role::Meta::Map|metaclass>, parsed, and used to
+L<metaclass|MooseX::MethodAttributes::Role::Meta::Map>, parsed, and used to
build instances of L<Catalyst::Action>, which are then registered with
the dispatcher.
=back
Final code tarballs for each chapter of the tutorial are available at
-L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/Tutorial/>.
+L<http://dev.catalystframework.org/repos/Catalyst/trunk/examples/Tutorial/>.
=head1 Detailed Table of Contents
Copyright 2006-2010, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
=item 3
Boot the virtual machine using a tool like VMWare Player
-L<http://www.vmware.com/products/player> or VirtualBox
-L<http://www.virtualbox.org/>.
+L<https://www.vmware.com/products/workstation-player.html> or VirtualBox
+L<https://www.virtualbox.org/>.
=item 4
Note that C<iceweasel> is basically used to install Firefox on Debian
boxes. You can start it under X Windows with either the C<firefox>
command or the C<iceweasel> command (or use the menus). You can get
-more information on Iceweasel at L<http://wiki.debian.org/Iceweasel>.
+more information on Iceweasel at L<https://wiki.debian.org/Iceweasel>.
Also, you might need to add more memory to your virtual machine if you
want to run X Windows (or other tools that might require additional
=item *
-L<http://vmfaq.com/index.php?View=entry&EntryID=34>
+L<https://web.archive.org/web/20160623183717/http://vmfaq.com/index.php?View=entry&EntryID=34>
=item *
-L<http://www.vmware.com/support/pubs/player_pubs.html>
+L<https://www.vmware.com/support/pubs/player_pubs.html>
=item *
-L<http://www.virtualbox.org/manual/ch06.html>
+L<https://www.virtualbox.org/manual/ch06.html>
=back
B<Please Note:> Depending on the web browser you are using, you might
need to hit C<Shift+Reload> or C<Ctrl+Reload> to pull a fresh page when
testing your application at various points (see
-L<http://en.wikipedia.org/wiki/Wikipedia:Bypass_your_cache> for a
+L<https://en.wikipedia.org/wiki/Wikipedia:Bypass_your_cache> for a
comprehensive list of options for each browser).
Also, the C<-k> B<keepalive option> to the development server can be
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
C<ConfigLoader> provides an automatic way to load configurable
parameters for your application from a central
L<Config::General> file (versus having the values
-hard-coded inside your Perl modules). Config::General uses syntax very
+hard-coded inside your Perl modules). L<Config::General> uses syntax very
similar to Apache configuration files. We will see how to use this
feature of Catalyst during the authentication and authorization sections
(L<Chapter 5|Catalyst::Manual::Tutorial::05_Authentication> and
B<IMPORTANT NOTE:> If you are using a version of
L<Catalyst::Devel> prior to version 1.06, be aware that
Catalyst changed the default format from YAML to the more
-straightforward C<Config::General> style. This tutorial uses the newer
-C<myapp.conf> file for C<Config::General>. However, Catalyst supports
+straightforward L<Config::General> style. This tutorial uses the newer
+C<myapp.conf> file for L<Config::General>. However, Catalyst supports
both formats and will automatically use either F<myapp.conf> or
F<myapp.yml> (or any other format supported by
L<Catalyst::Plugin::ConfigLoader> and
L<Config::Any>). If you are using a version of
-Catalyst::Devel prior to 1.06, you can convert to the newer format by
+L<Catalyst::Devel> prior to 1.06, you can convert to the newer format by
simply creating the F<myapp.conf> file manually and deleting
F<myapp.yml>. The default contents of the F<myapp.conf> you create
should only consist of one line:
StackTrace
/;
-B<Note:> Recent versions of C<Catalyst::Devel> have used a variety of
+B<Note:> Recent versions of L<Catalyst::Devel> have used a variety of
techniques to load these plugins/flags. For example, you might see the
following:
$c->stash(template => 'books/list.tt2');
}
-B<TIP>: See L<Appendix 1|Catalyst::Manual::Tutorial::10_Appendices> for
-tips on removing the leading spaces when cutting and pasting example
+B<TIP>: See L<Appendix 1|Catalyst::Manual::Tutorial::10_Appendices/APPENDIX 1: CUT AND PASTE FOR POD-BASED EXAMPLES>
+for tips on removing the leading spaces when cutting and pasting example
code from POD-based documents.
Programmers experienced with object-oriented Perl should recognize
Toolkit, known as TT (for more information on TT, see
L<http://www.template-toolkit.org>). Other somewhat popular view
technologies include Mason (L<http://www.masonhq.com> and
-L<http://www.masonbook.com>) and L<HTML::Template>
-(L<http://html-template.sourceforge.net>).
+L<https://masonbook.houseabsolute.com/book/>) and L<HTML::Template>.
=head2 Create a Catalyst View
In this step, we make a text file with the required SQL commands to
create a database table and load some sample data. We will use SQLite
-(L<http://www.sqlite.org>), a popular database that is lightweight and
+(L<https://www.sqlite.org>), a popular database that is lightweight and
easy to use. Be sure to get at least version 3. Open F<myapp01.sql> in
your editor and enter:
L<DBIx::Class::Schema::Loader::Base/naming> (version 0.05 or greater).
For using other databases, such as PostgreSQL or MySQL, see
-L<Appendix 2|Catalyst::Manual::Tutorial::10_Appendices>.
+L<Appendix 2|Catalyst::Manual::Tutorial::10_Appendices/APPENDIX 2: USING POSTGRESQL AND MYSQL>.
=head1 DATABASE ACCESS WITH DBIx::Class
Although it is beyond the scope of this tutorial, you may wish to use a
JavaScript or AJAX tool such as jQuery (L<https://www.jquery.com>) or
-Dojo (L<http://www.dojotoolkit.org>).
+Dojo (L<https://dojotoolkit.org/>).
=back
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
return any(map { $_->role } $self->roles) eq $role;
}
-Let's also add C<Perl6::Junction> to the requirements listed in
+Let's also add L<Perl6::Junction> to the requirements listed in
Makefile.PL:
requires 'Perl6::Junction';
-B<Note:> Feel free to use C<grep> in lieu of C<Perl6::Junction::any> if
-you prefer. Also, please don't let the use of the C<Perl6::Junction>
+B<Note:> Feel free to use C<grep> in lieu of L<Perl6::Junction::any|Perl6::Junction/any()> if
+you prefer. Also, please don't let the use of the L<Perl6::Junction>
module above lead you to believe that Catalyst is somehow dependent on
Perl 6... we are simply using that module for its
L<easy-to-read|http://blogs.perl.org/users/marc_sebastian_jakobs/2009/11/my-favorite-module-of-the-month-perl6junction.html>
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
</p>
This adds a new link to the bottom of the book list page that we can use
-to easily launch our HTML::FormFu-based form.
+to easily launch our L<HTML::FormFu>-based form.
=head2 Test The HTML::FormFu Create Form
$ script/myapp_server.pl -r
Login as C<test01> (password: mypass). Once at the Book List page,
-click the new HTML::FormFu "Create" link at the bottom to display the
+click the new L<HTML::FormFu> "Create" link at the bottom to display the
form. Fill in the following values:
Title: Internetworking with TCP/IP Vol. II
Make sure you are still logged in as C<test01> and try adding a book
with various errors: title less than 5 characters, non-numeric rating, a
rating of 0 or 6, etc. Also try selecting one, two, and zero authors.
-When you click Submit, the HTML::FormFu C<constraint> items will
+When you click Submit, the L<HTML::FormFu> C<constraint> items will
validate the logic and insert feedback as appropriate. Try adding blank
spaces at the front or the back of the title and note that it will be
removed.
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).
indent-region or pressing the default keybinding C-M-\ in cperl-mode.
Additional details can be found here:
-L<http://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation-Commands.html>
+L<https://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation-Commands.html>
=head1 APPENDIX 2: USING POSTGRESQL AND MYSQL
The main database used in this tutorial is the very simple yet powerful
-L<SQLite|http://www.sqlite.org>. This section provides information
+L<SQLite|https://www.sqlite.org>. This section provides information
that can be used to "convert" the tutorial to use
-L<PostgreSQL|http://www.postgresql.org> and
-L<MySQL|http://dev.mysql.com>. However, note that part of
+L<PostgreSQL|https://www.postgresql.org> and
+L<MySQL|https://dev.mysql.com>. However, note that part of
the beauty of the MVC architecture is that very little database-specific
code is spread throughout the system (at least when MVC is "done
right"). Consequently, converting from one database to another is
Copyright 2006-2011, Kennedy Clark, under the
Creative Commons Attribution Share-Alike License Version 3.0
-(L<http://creativecommons.org/licenses/by-sa/3.0/us/>).
+(L<https://creativecommons.org/licenses/by-sa/3.0/us/>).