<%doc> Example: include( '/elements/checkboxes.html', # required #not yet 'name_callback' => sub { }, 'names_list' => [ 'value', 'other value', [ 'complex value' => { 'label' => 'Display value', 'desc' => "Add'l description", 'note' => ' *', } ], ], 'element_name_prefix' => "$link_table.", #recommended 'checked_callback' => sub { my( $cgi, $name ) = @_; }, ) > % unless ( $opt{'disable_links'} ) { % } % my $num=0; % foreach my $item ( @{ $opt{'names_list'} } ) { % % my $name = ref($item) ? $item->[0] : $item; % my $display = ( ref($item) && $item->[1]{label} ) % ? $item->[1]{label} % : $name; % $display =~ s/ / /g; % $display .= $item->[1]{note} if ref($item) && $item->[1]{note}; % my $desc = ref($item) && $item->[1]{desc} ? $item->[1]{desc} : ''; % % my $callback = % ( $cgi->param('error') ? 'error_' : '' ). 'checked_callback'; % my $checked = &{ $opt{$callback} }( $cgi, $name ) ? 'CHECKED' : ''; % }
( select all | unselect all | toggle all )
ID="<%$prefix.$num++%>" VALUE="ON"> <% $display %> % if ( $desc ) {
<% $desc %> % }
<%init> my( %opt ) = @_; my @pset = ( 'a'..'z', 'A'..'Z', '0'..'9' ); my $prefix = $opt{prefix} || join('', map $pset[ int(rand $#pset) ], (0..20) ); $opt{checked_callback} ||= sub {}; $opt{'error_checked_callback'} ||= sub { my( $cgi, $name ) = @_; $cgi->param($opt{'element_name_prefix'}. $name ); }; my $style = ''; if ($opt{'style'}) { $style = 'STYLE="' . $opt{'style'} . '"'; }