diff options
Diffstat (limited to 'httemplate/elements/selectlayers.html')
-rw-r--r-- | httemplate/elements/selectlayers.html | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/httemplate/elements/selectlayers.html b/httemplate/elements/selectlayers.html deleted file mode 100644 index 89fe41b1b..000000000 --- a/httemplate/elements/selectlayers.html +++ /dev/null @@ -1,242 +0,0 @@ -<%doc> - -Example: - - include( '/elements/selectlayers.html', - 'field' => $key, # SELECT element NAME (passed as form field) - # also used as ID and a unique key for layers and - # functions - 'curr_value' => $selected_layer, - 'options' => [ 'option1', 'option2' ], - 'labels' => { 'option1' => 'Option 1 Label', - 'option2' => 'Option 2 Label', - }, - - #XXX put this handling it its own selectlayers-fields.html element? - 'layer_prefix' => 'prefix_', #optional prefix for fieldnames - 'layer_fields' => { 'layer' => [ 'fieldname', - { label => 'fieldname2', - type => 'text', #implemented: - # text, money, fixed, - # hidden, checkbox, - # checkbox-multiple, - # select, select-agent, - # select-pkg_class, - # select-part_referral, - # select-taxclass, - # select-table, - #XXX tbd: - # more? - }, - ... - ], - 'layer2' => [ 'l2fieldname', - ... - ], - }, - - #current values for layer fields above - 'layer_values' => { 'layer' => { 'fieldname' => 'current_value', - 'fieldname2' => 'field2value', - ... - }, - 'layer2' => { 'l2fieldname' => 'l2value', - ... - }, - ... - }, - - #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 <SELECT> HTML - 'layers_only' => 0, #set true to return only the layers <DIV> HTML - ) - -</%doc> -% unless ( grep $opt{$_}, qw(html_only js_only select_only layers_only) ) { - <SCRIPT TYPE="text/javascript"> -% } -% unless ( grep $opt{$_}, qw(html_only select_only layers_only) ) { - -% 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 ( @layers ) { -% -% if ( $opt{layermap} ) { - if ( layermap[ <% $key %>layer ] == "<% $layer %>" ) { -% } else { - if (<% $key %>layer == "<% $layer %>" ) { -% } - -% foreach my $not ( grep { $_ ne $layer } @layers ) { -% my $element = "document.getElementById('${key}d$not').style"; - <% $element %>.display = "none"; - <% $element %>.zIndex = 0; -% } - -% my $element = "document.getElementById('${key}d$layer').style"; - <% $element %>.display = ""; - <% $element %>.zIndex = 1; - - } -% } - - //<% $opt{'onchange'} %> - - } -% } -% unless ( grep $opt{$_}, qw(html_only js_only select_only layers_only) ) { - </SCRIPT> -% } -% -% unless ( grep $opt{$_}, qw(js_only layers_only) ) { - - <SELECT NAME = "<% $key %>" - ID = "<% $key %>" - previousValue = "<% $selected %>" - previousText = "<% $options{$selected} %>" - onChange="<% $key %>changed(this);" - > - -% foreach my $option ( keys %$options ) { - - <OPTION VALUE="<% $option %>" - <% $option eq $selected ? ' SELECTED' : '' %> - ><% $options->{$option} %></OPTION> - -% } - - </SELECT> - -% } -% unless ( grep $opt{$_}, qw(js_only select_only layers_only) ) { - -<% ref($between) ? &{$between}($key) : $between %> - -% } -% -% 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; -% } - - <DIV ID="<% $key %>d<% $layer %>" - STYLE="<% $selected_layer eq $layer - ? 'display: "" ; z-index: 1' - : 'display: none; z-index: 0' - %>" - > - - <% &{$layer_callback}($layer, $layer_fields, $layer_values, $layer_prefix) %> - - </DIV> - -% } - -% } -<%once> - -my $conf = new FS::Conf; -my $money_char = $conf->config('money_char') || '$'; - -</%once> -<%init> - -my %opt = @_; - -#use Data::Dumper; -#warn Dumper(%opt); - -my $key = $opt{field}; # || 'generate_one' #? - -tie my %options, 'Tie::IxHash', - map { $_ => $opt{'labels'}->{$_} } - @{ $opt{'options'} }; #just arrayref for now - -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... -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 ) = @_; - - return '' unless $layer && exists $layer_fields->{$layer}; - tie my %fields, 'Tie::IxHash', @{ $layer_fields->{$layer} }; - - #XXX this should become an element itself... (false laziness w/edit.html) - # but at least all the elements inside are the shared mason elements now - - return '' unless keys %fields; - my $html = "<TABLE>"; - - foreach my $field ( keys %fields ) { - - my $lf = ref($fields{$field}) - ? $fields{$field} - : { 'label'=>$fields{$field} }; - - my $value = $layer_values->{$layer}{$field}; - - my $type = $lf->{type} || 'text'; - - my $include = $type; - $include = "input-$include" if $include =~ /^(text|money)$/; - $include = "tr-$include" unless $include eq 'hidden'; - - $html .= include( "/elements/$include.html", - %$lf, - 'field' => "$layer_prefix$field", - 'id' => "$layer_prefix$field", #separate? - #don't want field0_label0...? - 'label_id' => $layer_prefix.$field."_label", - - 'value' => ( $lf->{'value'} || $value ), #hmm. - 'curr_value' => $value, - ); - - } - $html .= '</TABLE>'; - return $html; -} - -</%init> |