? $optinfo->{default}
: ''
);
+
+ #handle these with post_config_element
+ next if $type eq 'custom';
+
if ( $type eq 'title' ) {
$html .= qq!<TR><TH COLSPAN=1 ALIGN="right"><FONT SIZE="+1">! .
$label .
$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' : '';
#} 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>!;
#}
$html .= '</TABLE>';
+ # false laziness with config_element above
+ # create 'post_config_element' to generate the whole layer with a Mason component
+ if ( my $include = $exports->{$layer}{post_config_element} ) {
+ # might need to adjust the scope of this at some point
+ $html .= $m->scomp($include,
+ part_export => $part_export,
+ layer => $layer,
+ export_info => $exports->{$layer}
+ );
+ }
+
$html .= '<INPUT TYPE="hidden" NAME="options" VALUE="'.
join(',', keys %{$exports->{$layer}{options}} ). '">';