Apache2-Layer

 view release on metacpan or  search on metacpan

lib/Apache2/Layer.pm  view on Meta::CPAN

                    my $r = shift;
                    $r->filename($file);
                    $r->finfo($finfo);
                    return Apache2::Const::DECLINED;
                });

                return Apache2::Const::DECLINED;
            }
        }
    }

    return Apache2::Const::DECLINED;
}


1;


__END__
=pod

=encoding utf-8

=head1 NAME

Apache2::Layer - Layers for DocumentRoot

=head1 VERSION

version 1.103360

=head1 SYNOPSIS

    # in httpd.conf
    DocumentRoot "/usr/local/htdocs"

    # load module
    PerlLoadModule Apache2::Layer

    # enable layers for whole server
    EnableDocumentRootLayers On

    # disable location strip
    DocumentRootLayersStripLocation Off

    # paths are relative to DocumentRoot
    DocumentRootLayers layered/christmas layered/promotions

    <VirtualHost *:80>
        ...
        # layers enabled for this vhost
    </VirtualHost>

    <VirtualHost *:80>
        ...
        DocumentRoot "/usr/local/vhost2"

        # disabled by default
        EnableDocumentRootLayers Off

        <LocationMatch "\.png$">
            # layer images only
            EnableDocumentRootLayers On
            DocumentRootLayers images_v3 images_v2
        </LocationMatch>


        <Location "/images">
            DocumentRootLayersStripLocation On
        </Location>

        <Location "/images/company1">
            DocumentRootLayers company1/images default/images
        </Location>

        <Location "/images/company2">
            DocumentRootLayers company2/images default/images
        </Location>

    </VirtualHost>

    <VirtualHost *:80>
        ...
        PerlOptions +MergeHandlers
        PerlTransHandler My::Other::Handler
    </VirtualHost>

=head1 DESCRIPTION

Create multiple layers to allow incremental content modifications.

If file was found in layered directory it will be used instead of one from
C<DocumentRoot>.

Loaded module adds itself as C<PerlTransHandler> and
C<PerlMapToStorageHandler>, so please remember to use

    PerlOptions +MergeHandlers

if you want to define your own handlers for those phases.

=head1 DIRECTIVES

L<Apache2::Layer> needs to be loaded via C<PerlLoadModule> due to use of
following directives:

=head2 EnableDocumentRootLayers

    Syntax:   EnableDocumentRootLayers On|Off
    Default:  EnableDocumentRootLayers Off
    Context:  server config, virtual host, <Location*

Enable use of L<"DocumentRootLayers">.

=head2 DocumentRootLayersStripLocation

    Syntax:   DocumentRootLayersStripLocation On|Off
    Default:  DocumentRootLayersStripLocation On
    Context:  server config, virtual host, <Location*

Remove the path specified in E<lt>LocationE<gt>, E<lt>LocationMatchE<gt> from
the URI before searching for layered file.

That allows to simplify the file hieratchy tree, eg.  

    <Location "/images">
        DocumentRootLayersStripLocation On
    </Location>

    <Location "/images/company1">
        DocumentRootLayers company1/images default/images
    </Location>

    <Location "/images/company2">
        DocumentRootLayers company2/images default/images
    </Location>

for following requests:

    /images/company1/headers/top.png 

    /images/company2/headers/top.png 

those paths would be searched:

   company1/images/headers/top.png default/images/headers/top.png 

   company2/images/headers/top.png default/images/headers/top.png 

but with C<DocumentRootLayersStripLocation Off>:

   company1/images/images/company1/headers/top.png default/images/images/company1/headers/top.png

   company2/images/images/company2/headers/top.png default/images/images/company2/headers/top.png

=head2 DocumentRootLayers

    Syntax:   DocumentRootLayers dir-path1 [dir-path2 ... dir-pathN]
    Context:  server config, virtual host, <Location*

Specify content layers to be used on top of C<DocumentRoot>.

If the I<dir-path*> is not absolute it is assumed to be relative to
C<DocumentRoot>.

Directories are searched in order specified and first one containing the file
is used.

If file does not exists in any of them module falls back to C<DocumentRoot>.

=head1 SEE ALSO

Module was created as a result of upgrade existing application from mod_perl1
to mod_perl2 and is a replacement for L<Apache::Layer>.

=head1 AUTHOR

Alex J. G. Burzyński <ajgb@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Alex J. G. Burzyński <ajgb@cpan.org>.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut



( run in 0.750 second using v1.01-cache-2.11-cpan-df04353d9ac )