diff options
Diffstat (limited to 'httemplate/elements/selectlayers.html')
-rw-r--r-- | httemplate/elements/selectlayers.html | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/httemplate/elements/selectlayers.html b/httemplate/elements/selectlayers.html index 82f5dd1..89fe41b 100644 --- a/httemplate/elements/selectlayers.html +++ b/httemplate/elements/selectlayers.html @@ -14,7 +14,7 @@ Example: #XXX put this handling it its own selectlayers-fields.html element? 'layer_prefix' => 'prefix_', #optional prefix for fieldnames - 'layer_fields' => [ 'layer' => [ 'fieldname', + 'layer_fields' => { 'layer' => [ 'fieldname', { label => 'fieldname2', type => 'text', #implemented: # text, money, fixed, @@ -23,6 +23,7 @@ Example: # select, select-agent, # select-pkg_class, # select-part_referral, + # select-taxclass, # select-table, #XXX tbd: # more? @@ -32,6 +33,7 @@ Example: 'layer2' => [ 'l2fieldname', ... ], + }, #current values for layer fields above 'layer_values' => { 'layer' => { 'fieldname' => 'current_value', @@ -63,18 +65,29 @@ Example: <SCRIPT TYPE="text/javascript"> % } % unless ( grep $opt{$_}, qw(html_only select_only layers_only) ) { - //alert('start function define'); + +% if ( $opt{layermap} ) { +% my %map = %{ $opt{layermap} }; + var layermap = { "":"", + <% join(',', map { qq("$_":"$map{$_}") } keys %map ) %> + }; +% } + function <% $key %>changed(what) { <% $opt{'onchange'} %> var <% $key %>layer = what.options[what.selectedIndex].value; -% foreach my $layer ( keys %$options ) { - +% foreach my $layer ( @layers ) { +% +% if ( $opt{layermap} ) { + if ( layermap[ <% $key %>layer ] == "<% $layer %>" ) { +% } else { if (<% $key %>layer == "<% $layer %>" ) { +% } -% foreach my $not ( grep { $_ ne $layer } keys %$options ) { +% foreach my $not ( grep { $_ ne $layer } @layers ) { % my $element = "document.getElementById('${key}d$not').style"; <% $element %>.display = "none"; <% $element %>.zIndex = 0; @@ -90,7 +103,6 @@ Example: //<% $opt{'onchange'} %> } - //alert('end function define'); % } % unless ( grep $opt{$_}, qw(html_only js_only select_only layers_only) ) { </SCRIPT> @@ -124,10 +136,16 @@ Example: % % unless ( grep $opt{$_}, qw(js_only select_only) ) { -% foreach my $layer ( keys %$options ) { +% foreach my $layer ( @layers ) { +% my $selected_layer; +% if ( $opt{layermap} ) { +% $selected_layer = $opt{layermap}->{$selected}; +% } else { +% $selected_layer = $selected; +% } <DIV ID="<% $key %>d<% $layer %>" - STYLE="<% $layer eq $selected + STYLE="<% $selected_layer eq $layer ? 'display: "" ; z-index: 1' : 'display: none; z-index: 0' %>" @@ -162,6 +180,14 @@ tie my %options, 'Tie::IxHash', my $between = exists($opt{html_between}) ? $opt{html_between} : ''; my $options = \%options; +my @layers = (); +if ( $opt{layermap} ) { + my %layers = map { $opt{layermap}->{$_} => 1 } keys %options; + @layers = keys %layers; +} else { + @layers = keys %options; +} + my $selected = exists($opt{curr_value}) ? $opt{curr_value} : ''; #XXX eek. also eek $layer_fields in the layer_callback() call... |