%doc>
Example:
include( '/elements/tr-select-reason.html',
#required
'field' => 'reasonnum',
'reason_class' => 'C', # currently 'C', 'R', 'F', or 'S'
# for cancel, credit, refund, or suspend
#recommended
'cgi' => $cgi, #easiest way for things to be properly "sticky" on errors
#optional
'control_button' => 'element_name', #button to be enabled when a reason is
#selected
'id' => 'element_id',
#deprecated ways to keep things "sticky" on errors
# (requires duplicate code in each using file to parse cgi params)
'curr_value' => $curr_value,
'curr_value' => {
'typenum' => $typenum,
'reason' => $reason,
},
)
%doc>
% # note style improvements.
% # - no more conditionally included code here
% # - callers are not expected to pass javascript fragments
% # - no redundant checking of ACLs or parameters
% # - form fields are grouped for easy management
% # - use the standard select-table widget instead of ad hoc crap
%# sadly can't just use add_inline here, as we have non-text fields
<& tr-select-table.html,
'label' => 'Reason',
'field' => $name,
'id' => $id,
'table' => 'reason',
'records' => \@reasons,
'label_callback' => sub { my $reason = shift;
$reason->type . ' : ' . $reason->reason },
'disable_empty' => 1,
'pre_options' => [ 0 => 'Select reason...' ],
'post_options' => [ -1 => 'Add new reason' ],
'curr_value' => $init_reason,
'onchange' => $id.'_changed()',
&>
% # "add new reason" fields
% # should be a