);
my @available_modules = qw(
+ SL::Controller::TopQuickSearch::Article
+ SL::Controller::TopQuickSearch::Part
+ SL::Controller::TopQuickSearch::Service
SL::Controller::TopQuickSearch::Assembly
SL::Controller::TopQuickSearch::Contact
SL::Controller::TopQuickSearch::GLTransaction
--- /dev/null
+package SL::Controller::TopQuickSearch::Article;
+
+use strict;
+use parent qw(Rose::Object);
+
+use SL::Locale::String qw(t8);
+use SL::DB::Part;
+use SL::Controller::Helper::GetModels;
+use SL::Controller::Base;
+
+use Rose::Object::MakeMethods::Generic (
+ 'scalar --get_set_init' => [ qw(parts models part) ],
+);
+
+sub auth { 'part_service_assembly_edit' }
+
+sub name { 'article' }
+
+sub description_config { t8('Article') }
+
+sub description_field { t8('Article') }
+
+sub query_autocomplete {
+ my ($self) = @_;
+
+ my $objects = $self->models->get;
+
+ [
+ map {
+ value => $_->displayable_name,
+ label => $_->displayable_name,
+ id => $_->id,
+ }, @$objects
+ ];
+}
+
+sub select_autocomplete {
+ redirect_to_part($::form->{id});
+}
+
+sub do_search {
+ my ($self) = @_;
+
+ my $objects = $self->models->get;
+
+ return !@$objects ? ()
+ : @$objects == 1 ? redirect_to_part($objects->[0]->id)
+ : redirect_to_search($::form->{term});
+}
+
+sub redirect_to_search {
+ SL::Controller::Base->new->url_for(
+ controller => 'ic.pl',
+ action => 'generate_report',
+ searchitems => 'assembly',
+ all => $_[0],
+ );
+}
+
+sub redirect_to_part {
+ SL::Controller::Base->new->url_for(
+ controller => 'ic.pl',
+ action => 'edit',
+ id => $_[0],
+ );
+}
+
+sub type {
+ ()
+}
+
+sub init_models {
+ my ($self) = @_;
+
+ SL::Controller::Helper::GetModels->new(
+ controller => $self,
+ model => 'Part',
+ source => {
+ filter => {
+ ($self->type),
+ 'all:substr:multi::ilike' => $::form->{term},
+ },
+ },
+ sorted => {
+ _default => {
+ by => 'partnumber',
+ dir => 1,
+ },
+ partnumber => t8('Partnumber'),
+ },
+ paginated => {
+ per_page => 10,
+ },
+ )
+}
+
+1;
package SL::Controller::TopQuickSearch::Assembly;
use strict;
-use parent qw(Rose::Object);
+use parent qw(SL::Controller::TopQuickSearch::Article);
use SL::Locale::String qw(t8);
-use SL::DB::Part;
-use SL::Controller::Helper::GetModels;
-use SL::Controller::Base;
-
-use Rose::Object::MakeMethods::Generic (
- 'scalar --get_set_init' => [ qw(parts models part) ],
-);
-
-sub auth { 'part_service_assembly_edit' }
sub name { 'assembly' }
sub description_field { t8('Assemblies') }
-sub query_autocomplete {
- my ($self) = @_;
-
- my $objects = $self->models->get;
-
- [
- map {
- value => $_->displayable_name,
- label => $_->displayable_name,
- id => $_->id,
- }, @$objects
- ];
-}
-
-sub select_autocomplete {
- redirect_to_part($::form->{id});
-}
-
-sub do_search {
- my ($self) = @_;
-
- my $objects = $self->models->get;
-
- return !@$objects ? ()
- : @$objects == 1 ? redirect_to_part($objects->[0]->id)
- : redirect_to_search($::form->{term});
-}
-
-sub redirect_to_search {
- SL::Controller::Base->new->url_for(
- controller => 'ic.pl',
- action => 'generate_report',
- searchitems => 'assembly',
- all => $_[0],
- );
-}
-
-sub redirect_to_part {
- SL::Controller::Base->new->url_for(
- controller => 'ic.pl',
- action => 'edit',
- id => $_[0],
- );
-}
-
-sub init_models {
- my ($self) = @_;
-
- SL::Controller::Helper::GetModels->new(
- controller => $self,
- model => 'Part',
- source => {
- filter => {
- type => 'assembly',
- 'all:substr:multi::ilike' => $::form->{term},
- },
- },
- sorted => {
- _default => {
- by => 'partnumber',
- dir => 1,
- },
- partnumber => t8('Partnumber'),
- },
- paginated => {
- per_page => 10,
- },
- )
-}
+sub type { type => 'assembly' }
1;
--- /dev/null
+package SL::Controller::TopQuickSearch::Part;
+
+use strict;
+use parent qw(SL::Controller::TopQuickSearch::Article);
+
+use SL::Locale::String qw(t8);
+
+sub name { 'part' }
+
+sub description_config { t8('Parts') }
+
+sub description_field { t8('Parts') }
+
+sub type { type => 'part' }
+
+1;
--- /dev/null
+package SL::Controller::TopQuickSearch::Service;
+
+use strict;
+use parent qw(SL::Controller::TopQuickSearch::Article);
+
+use SL::Locale::String qw(t8);
+
+sub name { 'service' }
+
+sub description_config { t8('Services') }
+
+sub description_field { t8('Services') }
+
+sub type { type => 'service' }
+
+1;