use SL::ClientJS;
 use SL::JSON;
 use SL::Locale::String qw(t8);
+use SL::Helper::UserPreferences;
 
 use Rose::Object::MakeMethods::Generic (
  'scalar --get_set_init' => [ qw(module js) ],
   'SL::Controller::TopQuickSearch::Part',
   'SL::Controller::TopQuickSearch::Service',
   'SL::Controller::TopQuickSearch::Assembly',
+  'SL::Controller::TopQuickSearch::Assortment',
   'SL::Controller::TopQuickSearch::Contact',
+  'SL::Controller::TopQuickSearch::SalesQuotation',
+  'SL::Controller::TopQuickSearch::SalesOrder',
+  'SL::Controller::TopQuickSearch::SalesDeliveryOrder',
+  'SL::Controller::TopQuickSearch::RequestForQuotation',
+  'SL::Controller::TopQuickSearch::PurchaseOrder',
+  'SL::Controller::TopQuickSearch::PurchaseDeliveryOrder',
   'SL::Controller::TopQuickSearch::GLTransaction',
+  'SL::Controller::TopQuickSearch::Customer',
+  'SL::Controller::TopQuickSearch::Vendor',
 );
 my %modules_by_name;
 
 }
 
 sub enabled_modules {
-  my %enabled_names = map {
-    $_ => 1
-  } @{ $::instance_conf->get_quick_search_modules };
+  my $user_prefs = SL::Helper::UserPreferences->new(
+    namespace         => 'TopQuickSearch',
+  );
+
+  my @quick_search_modules;
+  if (my $prefs_val = $user_prefs->get('quick_search_modules')) {
+    @quick_search_modules = split ',', $prefs_val;
+  } else {
+    @quick_search_modules = @{ $::instance_conf->get_quick_search_modules };
+  }
+
+  my %enabled_names = map { $_ => 1 } @quick_search_modules;
 
   grep {
     $enabled_names{$_->name}
 
 sub active_modules {
   grep {
-    $::auth->assert($_->auth, 1)
+    !$_->auth || $::auth->assert($_->auth, 1)
   } $_[0]->enabled_modules
 }
 
 
   die 'Unknown module ' . $::form->{module} unless my $class = $modules_by_name{$::form->{module}};
 
-  $::auth->assert($class->auth);
+  $::auth->assert($class->auth) if $class->auth;
 
   return $class->new;
 }
 =head1 TODO
 
   * user configuration
-  * searches for orders, customers, vendors
 
 =head1 BUGS