CGI-Application-Framework
view release on metacpan or search on metacpan
lib/CGI/Application/Framework.pm view on Meta::CPAN
$self->template($self->template_config_name)->config(
%$template_options,
include_paths => $include_paths,
);
}
sub _login_failed_errors { &__interface_death; }
sub _relogin_failed_errors { &__interface_death; }
sub _login_profile { &__interface_death; }
sub _relogin_profile { &__interface_death; }
sub _login_authenticate { &__interface_death; }
sub _relogin_authenticate { &__interface_death; }
sub _relogin_test { &__interface_death; }
sub _initialize_session { &__interface_death; }
sub _relogin_tmpl_params { &__interface_death; }
sub _login_tmpl_params { &__interface_death; }
sub __interface_death {
my $self = shift;
# -------------------------------------------------------
# Recall that noone should ever make this package
# ("Framework") and file ("Framework.pm") their
# base class. Framework.pm is meant to be
# subclassed, where the subclass has specific
# information regarding how to do an authentication, how
# to populate the session with initial data, etc.
#
# Framework.pm is meant to provide the login/relogin
# logic and to create the initial session and logging
# objects which are composed within the $self. I have
# created a series of subroutines, with the name of the
# sub prefixed with a "_", which indicate the subs that
# the subclasses need to provide. If the writer of a
# subclass forgets to provide one of these then the
# superclass, Framework, will provide it, but only
# enough to cause the program to die with a meaningful
# error message.
#
# This subroutine, __interface_death, is the common code
# for all of the need-to-be-subclassed subroutines that
# displays an error message which is hopefully meaningful
# to the module author so that they get to work and do
# the job they need to.
# -------------------------------------------------------
return $self->log_confess
(
__PACKAGE__
. " only implements a virtual interface method for ["
. (caller(1))[3]
. "] -- implement this yourself in a subclass! "
);
# -------------------------------------------------------
}
# -------------------------------------------------------
# Configuration Methods
# -------------------------------------------------------
# -------------------------------------------------------
# config_file
#
# my $path_to_config_file = $self->config_file;
#
# Can be overridden in your application.
# Search for an acceptable configuration file
#
# By default, following config files are searched for
# and the first one found is used.
#
#
# $package/app.conf # (where $package is the name of the package
# # of the application, e.g. 'example_1')
# project.conf
#
# ../framework.conf
#
# -------------------------------------------------------
sub config_file {
my ($self) = @_;
my $app_dir = $self->param('framework_app_dir')
or croak "CAF->config_file: framework_app_dir not in params; need it to find config file\n";
my $config_file = abs_path(File::Spec->catdir($app_dir, 'framework.conf'));
$config_file or croak "CAF->config_file: could not find config file framework.conf in $app_dir\n";
return $config_file;
}
# -------------------------------------------------------
# db_config_file
#
# my $path_to_db_config_file = $self->db_config_file;
#
# Can be overridden in your application.
# Search for an acceptable database configuration file
#
# By default, db_config_file returns $self->config_file
# meaning that the same file is used for both database and
# application configuration.
# -------------------------------------------------------
sub db_config_file {
my ($self) = @_;
$self->config_file;
( run in 2.180 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )