X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_export.cgi;h=0e53e29d0b58a91ace18e83a90aee346d610b5fb;hp=2897cf39da7abd81cfac6bc2176286d43f2232cc;hb=e3503e19a5a6c876f410903a3946dd9f1597aa46;hpb=af96802d080094c381dd06b74488adfb20396574 diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index 2897cf39d..0e53e29d0 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -201,6 +201,15 @@ my $widget = new HTML::Widgets::SelectLayers( $html .= qq!$label!; } if ( $type eq 'select' ) { + + # 'select' options can specify options one of two ways: + # the "preferred" way: + # options: arrayref of allowed option values + # option_labels: hashref of option value => label + # OR the weird and semi-deprecated way: + # option_values: coderef to return a list of allowed option values + # option_label: coderef to take an option value and return its label + my $size = defined($optinfo->{size}) ? " SIZE=" . $optinfo->{size} : ''; my $multi = ($optinfo->{multi} || $optinfo->{multiple}) ? ' MULTIPLE' : ''; @@ -218,10 +227,15 @@ my $widget = new HTML::Widgets::SelectLayers( #} else { my $selected = ($multi ? grep {$_ eq $select_option} @values : $select_option eq $value ) ? ' SELECTED' : ''; my $label = $select_option; - if (defined($optinfo->{option_label})) { + if ( defined $optinfo->{option_label} ) { my $labelsub = $optinfo->{option_label}; $label = &$labelsub($select_option); + } elsif ( defined $optinfo->{option_labels} ) { + if (exists $optinfo->{option_labels}->{$select_option}) { + $label = $optinfo->{option_labels}->{$select_option}; + } } + $html .= qq!!; #}