diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2012-09-10 23:10:34 -0700 | 
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2012-09-10 23:10:34 -0700 | 
| commit | a064b639a194efff1cf554e821777b80f3399ec3 (patch) | |
| tree | 3244ade85b340e09f5d660c7876d3eaa029448d3 /httemplate | |
| parent | 86bc5cdcde76e575550da249beeb33a4069fcca4 (diff) | |
still prevent inadvertantly losing disabled package/service defs, package classes, but now without incurring the perf overhead of showing all disabled items in config selections
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/config/config.cgi | 1 | ||||
| -rw-r--r-- | httemplate/elements/select-table.html | 33 | 
2 files changed, 19 insertions, 15 deletions
diff --git a/httemplate/config/config.cgi b/httemplate/config/config.cgi index a4f9890a5..7960d7e38 100644 --- a/httemplate/config/config.cgi +++ b/httemplate/config/config.cgi @@ -304,7 +304,6 @@ Setting <b><% $key %></b>  %  %     my %opt = ( 'element_name' => "$key$n",  %                 'empty_label'  => ' ', -%                 'showdisabled' => 1,  %               );  %     if ( $config_item->multiple ) {  %       $opt{'multiple'} = 1 if $config_item->multiple; 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} } : ();  | 
