package dir_browse::dir_browse;
use strict;
use warnings;
use Apache2::RequestRec;
use Apache2::RequestIO;
use Apache2::Const qw(:common);
use Apache2::Reload;
use File::Spec;
use Error qw(:try);
use Template;
sub new {
bless {}
}
sub handler : method {
my ($self, $r) = @_;
$Error::Debug = 1;
$self = $self->new unless ref $self;
$self->{r} = $r;
try {
my $websrc = $self->get_websrc;
my $template = new Template({
INCLUDE_PATH => ["$websrc/src", "$websrc/lib"],
INTERPOLATE => 1,
OUTPUT => $self->{r},
});
$self->get_contents(File::Spec->rel2abs($self->{r}->path_info));
$self->{r}->content_type('text/html');
throw Error(-text => "No path '$websrc'") unless -f "$websrc/src/dir_browse.tt2";
$template->process('dir_browse.tt2', $self)
or throw Error(text => $template->error());
}
catch Error with {
my $E = shift;
$self->{r}->print($E->stacktrace);
$self->{r}->log_error($E->stacktrace);
return Apache2::Const::SERVER_ERROR;
};
return Apache2::Const::OK;
}
...
1;
####
package dir_browse::dir_browse;
use strict;
use warnings;
use Apache2::RequestRec;
use Apache2::RequestIO;
use Apache2::Const qw(:common);
use Apache2::Reload;
use Apache2::Ajax;
use File::Spec;
use Error qw(:try);
use Template;
sub new {
bless {}
}
sub handler : method {
my ($self, $r) = @_;
$Error::Debug = 1;
$self = $self->new unless ref $self;
$self->{r} = $r;
try {
my $websrc = $self->get_websrc;
my $template = new Template({
INCLUDE_PATH => ["$websrc/src", "$websrc/lib"],
INTERPOLATE => 1,
OUTPUT => $self->{r},
});
$self->get_contents(File::Spec->rel2abs($self->{r}->path_info));
$self->{r}->content_type('text/html');
throw Error(-text => "No path '$websrc'") unless -f "$websrc/src/dir_browse.tt2";
my $html;
$template->process('dir_browse.tt2', $self, \$html)
or throw Error(text => $template->error());
my $ajax = Apache2::Ajax->new($self->{r}, 'show' => sub {return $html})
or throw Error(text => "DARN!! ");
$self->{r}->print($ajax->build_html());
}
catch Error with {
my $E = shift;
$self->{r}->print($E->stacktrace);
$self->{r}->log_error($E->stacktrace);
return Apache2::Const::SERVER_ERROR;
};
return Apache2::Const::OK;
}
...
1;
####
PerlModule Apache2::Ajax
...
PerlModule Apache2::dir_browse
SetHandler perl-script
PerlResponseHandler dir_browse::dir_browse