-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Catalyst::View::TT::XHTML - A sub-class of the standard TT view which
-serves application/xhtml+xml content if the browser accepts it.</title>
-<link rev="made" href="mailto:root@b45.apple.com" />
-</head>
+NAME
+ Catalyst::View::TT::XHTML - A sub-class of the standard TT view which
+ serves application/xhtml+xml content if the browser accepts it.
+
+SYNOPSIS
+ package MyApp::View::XHTML;
+ use strict;
+ use warnings;
+ use base qw/Catalyst::View::TT::XHTML MyApp::View::TT/;
+
+ 1;
+
+DESCRIPTION
+ This is a very simple sub-class of Catalyst::View::TT, which sets the
+ response "Content-Type" to be "application/xhtml+xml" if the user's
+ browser sends an "Accept" header indicating that it is willing to
+ process that MIME type.
-<body style="background-color: white">
+ Changing the "Content-Type" causes browsers to interpret the page as
+ strict XHTML, meaning that the markup must be well formed.
-<p><a name="__index__"></a></p>
-<!-- INDEX BEGIN -->
+ This is useful when you're developing your application, as you know that
+ all pages you view are rendered strictly, so any markup errors will show
+ up at once.
-<ul>
+METHODS
+ process
+ Overrides the standard process method, delegating to Catalyst::View::TT
+ to render the template, and then changing the response "Content-Type" if
+ appropriate (from the requests "Accept" header).
- <li><a href="#name">NAME</a></li>
- <li><a href="#synopsis">SYNOPSIS</a></li>
- <li><a href="#methods">METHODS</a></li>
- <ul>
+BUGS
+ There should be a more elegant way to inherit the config of your normal
+ TT view.
- <li><a href="#process">process</a></li>
- </ul>
+ Configuration (as loaded by Catalyst::Plugin::ConfigLoader) for the TT
+ view is not used.
- <li><a href="#bugs">BUGS</a></li>
- <li><a href="#author">AUTHOR</a></li>
- <li><a href="#copyright">COPYRIGHT</a></li>
-</ul>
-<!-- INDEX END -->
+ No helper to generate the view file needed (just copy the code in the
+ SYNOPSIS).
-<hr />
-<p>
-</p>
-<h1><a name="name">NAME</a></h1>
-<p>Catalyst::View::TT::XHTML - A sub-class of the standard TT view which
-serves application/xhtml+xml content if the browser accepts it.</p>
-<p>
-</p>
-<hr />
-<h1><a name="synopsis">SYNOPSIS</a></h1>
-<pre>
- package MyApp::View::XHTML;
- use strict;
- use warnings;
- use base qw/Catalyst::View::TT::XHTML MyApp::View::TT/;
-
- 1;
-
-=head1 DESCRIPTION</pre>
-<p>This is a very simple sub-class of <a href="/Catalyst/View/TT.html">the Catalyst::View::TT manpage</a>, which sets
-the response <code>Content-Type</code> to be <code>application/xhtml+xml</code> if the
-user's browser sends an <code>Accept</code> header indicating that it is willing
-to process that MIME type.</p>
-<p>Changing the <code>Content-Type</code> causes browsers to interpret the page as
-strict XHTML, meaning that the markup must be well formed.</p>
-<p>This is useful when you're developing your application, as you know that
-all pages you view are rendered strictly, so any markup errors will show
-up at once.</p>
-<p>
-</p>
-<hr />
-<h1><a name="methods">METHODS</a></h1>
-<p>
-</p>
-<h2><a name="process">process</a></h2>
-<p>Overrides the standard process method, delegating to <a href="/Catalyst/View/TT.html">the Catalyst::View::TT manpage</a>
-to render the template, and then changing the response <code>Content-Type</code> if
-appropriate (from the requests <code>Accept</code> header).</p>
-<p>
-</p>
-<hr />
-<h1><a name="bugs">BUGS</a></h1>
-<p>There should be a more elegant way to inherit the config of your normal
-TT view.</p>
-<p>Configuration (as loaded by <a href="/Catalyst/Plugin/ConfigLoader.html">the Catalyst::Plugin::ConfigLoader manpage</a>) for the TT
-view is not used.</p>
-<p>No helper to generate the view file needed (just copy the code in the
-SYNOPSIS).</p>
-<p>
-</p>
-<hr />
-<h1><a name="author">AUTHOR</a></h1>
-<p>Tomas Doran <code><bobtfish@bobtfish.net></code></p>
-<p>
-</p>
-<hr />
-<h1><a name="copyright">COPYRIGHT</a></h1>
-<p>This module itself is copyright (c) 2008 Tomas Doran and is licensed under the same terms as Perl itself.</p>
+AUTHOR
+ Tomas Doran "<bobtfish@bobtfish.net>"
+
+CONTRIBUTORS
+ David Dorward - test patches
-</body>
+COPYRIGHT
+ This module itself is copyright (c) 2008 Tomas Doran and is licensed
+ under the same terms as Perl itself.
-</html>
package Catalyst::View::TT::XHTML;
use strict;
use warnings;
+use HTTP::Negotiate qw(choose);
use base qw/Catalyst::View::TT/;
-our $VERSION = '1.000';
+our $VERSION = '1.001';
+
+our $variants = [
+ [qw| xhtml 1.000 application/xhtml+xml |],
+ [qw| html 0.001 text/html |],
+];
sub process {
my $self = shift;
my ($c) = @_;
- $self->next::method(@_);
- my $accept = $c->request->header('Accept');
- if ( $accept && $accept =~ m|application/xhtml\+xml|) {
- $c->response->headers->{'content-type'} =~ s|text/html|application/xhtml+xml|;
+ my $return = $self->next::method(@_);
+
+ if ($c->request->header('Accept') && $c->response->headers->{'content-type'} =~ m|text/html|) {
+ my $var = choose($variants, $c->request->headers);
+ if ($var eq 'xhtml') {
+ $c->response->headers->{'content-type'} =~ s|text/html|application/xhtml+xml|;
+ }
}
- return 1;
+ return $return;
}
1;