X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FView%2FComponent%2FSubInclude%2FVisit.pm;h=88e883c2fd9a0e8345eb1b3dd8d09cc1f5a302d5;hb=HEAD;hp=d5c5ec02771c7a689b496b0e23371b13a40a116a;hpb=7094e990d51cd17a80ceb30cea0eca4c1295b395;p=catagits%2FCatalyst-View-Component-SubInclude.git diff --git a/lib/Catalyst/View/Component/SubInclude/Visit.pm b/lib/Catalyst/View/Component/SubInclude/Visit.pm index d5c5ec0..88e883c 100644 --- a/lib/Catalyst/View/Component/SubInclude/Visit.pm +++ b/lib/Catalyst/View/Component/SubInclude/Visit.pm @@ -1,9 +1,8 @@ package Catalyst::View::Component::SubInclude::Visit; -use warnings; -use strict; - +use Moose; use Carp qw/croak/; -use namespace::clean; +use MooseX::Types::Moose qw/ Bool /; +use namespace::clean -except => 'meta'; =head1 NAME @@ -11,11 +10,12 @@ Catalyst::View::Component::SubInclude::Visit - visit() plugin for C::V::Componen =head1 VERSION -Version 0.07 +Version 0.07_03 =cut -our $VERSION = '0.07'; +our $VERSION = '0.07_03'; +$VERSION = eval $VERSION; =head1 SYNOPSIS @@ -40,11 +40,7 @@ render subinclude contents. This method is only supported when using L version 5.71000 or newer. -B. Apparently, C doesn't handle this type -of actions yet. - -=head1 CLASS METHODS +=head1 METHODS =head2 C @@ -56,16 +52,41 @@ But it will handle all the nasty details such as localizing the stash, parameters and response body. This is necessary to keep behavior consistent with the other plugins. +=head1 CONFIGURATION + +=head2 keep_stash + +You can choose to not localize the stash for Visits' subinclude calls. The subrequest +will have the same stash as the request that spawned it. Configure the keep_stash key +in your view: + + __PACKAGE__->config( + subinclude => { + 'Visit' => { + keep_stash => 1, + }, + } + ); + +Note: changes in the stash during a Visit subinclude will be visible after the include +returns. + =cut +has keep_stash => ( + isa => Bool, + is => 'ro', + default => 0, +); + sub generate_subinclude { - my ($class, $config, $c, $path, @params) = @_; + my ($self, $c, $path, @params) = @_; croak "subincludes through visit() require Catalyst version 5.71000 or newer" unless $c->can('visit'); { - local $c->{stash} = $config->{keep_stash} ? $c->{stash} : {}; + local $c->{stash} = $self->keep_stash ? $c->{stash} : {}; local $c->request->{parameters} = ref $params[-1] eq 'HASH' ? pop @params : {}; @@ -104,4 +125,5 @@ under the same terms as Perl itself. =cut +__PACKAGE__->meta->make_immutable; 1;