X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FTopQuickSearch.pm;h=c3ad7f37abcc898b32630d244ba64230b82c0045;hb=a158b731b52535db7540b3bb54c0c7d7557fbc0f;hp=63d9b5b8b7a64492a697ae97e88cf9c7368b9247;hpb=6c63020409f486043d63c3a324db96a4a162ff67;p=kivitendo-erp.git diff --git a/SL/Controller/TopQuickSearch.pm b/SL/Controller/TopQuickSearch.pm index 63d9b5b8b..c3ad7f37a 100644 --- a/SL/Controller/TopQuickSearch.pm +++ b/SL/Controller/TopQuickSearch.pm @@ -11,10 +11,20 @@ use Rose::Object::MakeMethods::Generic ( 'scalar --get_set_init' => [ qw(module js) ], ); -my @available_modules = qw( - SL::Controller::TopQuickSearch::Assembly - SL::Controller::TopQuickSearch::Contact - SL::Controller::TopQuickSearch::GLTransaction +my @available_modules = ( + 'SL::Controller::TopQuickSearch::Article', + '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::RequestForQuotation', + 'SL::Controller::TopQuickSearch::PurchaseOrder', + 'SL::Controller::TopQuickSearch::GLTransaction', + 'SL::Controller::TopQuickSearch::Customer', + 'SL::Controller::TopQuickSearch::Vendor', ); my %modules_by_name; @@ -54,10 +64,20 @@ sub available_modules { map { $_->new } @available_modules; } +sub enabled_modules { + my %enabled_names = map { + $_ => 1 + } @{ $::instance_conf->get_quick_search_modules }; + + grep { + $enabled_names{$_->name} + } $_[0]->available_modules +} + sub active_modules { grep { $::auth->assert($_->auth, 1) - } $_[0]->available_modules + } $_[0]->enabled_modules } sub init_module { @@ -65,13 +85,9 @@ sub init_module { $self->require_modules; - die t8('Need module') unless $::form->{module}; - - $::lxdebug->dump(0, "modules", \%modules_by_name); + die 'Need module' unless $::form->{module}; - die t8('Unknown module #1', $::form->{module}) unless my $class = $modules_by_name{$::form->{module}}; - - $::lxdebug->dump(0, "auth:", $class->auth); + die 'Unknown module ' . $::form->{module} unless my $class = $modules_by_name{$::form->{module}}; $::auth->assert($class->auth); @@ -106,21 +122,22 @@ SL::Controller::TopQuickSearch - Framework for pluggable quicksearch fields in t =head1 SYNOPSIS -use SL::Controller::TopQuickSearch; -my $search = SL::Controller::TopQuickSearch->new; + use SL::Controller::TopQuickSearch; + my $search = SL::Controller::TopQuickSearch->new; + $::request->layout->add_javascripts('kivi.QuickSearch.js'); -# in layout -[%- FOREACH module = search.available_modules %] - -[%- END %] + # in template + [%- FOREACH module = search.enabled_modules %] + + [%- END %] =head1 DESCRIPTION This controller provides abstraction for different search plugins, and ensures that all follow a common useability scheme. -Modules should be configurable, but currently are not. Diabling modules can be -done by removing them from available_modules. +Modules should be configurable per user, but currently are not. Disabling +modules can be done by removing them from available_modules or in client_config. =head1 BEHAVIOUR REQUIREMENTS @@ -158,26 +175,19 @@ redirect should occur. Each search must check rights and must not present a backdoor into data that the user should not see. -=back +=item * -=head1 INTERFACE +By design the search must not try to guess C. -Plugins need to provide: +=back - - name - - localized description for config - - localized description for textfield - - autocomplete callback - - redirect callback +=head1 INTERFACE -the frontend will only generate urls of the forms: - action=TopQuickSearch/autocomplete&module=&term= - action=TopQuickSearch/search&module=&term= +The full interface is described in L =head1 TODO - - filter available searches with auth - - toggling with cofiguration doesn't work yet + * user configuration =head1 BUGS