package Catalyst::View::Download::HTML;
use strict;
use warnings;
use base qw( Catalyst::View );
=head1 NAME
Catalyst::View::Download::HTML
=head1 VERSION
0.02
=cut
our $VERSION = "0.02";
__PACKAGE__->config( 'stash_key' => 'html' );
sub process {
my $self = shift;
my ($c) = @_;
my $template = $c->stash->{template};
my $content = $self->render( $c, $template, $c->stash );
$c->res->headers->header( "Content-Type" => "text/html" )
if ( $c->res->headers->header("Content-Type") eq "" );
$c->res->body($content);
}
sub render {
my $self = shift;
my ( $c, $template, $args ) = @_;
my $content;
my $stash_key = $self->config->{'stash_key'};
$content = $c->stash->{$stash_key}{'data'} || $c->response->body;
return $content;
}
1;
__END__
=head1 SYNOPSIS
# lib/MyApp/View/Download/HTML.pm
package MyApp::View::Download::HTML;
use base qw( Catalyst::View::Download::HTML );
1;
# lib/MyApp/Controller/SomeController.pm
sub example_action_1 : Local {
my ($self, $c) = @_;
my $content = "Some Text";
# To output your data just pass your content into the 'html' key of the stash
$c->stash->{'html'} = {
data => $content
};
# Or into the body of the response for this action
$c->response->body($content);
# Finally forward processing to the HTML View
$c->forward('MyApp::View::Download::HTML');
}
=head1 DESCRIPTION
Takes content and outputs the content as html text.
=head1 SUBROUTINES
=head2 process
This method will be called by Catalyst if it is asked to forward to a component without a specified action.
=head2 render
Allows others to use this view for much more fine-grained content generation.
=head1 CONFIG
=over 4
=item stash_key
Determines the key in the stash this view will look for when attempting to retrieve content to process. If this key isn't found it will then look at $c->response->body for content. Content when passed via the stash must be passed in a hashref in the key labeled 'data'
$c->view('MyApp::View::Download::HTML')->config->{'stash_key'} = 'content';
=back
=head1 AUTHOR
Travis Chase, C<< >>
=head1 SEE ALSO
L L L
=head1 COPYRIGHT & LICENSE
Copyright 2008 Travis Chase.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut