From 729c9689ca56d97ed2711a579d3981ad5b93ba86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=A4rter?= Date: Mon, 24 Jan 2022 15:28:04 +0100 Subject: [PATCH] Issue #1449: Normal search seems to work --- Kernel/Modules/CustomerDynamicFieldDBSearch.pm | 14 +++++++++++++- .../htdocs/js/Core.Agent.DynamicFieldDBSearch.js | 5 +++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Kernel/Modules/CustomerDynamicFieldDBSearch.pm b/Kernel/Modules/CustomerDynamicFieldDBSearch.pm index e04aa288c5..dc3213024d 100644 --- a/Kernel/Modules/CustomerDynamicFieldDBSearch.pm +++ b/Kernel/Modules/CustomerDynamicFieldDBSearch.pm @@ -46,6 +46,9 @@ sub Run { my $TicketID = $ParamObject->GetParam( Param => 'TicketID' ) || ''; my $Search = $ParamObject->GetParam( Param => 'Term' ) || ''; my $Identifier = $ParamObject->GetParam( Param => 'Identifier' ) || ''; + my $ActivityDialogID = $ParamObject->GetParam( Param => 'ActivityDialogID') || ''; + + print STDERR "CustomerDynamicFieldDBSearch.pm, L.51: " . $ActivityDialogID . "\n"; # Put all ticket related data in Param, Owner, Responsible are not selectable in # customer interface, CustomerIserID and CustomerID are fixed. @@ -177,6 +180,15 @@ sub Run { # Get the pure DynamicField name without prefix $DynamicFieldName = substr( $DynamicFieldName, length 'DynamicField_' ); + # In Process Context, ActivityDialogID has to be stripped from DynamicFieldName + my $DynamicFieldNameLong = $DynamicFieldName; + if ( defined $ActivityDialogID && $ActivityDialogID ne '' ) { + $DynamicFieldName = substr( $DynamicFieldName, 0, index( $DynamicFieldName, '_' . $ActivityDialogID ) ); + } + + print STDERR "CustomerDynamicFieldDBSearch.pm, L.189: " . $DynamicFieldNameLong . "\n"; + print STDERR "CustomerDynamicFieldDBSearch.pm, L.190: " . $DynamicFieldName . "\n"; + # get the dynamic field value for the current ticket my $DynamicFieldConfig = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet( Name => $DynamicFieldName, @@ -230,7 +242,7 @@ sub Run { } # result caching - my $CacheKey = $DynamicFieldName . $Search; + my $CacheKey = $DynamicFieldNameLong . $Search; my $CacheTTL = $DynamicFieldConfig->{Config}->{CacheTTL}; my $CacheType = 'DynamicFieldDB'; my $CacheObject = $Kernel::OM->Get('Kernel::System::Cache'); diff --git a/var/httpd/htdocs/js/Core.Agent.DynamicFieldDBSearch.js b/var/httpd/htdocs/js/Core.Agent.DynamicFieldDBSearch.js index d6e04a27c9..9ff7b4ea6c 100644 --- a/var/httpd/htdocs/js/Core.Agent.DynamicFieldDBSearch.js +++ b/var/httpd/htdocs/js/Core.Agent.DynamicFieldDBSearch.js @@ -199,7 +199,7 @@ Core.Agent.DynamicFieldDBSearch = (function(TargetNS) { // TODO Think about case when closest ActivityDialogEntityID element doesn't belong to current DynamicField var ActivityDialogID = ''; var ActivityDialogElem = $('[name="ActivityDialogEntityID"]').closest('input'); - if ( DynamicFieldName.indexOf(ActivityDialogElem.val().substr('ActivityDialog-'.length)) != -1 ) { + if ( ActivityDialogElem.length && DynamicFieldName.indexOf(ActivityDialogElem.val().substr('ActivityDialog-'.length)) != -1 ) { ActivityDialogID = ActivityDialogElem.val().substr('ActivityDialog-'.length); @@ -278,6 +278,8 @@ Core.Agent.DynamicFieldDBSearch = (function(TargetNS) { QueryString += ";ActivityDialogID="+encodeURIComponent(ActivityDialogID); QueryString += ";TicketID="+encodeURIComponent(TicketID); + console.log(QueryString); + URL = Core.Config.Get('Baselink'); // if an old ajax request is already running, stop the old request and start the new one @@ -587,7 +589,6 @@ Core.Agent.DynamicFieldDBSearch = (function(TargetNS) { Action: FrontendInterface, Subaction: 'AJAXGetDynamicFieldConfig', DynamicFieldName: Field, - ActivityDialogID: ActivityDialogID }; Core.AJAX.FunctionCall(URL, Data, function (Response) {