summaryrefslogtreecommitdiff
path: root/httemplate/elements/selectlayers.html
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/elements/selectlayers.html')
-rw-r--r--httemplate/elements/selectlayers.html242
1 files changed, 0 insertions, 242 deletions
diff --git a/httemplate/elements/selectlayers.html b/httemplate/elements/selectlayers.html
deleted file mode 100644
index 89fe41b..0000000
--- 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>