diff options
Diffstat (limited to 'httemplate/elements')
| -rw-r--r-- | httemplate/elements/select-table.html | 33 | 
1 files changed, 19 insertions, 14 deletions
diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html index 127028ee5..c0cd7a50b 100644 --- a/httemplate/elements/select-table.html +++ b/httemplate/elements/select-table.html @@ -181,24 +181,29 @@ if ( $opt{'records'} ) {    });  } -unless (    $value < 1 # !$value #ignore negatives too -         or ref($value) +if ( ref( $value ) eq 'ARRAY' ) { +  $value = { map { $_ => 1 } @$value }; +} + +unless (    !ref($value) && $value < 1 # !$value #ignore negatives too           or ! exists( $opt{hashref}->{disabled} ) #?? -         or grep { $value == $_->$key() } @records +         #or grep { $value == $_->$key() } @records         ) {    delete $opt{hashref}->{disabled}; -  $opt{hashref}->{$key} = $value; -  my $record = qsearchs( { -    'table'     => $opt{table}, -    'addl_from' => $opt{'addl_from'}, -    'hashref'   => $hashref, -    'extra_sql' => $extra_sql, -  }); -  push @records, $record if $record; -} -if ( ref( $value ) eq 'ARRAY' ) { -  $value = { map { $_ => 1 } @$value }; +  foreach my $v ( ref($value) ? keys %$value : ($value) ) { +    next if grep { $v == $_->$key() } @records; + +    $opt{hashref}->{$key} = $v; +    my $record = qsearchs( { +      'table'     => $opt{table}, +      'addl_from' => $opt{'addl_from'}, +      'hashref'   => $hashref, +      'extra_sql' => $extra_sql, +    }); +    push @records, $record if $record; + +  }  }  my @pre_options  = $opt{pre_options}  ? @{ $opt{pre_options} } : ();  | 
