Revision 954eb9c0
Von Bernd Bleßmann vor etwa 4 Jahren hinzugefügt
SL/Controller/Project.pm | ||
---|---|---|
|
||
# if someone types something, and hits enter, assume he entered the full name.
|
||
# if something matches, treat that as the sole match
|
||
# unfortunately get_models can't do more than one per package atm, so we do it
|
||
# the oldfashioned way.
|
||
# since we need a second get models instance with different filters for that,
|
||
# we only modify the original filter temporarily in place
|
||
if ($::form->{prefer_exact}) {
|
||
local $::form->{filter}{'all::ilike'} = delete local $::form->{filter}{'all:substr:multi::ilike'};
|
||
# active and valid filters are use as they are
|
||
|
||
my $exact_models = SL::Controller::Helper::GetModels->new(
|
||
controller => $self,
|
||
sorted => 0,
|
||
paginated => { per_page => 2 },
|
||
with_objects => [ 'customer', 'project_status', 'project_type' ],
|
||
);
|
||
my $exact_matches;
|
||
if (1 == scalar @{ $exact_matches = SL::DB::Manager::Project->get_all(
|
||
query => [
|
||
valid => 1,
|
||
or => [
|
||
description => { ilike => $::form->{filter}{'all:substr:multi::ilike'} },
|
||
projectnumber => { ilike => $::form->{filter}{'all:substr:multi::ilike'} },
|
||
]
|
||
],
|
||
limit => 2,
|
||
) }) {
|
||
$self->projects($exact_matches);
|
||
if (1 == scalar @{ $exact_matches = $exact_models->get }) {
|
||
$self->project($exact_matches);
|
||
}
|
||
}
|
||
|
Auch abrufbar als: Unified diff
Projekt-Picker: exact match auf GetModels umgestellt