still prevent inadvertantly losing disabled package/service defs, package classes...
authorIvan Kohler <ivan@freeside.biz>
Tue, 11 Sep 2012 06:10:31 +0000 (23:10 -0700)
committerIvan Kohler <ivan@freeside.biz>
Tue, 11 Sep 2012 06:10:31 +0000 (23:10 -0700)
httemplate/config/config.cgi
httemplate/elements/select-table.html

index a4f9890..7960d7e 100644 (file)
@@ -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;
index 127028e..c0cd7a5 100644 (file)
@@ -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} } : ();