%doc>
Example:
<& /elements/select-state.html,
#recommended
country => $current_country,
state => $current_state,
#optional
prefix => $optional_unique_prefix,
onchange => $javascript,
disabled => 0, #bool
disable_empty => 1, #defaults to 1, disable the empty option
empty_label => 'all', #label for empty option
disable_countyupdate => 0, #bool - disabled update of the select-state.html
style => [ 'attribute:value', 'another:value' ],
&>
%doc>
<%init>
my %opt = @_;
foreach my $opt (qw(
state country prefix onchange disabled empty_label svcpart
)) {
$opt{$opt} = '' unless exists($opt{$opt}) && defined($opt{$opt});
}
$opt{'disable_empty'} = 1 unless exists($opt{'disable_empty'});
my $pre = $opt{'prefix'};
my $onchange =
( $opt{'disable_countyupdate'} ? '' : $pre.'state_changed(this); ' ).
$opt{'onchange'};
$opt{'style'} ||= [];
my $style =
scalar(@{$opt{style}})
? 'STYLE="'. join(';', @{$opt{style}}). '"'
: '';
tie my %states, 'Tie::IxHash', states_hash( $opt{'country'} );
if ( $opt{'svcpart'} ) {
my $part_svc = qsearchs('part_svc', { 'svcpart' => $opt{'svcpart'} } );
if ( $part_svc && $part_svc->exporttype eq 'internal_diddb' ) {
my $sth = dbh->prepare(
'SELECT DISTINCT state FROM phone_avail WHERE svcnum IS NULL'
) or die dbh->errstr;
$sth->execute or die $sth->errstr;
my %avail_states = map { $_->[0] => 1 } @{ $sth->fetchall_arrayref };
if ( %avail_states ) {
delete $states{$_} foreach grep ! $avail_states{$_}, keys %states;
}
}
}
%init>