###---------------------###
# See the perldoc in CGI/Ex/App.pod
-# Copyright 2008 - Paul Seamons
+# Copyright 2004-2012 - Paul Seamons
# Distributed under the Perl Artistic License without warranty
use strict;
eval { use Time::HiRes qw(time) };
eval { use Scalar::Util };
}
-our $VERSION = '2.27';
+our $VERSION = '2.37';
sub new {
my $class = shift || croak "Usage: ".__PACKAGE__."->new";
return;
}
+sub import { # only ever called with explicit use CGI::Ex::App qw() - not with use base
+ my $class = shift;
+ if (@_ = grep { /^:?App($|__)/ } @_) {
+ require CGI::Ex::App::Constants;
+ unshift @_, 'CGI::Ex::App::Constants';
+ goto &CGI::Ex::App::Constants::import;
+ }
+}
+
###---------------------###
sub navigate {
sub hash_base {
my ($self, $step) = @_;
- return $self->{'hash_base'} ||= do {
- my $copy = $self; eval { require Scalar::Util; Scalar::Util::weaken($copy) };
- my $hash = {
- script_name => $self->script_name,
- path_info => $self->path_info,
- js_validation => sub { $copy->run_hook('js_validation', $step, shift) },
- generate_form => sub { $copy->run_hook('generate_form', $step, (ref($_[0]) ? (undef, shift) : shift)) },
- form_name => $self->run_hook('form_name', $step),
- $self->step_key => $step,
- };
+ my $hash = $self->{'hash_base'} ||= {
+ script_name => $self->script_name,
+ path_info => $self->path_info,
};
+
+ my $copy = $self; eval { require Scalar::Util; Scalar::Util::weaken($copy) };
+ $hash->{'js_validation'} = sub { $copy->run_hook('js_validation', $step, shift) };
+ $hash->{'generate_form'} = sub { $copy->run_hook('generate_form', $step, (ref($_[0]) ? (undef, shift) : shift)) };
+ $hash->{'form_name'} = $self->run_hook('form_name', $step);
+ $hash->{$self->step_key} = $step;
+
+ return $hash;
}
sub hash_common { $_[0]->{'hash_common'} ||= {} }
return 1;
}
+sub __forbidden_require_auth { 0 }
sub __forbidden_allow_morph { shift->allow_morph(@_) && 1 }
sub __forbidden_info_complete { 0 } # step that will be used the path method determines it is forbidden
sub __forbidden_hash_common { shift->stash }
-sub __forbidden_file_print { \ "<h1>Denied</h1>You do not have access to the step <b>\"[% forbidden_step %]\"</b>" }
+sub __forbidden_file_print { \ "<h1>Denied</h1>You do not have access to the step <b>\"[% forbidden_step.html %]\"</b>" }
sub __error_allow_morph { shift->allow_morph(@_) && 1 }
sub __error_info_complete { 0 } # step that is used by the default handle_error
sub __error_hash_common { shift->stash }
-sub __error_file_print { \ "<h1>A fatal error occurred</h1>Step: <b>\"[% error_step %]\"</b><br>[% TRY; CONFIG DUMP => {header => 0}; DUMP error; END %]" }
+sub __error_file_print { \ "<h1>A fatal error occurred</h1>Step: <b>\"[% error_step.html %]\"</b><br>[% TRY; CONFIG DUMP => {header => 0}; DUMP error; END %]" }
sub __login_require_auth { 0 }
sub __login_allow_morph { shift->allow_morph(@_) && 1 }