excel number format fix, #17971
[freeside.git] / httemplate / elements / select-table.html
index 3e25c9f..127028e 100644 (file)
@@ -29,6 +29,9 @@ Example:
     #or
     'records'        => \@records, #instead of search params
 
+    #instead of the primary key... only for special cases
+    'value_col'      => 'columnname',
+
     #basic params controlling the resulting <SELECT>
     'pre_options'    => [ 'value' => 'option' ], #before normal options
     'post_options'   => [ 'value' => 'option' ], #after normal options
@@ -90,10 +93,17 @@ Example:
 %                    )
 % {
 %   my $recvalue = $record->$key();
+%   my $selected;
+%   if ( $opt{'all_selected'} ) {
+%     $selected = 1;
+%   } elsif ( $opt{'compare_sub'} && !ref($value) ) {
+%     $selected = &{ $opt{'compare_sub'} }( $value, $recvalue );
+%   } else {
+%     $selected =    ( ref($value) && $value->{$recvalue} )
+%                 || ( $value && $value eq $recvalue ); #not == because of value_col
+%   }
     <OPTION VALUE="<% $recvalue %>"
-            <% $opt{'all_selected'} || ref($value) && $value->{$recvalue} || $value == $recvalue
-               ? ' SELECTED' : ''
-            %>
+            <% $selected ? ' SELECTED' : '' %>
 %           foreach my $att ( @{ $opt{'extra_option_attributes'} } ) {
               data-<% $att %>="<% $record->$att() |h %>"
 %           }
@@ -121,7 +131,7 @@ Example:
 
 my( %opt ) = @_;
 
-warn "elements/select-table.html: \n". Dumper(%opt)
+warn "elements/select-table.html: \n". Dumper(\%opt)
   if exists $opt{debug} && $opt{debug};
 
 $opt{'extra_option_attributes'} ||= [];
@@ -138,7 +148,7 @@ if ( $opt{'onchange'} ) {
 my $dbdef_table = dbdef->table($opt{'table'})
   or die "can't find dbdef for ". $opt{'table'}. " table\n";
 
-my $key = $dbdef_table->primary_key; #? $opt{'primary_key'} ||
+my $key = $opt{'value_col'} || $dbdef_table->primary_key;
 
 my $name_col = $opt{'name_col'};