X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Felements%2Fselectlayers.html;h=89fe41b1b15664c42627778cd1c91678a9ed3a6a;hb=b431ece7b4a71aa5771f44393da582692f668817;hp=4496892ffc6f274ef4d81fcb0f2400c28a45ab6f;hpb=5e05724a635a22776f1b973f5d7e77989da4e048;p=freeside.git diff --git a/httemplate/elements/selectlayers.html b/httemplate/elements/selectlayers.html index 4496892ff..89fe41b1b 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', @@ -44,31 +46,48 @@ Example: ... }, + #or manual control, instead of layer_fields and layer_values above + #called with args: my( $layer, $layer_fields, $layer_values, $layer_prefix ) + 'layer_callback' => + 'html_between => '', #optional HTML displayed between the SELECT and the #layers, scalar or coderef ('field' passed as a param) 'onchange' => '', #javascript code run when the SELECT changes # ("what" is the element) 'js_only' => 0, #set true to return only the JS portions 'html_only' => 0, #set true to return only the HTML portions + 'select_only' => 0, #set true to return only the +% } +% unless ( grep $opt{$_}, qw(js_only select_only layers_only) ) { + <% ref($between) ? &{$between}($key) : $between %> -% foreach my $layer ( keys %$options ) { +% } +% +% unless ( grep $opt{$_}, qw(js_only select_only) ) { + +% foreach my $layer ( @layers ) { +% my $selected_layer; +% if ( $opt{layermap} ) { +% $selected_layer = $opt{layermap}->{$selected}; +% } else { +% $selected_layer = $selected; +% }
" > - <% layer_callback($layer, $layer_fields, $layer_values, $layer_prefix) %> + <% &{$layer_callback}($layer, $layer_fields, $layer_values, $layer_prefix) %>
@@ -149,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... @@ -156,6 +195,8 @@ my $layer_fields = $opt{layer_fields}; my $layer_values = $opt{layer_values}; my $layer_prefix = $opt{layer_prefix}; +my $layer_callback = $opt{layer_callback} || \&layer_callback; + sub layer_callback { my( $layer, $layer_fields, $layer_values, $layer_prefix ) = @_;