%doc>
Example:
include( 'elements/edit.html',
'name' =>
'table' =>
#? 'primary_key' => #required when the dbdef doesn't know...???
'labels' => {
'column' => 'Label',
}
listref - each item is a literal column name (or method) or hashref
or (notyet) coderef
if not specified all columns (except for the primary key) will be editable
'fields' => [
'columname',
{ 'field' => 'another_columname',
'type' => 'text', #text
#money
#checkbox
#select
#selectlayers
#title
#hidden - hidden value from object
#fixed - display fixed value from here
#fixedhidden - hidden value from here
'value' => 'Y', #for checkbox, title, fixed, fixedhidden
'disabled' => 0,
'onchange' => 'javascript_function',
'm2name_table' => 'table_name', #only tested w/
# selectlayers so far
# might work w/select
# dunno others
'm2name_namecol' => 'name_column', #
'm2name_label' => 'Label', #
'm2name_new_default' => \@table_name_objects, #default
#m2name
#objects for
#new records
'm2name_error_callback' => sub { my($cgi, $object) = @_; },
'm2name_remove_warnings' => \%warnings, #hashref of warning
#messages for
#m2name removal
'm2name_new_js' => 'function_name', #javascript function
#called on spawned rows
#(one arg: new_element)
'm2name_remove_js' => 'function_name', #js function called
#when a row is
#deleted
#(three args:
# value, text,
# 'no_match')
#layer_fields & layer_values_callback only for selectlayer
'layer_fields' => [
'fieldname' => 'Label',
'another_field' => {
label=>'Label',
type =>'text', #text, money
},
],
'layer_values_callback' =>
sub {
my( $cgi, $object ) = @_;
{ 'layer' => { 'fieldname' => 'current_value',
'fieldname2' => 'field2value',
...
},
'layer2' => { 'l2fieldname' => 'l2value',
...
},
...
};
},
},
]
'menubar' => '', #menubar arrayref
#agent virtualization
'agent_virt' => 1,
'agent_null_right' => 'Access Right Name',
#run when re-displaying with an error
'error_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
#run when editing
'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
# returns a hashref for the new object
'new_hashref_callback'
#run when adding
'new_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
#XXX describe
'field_callback' => sub { },
#string or coderef of additional HTML to add before
'html_table_bottom' => '',
'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
'html_bottom' => '', #string
'html_bottom' => sub {
my $object = shift;
# ...
"html_string";
},
# overrides default popurl(1)."process/$table.html"
'post_url' => popurl(1).'process/something',
);
%doc>
<% include("/elements/header.html", $title,
include( '/elements/menubar.html', @menubar )
)
%>
% if ( $cgi->param('error') ) {
Error: <% $cgi->param('error') %>
% }
% my $url = $opt{'post_url'} || popurl(1)."process/$table.html";