=head1 VERSION
-Version 0.08
+Version 0.11
=cut
-our $VERSION = '0.08';
+our $VERSION = '0.11';
$VERSION = eval $VERSION;
=head1 SYNOPSIS
Simply put, it's a way to include the output of a Catalyst sub-request somewhere
in your page.
-It's built in an extensible way so that you're free to use sub-requests, Varnish
-ESI (L<http://www.catalystframework.org/calendar/2008/17>) or any other
-sub-include plugin you might want to implement. An LWP plugin seems useful and
-might be developed in the future.
+It's built in an extensible way so that you're free to use sub-requests,
+Varnish ESI (L<http://www.catalystframework.org/calendar/2008/17>) or any other
+sub-include plugin you might want to implement.
=head1 STASH FUNCTIONS
=head1 SUBINCLUDE PLUGINS
-The module comes with two subinclude plugins:
-L<SubRequest|Catalyst::Plugin::View::Component::SubRequest>,
-L<Visit|Catalyst::Plugin::View::Component::Visit> and
-L<ESI|Catalyst::Plugin::View::Component::ESI>.
+The module comes with several subinclude plugins:
+L<SubRequest|Catalyst::View::Component::SubInclude::SubRequest>,
+L<HTTP|Catalyst::View::Component::SubInclude::HTTP>,
+L<SSI|Catalyst::View::Component::SubInclude::SSI>,
+L<Visit|Catalyst::View::Component::SubInclude::Visit> and
+L<ESI|Catalyst::View::Component::SubInclude::ESI>.
By default, the C<SubRequest> plugin will be used. This can be changed in the
view's configuration options (either in the config file or in the view module
itself).
-Configuration file example:
+ __PACKAGE__->config(
+ subinclude_plugin => 'ESI',
+ subinclude => {
+ 'SubRequest' => {
+ keep_stash => 1,
+ },
+ 'HTTP::POST' => {
+ class => 'HTTP',
+ http_method => 'POST',
+ ua_timeout => '10',
+ uri_map => {
+ '/foo/' => 'http://www.foo.com/',
+ },
+ },
+ },
+ );
- <View::TT>
- subinclude_plugin ESI
- </View::TT>
+You can change each plugins' configuration through the keys in the 'subinclude'
+config key (example above)
=head2 C<set_subinclude_plugin( $plugin )>
isa => Str,
);
+has subinclude => (
+ is => 'ro',
+ isa => HashRef,
+ default => sub { {} },
+);
+
around 'new' => sub {
my $next = shift;
my $class = shift;
sub _subinclude_plugin_class_instance {
my ($self, $plugin) = @_;
- my $class = $plugin =~ /::/ ? $plugin : __PACKAGE__ . '::' . $plugin;
-
my $cache = $self->_subinclude_plugin_class_instance_cache;
return $cache->{$plugin} if exists $cache->{$plugin};
my $plugin_config = Catalyst::Utils::merge_hashes(
- $self->config->{subinclude}->{ALL}||{},
- $self->config->{subinclude}->{$plugin}||{}
+ $self->subinclude->{ALL}||{},
+ $self->subinclude->{$plugin}||{}
);
+ my $short_class = $plugin_config->{'class'} ?
+ delete $plugin_config->{'class'}
+ : $plugin;
+ my $class = $short_class =~ /::/ ?
+ $short_class
+ : __PACKAGE__ . '::' . $short_class;
Class::MOP::load_class($class);
- return $cache->{$plugin} = $class->new($plugin_config);
+ return $cache->{$class} = $class->new($plugin_config);
}
=head1 SEE ALSO
Tomas Doran (t0m) C<< <bobtfish@bobtfish.net >>.
+Vladimir Timofeev, C<< <vovkasm at gmail.com> >>.
+
+Wallace Reis (wreis) C<< <wreis@cpan.org> >>.
+
=head1 SPONSORSHIP
Development sponsored by Ionzero LLC L<http://www.ionzero.com/>.