package TestApp;
use strict;
use warnings;
use Scalar::Util qw/blessed/;
use Catalyst;
our $VERSION = '0.01';
__PACKAGE__->config(
name => 'TestApp',
default_view => 'Mason::Appconfig',
default_message => 'hi',
'View::Mason::Appconfig' => {
default_escape_flags => ['h'],
use_match => 0,
},
);
if ($::use_root_string) {
__PACKAGE__->config(root => __PACKAGE__->config->{root}->stringify);
}
__PACKAGE__->config(
setup_components => {
except => [
'TestApp::View::Mason::CompRootRef',
($::setup_match ? () : 'TestApp::View::Mason::Match'),
],
},
);
__PACKAGE__->log( $::fake_log || Catalyst::Log->new(qw/debug info error fatal/) );
__PACKAGE__->setup;
sub test : Local {
my ($self, $c) = @_;
$c->stash->{message} = ($c->request->param('message') || $c->config->{default_message});
}
sub test_set_template : Local {
my ($self, $c) = @_;
$c->forward('test');
$c->stash->{template} = 'test';
}
sub test_content_type : Local {
my ($self, $c) = @_;
$c->forward('test');
$c->stash->{template} = '/test';
$c->response->content_type('text/html; charset=iso8859-1')
}
sub exception : Local {
my ($self, $c) = @_;
$c->log->abort(1); #silence errors
}
sub render : Local {
my ($self, $c) = @_;
my $out = $self->view->render(
$c, $c->request->param('template'),
{ param => $c->req->param('param') || '' },
);
$c->response->body($out);
if (blessed($out) && $out->isa('HTML::Mason::Exception')) {
$c->response->status(403);
}
}
sub match : Regex('^match/(\w+)') {
my ($self, $c) = @_;
$c->stash->{message} = $c->request->captures->[0];
}
sub action_match : Regex('^action_match/(\w+)') {
my ($self, $c) = @_;
$c->stash->{message} = $c->request->captures->[0];
}
sub globals : Local {
}
sub additional_globals : Local {
}
sub comp_path : Local {
my ($self, $c) = @_;
$c->stash->{param} = 'bar';
}
sub end : Private {
my ($self, $c) = @_;
return 1 if $c->response->status =~ /^3\d\d$/;
return 1 if $c->response->body;
my ($requested_view) = $c->request->param('view');
$c->forward($c->view( $requested_view ? "Mason::$requested_view" : () ));
}
1;