Notes on the Maypole API
========================
Compiled by David Baird <cpan@riverside-cms.co.uk>, 20th Nov 2004.
Criteria: simply a listing of the apparently public methods in each class,
pretty much in the order they appear in the source. 'Public' methods
are assumed to be those with no leading underscores.
--------------------------------------------------------------------------------
Inheritance
--------------------------------------------------------------------------------
Not all modules are involved in any given app e.g. CGI apps will load
CGI::Maypole, but not Apache::MVC etc.
Maypole
Apache::MVC
MasonX::Maypole
CGI::Maypole
Maypole::View::Base
Maypole::View::TT
Maypole::View::Mason
MasonX::Maypole::View
Class::DBI and Maypole::Model::Base
Maypole::Model::CDBI
BeerDB or whatever (i.e. your app)
--------------------------------------------------------------------------------
The request
--------------------------------------------------------------------------------
Maypole
class data accessors:
config
init_done
view_object
instance data accessors:
ar
params
query
objects
model_class
template_args
output
path
args
action
template
error
document_encoding
content_type
table
debug
setup
init
handler
handler_guts
is_applicable
call_authenticate
call_exception
additional_data # empty
authenticate
exception
parse_path
get_template_root
get_request # empty
parse_location # abstract
send_output # abstract
Apache::MVC - Maypole subclass
get_request
parse_location
parse_args
send_output
get_template_root
MasonX::Maypole - Apache::MVC subclass
class data accessor:
mason_ah
init
set_mason_comp_roots
parse_args
send_output
get_template_root
CGI::Maypole - Maypole subclass
run
get_request
parse_location
parse_args
send_output
get_template_root
--------------------------------------------------------------------------------
The view
--------------------------------------------------------------------------------
Maypole::View::Base
new
paths
vars
process
error
template # abstract
Maypole::View::TT - Maypole::View::Base subclass
template
MasonX::Maypole::View - Maypole::View::Base subclass
template
error
--------------------------------------------------------------------------------
Template variables
--------------------------------------------------------------------------------
basic set:
$request # Maypole request
$objects # $r->objects
$base # $r->config->uri_base
$config # $r->config
if $r->model_class:
$classmetadata = { name => $r->model_class,
table => $r->model_class->table,
columns => [ $r->model_class->display_columns ],
list_columns => [ $r->model_class->list_columns ],
colnames => { $r->model_class->column_names },
related_accessors => [ $r->model_class->related( $r ) ],
moniker => $r->model_class->moniker,
plural => $r->model_class->plural_moniker,
cgi => { $r->model_class->to_cgi },
};
if > 1 objects in $r->objects:
${ $r->model_class->plural_moniker } = $objects
else:
${ $r->model_class->moniker } = $objects
Any values set in $r->template_args during the request are also included in
the template variables, possibly overriding the values set here. For instance,
$pager # set in Maypole::Model::CDBI::do_pager
$search # set (to 1) in Maypole::Model::CDBI::search
$errors # set in Maypole::Model::CDBI::do_edit (maybe elsewhere too?)
$cgi_params # set in Maypole::Model::CDBI::do_edit (maybe elsewhere too?)
--------------------------------------------------------------------------------
The model
--------------------------------------------------------------------------------
The CDBI model loads up this stuff:
package Maypole::Model::CDBI;
use base qw(Maypole::Model::Base Class::DBI);
use Class::DBI::AsForm;
use Class::DBI::FromCGI;
use Class::DBI::Loader;
use Class::DBI::AbstractSearch;
use Class::DBI::Plugin::RetrieveAll;
use Class::DBI::Pager;
use Lingua::EN::Inflect::Number qw(to_PL);
use CGI::Untaint;
Maypole::Model::Base
process
list_columns
display_columns
class_of # abstract
setup_database # abstract
do_edit # abstract
list # abstract # Exported
view # empty # Exported
edit # empty # Exported
column_names
description
is_public
related # empty
Maypole::Model::CDBI
related
related_class
do_edit # Exported
delete # Exported
stringify_column
adopt
search # Exported
do_pager
order
list # Exported
setup_database
class_of
Class::DBI::AsForm
to_cgi
to_field
type_of # - don't know what this is, but it's in the export list
column_type # - from Class::DBI::Plugin::Type
Class::DBI::FromCGI
update_from_cgi
create_from_cgi
untaint_columns
cgi_update_errors
untaint_type
Class::DBI::Loader
(nothing exported)
Class::DBI::AbstractSearch
search_where
Class::DBI::Plugin::RetrieveAll
retrieve_all_sorted_by
retrieve_all_sort_field
Class::DBI::Pager
pager
Class::DBI
use base qw(Class::Accessor Class::Data::Inheritable Ima::DBI);
class data: sequence iterator_class purge_object_index_every
stringify_self
transform_sql
connection
set_db
table
table_alias
columns
all_columns
id
primary_column
primary_columns # same thing
find_column
has_real_column
data_type
accessor_name
mutator_name
autoupdate
make_read_only
find_or_create
create
purge_dead_from_object_index
remove_from_object_index
clear_object_index
retrieve
copy
construct
move
delete
update
discard_changes
get
set
is_changed
any_changed
normalize_column_values
validate_column_values
set_sql
dbi_commit
dbi_rollback
constrain_column
add_constraint
add_trigger
add_relationship_type
meta_info
retrieve_all
retrieve_from_sql
search_like
search
add_constructor
sth_to_objects
count_all
maximum_value_of
minimum_value_of
Ima::DBI
set_db
set_sql
transform_sql
db_names
db_handles
sql_names
db_*
sql_*
DBIwarn
commit
rollback