/usr/share/perl5/Catalyst/Action/RenderView.pm is in libcatalyst-modules-perl 47.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | package Catalyst::Action::RenderView;
use strict;
use warnings;
our $VERSION = '0.16';
use base 'Catalyst::Action';
use MRO::Compat;
use Data::Visitor::Callback;
my %ignore_classes = ();
sub execute {
my $self = shift;
my ($controller, $c ) = @_;
$self->next::method( @_ );
$c->config->{'Action::RenderView'}->{ignore_classes} =
( ref($c->config->{'debug'}) eq 'HASH' ? $c->config->{'debug'}->{ignore_classes} : undef )
|| [ qw/
DBIx::Class::ResultSource::Table
DBIx::Class::ResultSourceHandle
DateTime
/ ] unless exists $c->config->{'Action::RenderView'}->{ignore_classes};
$c->config->{'Action::RenderView'}->{scrubber_func} =
( ref($c->config->{'debug'}) eq 'HASH' ? $c->config->{'debug'}->{scrubber_func} : undef )
|| sub { $_='[stringified to: ' . $_ . ']' }
unless exists $c->config->{'Action::RenderView'}->{scrubber_func};
if ($c->debug && $c->req->params->{dump_info}) {
unless ( keys %ignore_classes ) {
foreach my $class (@{$c->config->{'Action::RenderView'}->{ignore_classes}}) {
$ignore_classes{$class} = $c->config->{'Action::RenderView'}->{scrubber_func};
}
}
my $scrubber=Data::Visitor::Callback->new(
"ignore_return_values" => 1,
"object" => "visit_ref",
%ignore_classes,
);
$scrubber->visit( $c->stash );
die('Forced debug - Scrubbed output');
}
if(! $c->response->content_type ) {
$c->response->content_type( 'text/html; charset=utf-8' );
}
return 1 if $c->req->method eq 'HEAD';
return 1 if defined $c->response->body;
return 1 if scalar @{ $c->error } && !$c->stash->{template};
return 1 if $c->response->status =~ /^(?:204|3\d\d)$/;
my $view = $c->view()
|| die "Catalyst::Action::RenderView could not find a view to forward to.\n";
$c->forward( $view );
};
1;
=head1 NAME
Catalyst::Action::RenderView - Sensible default end action.
=head1 SYNOPSIS
sub end : ActionClass('RenderView') {}
=head1 DESCRIPTION
This action implements a sensible default end action, which will forward
to the first available view, unless C<< $c->res->status >> is a 3xx code
(redirection, not modified, etc.), 204 (no content), or C<< $c->res->body >> has
already been set. It also allows you to pass C<dump_info=1> to the url in
order to force a debug screen, while in debug mode.
If you have more than one view, you can specify which one to use with
the C<default_view> config setting and the C<current_view> and
C<current_view_instance> stash keys (see L<Catalyst>'s C<$c-E<gt>view($name)>
method -- this module simply calls C<< $c->view >> with no argument).
=head1 METHODS
=head2 end
The default C<end> action. You can override this as required in your
application class; normal inheritance applies.
=head1 INTERNAL METHODS
=head2 execute
Dispatches control to superclasses, then forwards to the default View.
See L<Catalyst::Action/METHODS/action>.
=head1 SCRUBBING OUTPUT
When you force debug with dump_info=1, RenderView is capable of removing
classes from the objects in your stash. By default it will replace any
DBIx::Class resultsource objects with the class name, which cleans up the
debug output considerably, but you can change what gets scrubbed by
setting a list of classes in
$c->config->{'Action::RenderView'}->{ignore_classes}.
For instance:
$c->config->{'Action::RenderView'}->{ignore_classes} = [];
To disable the functionality. You can also set
config->{'Action::RenderView'}->{scrubber_func} to change what it does with the
classes. For instance, this will undef it instead of putting in the
class name:
$c->config->{'Action::RenderView'}->{scrubber_func} = sub { undef $_ };
=head2 Deprecation notice
This plugin used to be configured by setting C<< $c->config->{debug} >>.
That configuration key is still supported in this release, but is
deprecated, please use the C< 'Action::RenderView' > namespace as shown
above for configuration in new code.
=head1 EXTENDING
To add something to an C<end> action that is called before rendering,
simply place it in the C<end> method:
sub end : ActionClass('RenderView') {
my ( $self, $c ) = @_;
# do stuff here; the RenderView action is called afterwards
}
To add things to an C<end> action that are called I<after> rendering,
you can set it up like this:
sub render : ActionClass('RenderView') { }
sub end : Private {
my ( $self, $c ) = @_;
$c->forward('render');
# do stuff here
}
=head1 AUTHORS
Marcus Ramberg <marcus@thefeed.no>
Florian Ragwitz E<lt>rafl@debian.orgE<gt>
=head1 COPYRIGHT
Copyright (c) 2006 - 2009
the Catalyst::Action::RenderView L</AUTHOR>
as listed above.
=head1 LICENSE
This library is free software. You can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
|