Skip to content

Commit

Permalink
Issue #2298: Consider the TicketType
Browse files Browse the repository at this point in the history
when autocompleting tickets
  • Loading branch information
bschmalhofer committed Jul 19, 2023
1 parent d7d6129 commit 0ea8cd6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 17 deletions.
27 changes: 14 additions & 13 deletions Kernel/Modules/AgentReferenceSearch.pm
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,7 @@ sub Run {
if (
!$Field
||
(
$Field !~ m{ \A Autocomplete_DynamicField_ (.*) \z }xms
&& $Field !~ m{ \A Search_DynamicField_ (.*) \z }xms
)
$Field !~ m{ \A (?: Autocomplete | Search ) _DynamicField_ (.*) \z }xms
)
{
return $LayoutObject->JSONReply(
Expand All @@ -71,16 +68,19 @@ sub Run {
);
}
else {
$DFName = $1; # remove either the prefix Autocomplete_DynamicField_ or the prefix Search_DynamicField_
$DFName = $1; # remove either the prefix 'Autocomplete_DynamicField_' or the prefix 'Search_DynamicField_'
}

# Get config for the dynamic field and check the sanity.
my $DynamicField = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet(
my $DynamicFieldConfig = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet(
Name => $DFName,
);

# check the dynamic field
if ( !IsHashRefWithData($DynamicField) || $DynamicField->{FieldType} ne 'Reference' ) {
if (
!IsHashRefWithData($DynamicFieldConfig)
||
$DynamicFieldConfig->{FieldType} ne 'Reference'
)
{
return $LayoutObject->JSONReply(
Data => {
Success => 0,
Expand All @@ -91,7 +91,7 @@ sub Run {

# search referenced object
my $MainObject = $Kernel::OM->Get('Kernel::System::Main');
my $ObjectType = $DynamicField->{Config}->{ReferencedObjectType};
my $ObjectType = $DynamicFieldConfig->{Config}->{ReferencedObjectType};
my $PluginModule = join '::', 'Kernel::System::DynamicField::Driver::Reference', $ObjectType;

if ( !$MainObject->Require($PluginModule) ) {
Expand Down Expand Up @@ -119,9 +119,10 @@ sub Run {
my $Term = $ParamObject->GetParam( Param => 'Term' ) || '';

my @ObjectIDs = $PluginObject->SearchObjects(
Term => $Term,
MaxResults => $MaxResults,
UserID => 1, # TODO: what about Permission check
DynamicFieldConfig => $DynamicFieldConfig, # this might contain search restrictions
Term => $Term,
MaxResults => $MaxResults,
UserID => 1, # TODO: what about Permission check
);

my @Results;
Expand Down
27 changes: 23 additions & 4 deletions Kernel/System/DynamicField/Driver/Reference/Ticket.pm
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,17 @@ our @ObjectDependencies = (

=head1 NAME
Kernel::System::DynamicField::Driver::Reference::Ticket - backend for the Reference dynamic field
Kernel::System::DynamicField::Driver::Reference::Ticket - plugin module for the Reference dynamic field
=head1 DESCRIPTION
Ticket backend for the Reference dynamic field.
Ticket plugin for the Reference dynamic field.
=head1 PUBLIC INTERFACE
=head2 GetFieldTypeSettings()
Get field type settings that are specific to the specific referenced object type.
Get field type settings that are specific to the referenced object type Ticket.
=cut

Expand Down Expand Up @@ -166,18 +166,37 @@ sub ObjectDescriptionGet {
This is used in auto completion when searching for possible object IDs.
my @ObjectIDs = $PluginObject->SearchObjects(
DynamicFieldConfig => $DynamicFieldConfig,
Term => $Term,
MaxResults => $MaxResults,
UserID => 1,
);
=cut

sub SearchObjects {
my ( $Self, %Param ) = @_;

my $DynamicFieldConfig = $Param{DynamicFieldConfig};

# Support restriction by ticket type when the Ticket::Type feature is activated.
my %SearchParams;
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
if ( $ConfigObject->Get('Ticket::Type') ) {
if ( $DynamicFieldConfig->{Config}->{TicketType} ) {
$SearchParams{TypeIDs} = [ $DynamicFieldConfig->{Config}->{TicketType} ];
}
}

my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');

return $TicketObject->TicketSearch(
Limit => $Param{MaxResults},
Result => 'ARRAY',
Title => "%$Param{Term}%",
UserID => $Param{UserID},
%SearchParams,
Title => "%$Param{Term}%",
);
}

Expand Down

0 comments on commit 0ea8cd6

Please sign in to comment.