diff options
author | Mark Wells <mark@freeside.biz> | 2014-12-28 23:27:48 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2014-12-28 23:27:48 -0800 |
commit | e3503e19a5a6c876f410903a3946dd9f1597aa46 (patch) | |
tree | 6d361bb09fd1aa0f1d9b9578198a913a0950e955 /httemplate/edit/part_export.cgi | |
parent | af96802d080094c381dd06b74488adfb20396574 (diff) |
voip.ms export, #31834
Diffstat (limited to 'httemplate/edit/part_export.cgi')
-rw-r--r-- | httemplate/edit/part_export.cgi | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index 2897cf3..0e53e29 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!<TR><TD ALIGN="right">$label</TD><TD>!; } 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!<OPTION VALUE="$select_option"$selected>!. qq!$label</OPTION>!; #} |