[Rt-commit] rt branch, queue-like-search, created. rt-4.2.9-1-g4016c4c

Dave Goehrig dave at bestpractical.com
Wed Dec 14 12:56:16 EST 2016


The branch, queue-like-search has been created
        at  4016c4c40fe70dd8010aa7e3efced4f51b89fd0d (commit)

- Log -----------------------------------------------------------------
commit 4016c4c40fe70dd8010aa7e3efced4f51b89fd0d
Author: Dave Goehrig <dave at bestpractical.com>
Date:   Wed Dec 14 12:13:17 2016 -0500

    Supporting like / not like in queue search

diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index 79d5e15..fda767b 100644
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -104,7 +104,8 @@ __PACKAGE__->RegisterCustomFieldJoin(@$_) for
 
 our %FIELD_METADATA = (
     Status          => [ 'STRING', ], #loc_left_pair
-    Queue           => [ 'ENUM' => 'Queue', ], #loc_left_pair
+#   Queue           => [ 'ENUM' => 'Queue', ], #loc_left_pair
+    Queue           => [ 'QUEUE' ], #loc_left_pair
     Type            => [ 'ENUM', ], #loc_left_pair
     Creator         => [ 'ENUM' => 'User', ], #loc_left_pair
     LastUpdatedBy   => [ 'ENUM' => 'User', ], #loc_left_pair
@@ -183,6 +184,7 @@ our %dispatch = (
     LINK            => \&_LinkLimit,
     DATE            => \&_DateLimit,
     STRING          => \&_StringLimit,
+    QUEUE           => \&_QueueLimit,
     TRANSFIELD      => \&_TransLimit,
     TRANSCONTENT    => \&_TransContentLimit,
     TRANSDATE       => \&_TransDateLimit,
@@ -216,6 +218,12 @@ my %DefaultEA = (
         'LIKE'     => 'AND',
         'NOT LIKE' => 'AND'
     },
+    QUEUE => {
+	'='        => 'OR',
+	'!='       => 'AND',
+	'LIKE'     => 'OR',
+	'NOT LIKE' => 'AND'
+    },
     TRANSFIELD   => 'AND',
     TRANSDATE    => 'AND',
     LINK         => 'OR',
@@ -709,6 +717,50 @@ sub _StringLimit {
     );
 }
 
+=head2 _QueueLimit
+
+Handle Queue field supporting both is and match.
+
+Input should be a queue name or a paritial string.
+
+=cut
+
+sub _QueueLimit {
+    my ($sb, $field, $op, $value, @rest ) = @_;
+    my $alias;
+
+    if ($op eq 'LIKE' || $op eq 'NOT LIKE') {
+        $alias = $sb->Join(
+            TYPE   => 'RIGHT',
+            ALIAS1 => 'main',
+            FIELD1 => 'Queue',
+            TABLE2 => 'Queues',
+            FIELD2 => 'id',
+        );
+
+        return $sb->Limit(
+           LEFTJOIN      => $alias,
+           FIELD         => 'Name',
+           OPERATOR      => $op,
+           VALUE         => $value,
+           CASESENSITIVE => 0,
+           @rest,
+       );
+
+    }
+
+    my $o = RT::Queue->new( $sb->CurrentUser );
+    $o->Load($value);
+    $value = $o->Id || 0;
+    $sb->Limit(
+        FIELD         => $field,
+        OPERATOR      => $op,
+        VALUE         => $value,
+        CASESENSITIVE => 0,
+        @rest,
+    );
+}
+
 =head2 _TransDateLimit
 
 Handle fields limiting based on Transaction Date.
diff --git a/share/html/Search/Elements/PickBasics b/share/html/Search/Elements/PickBasics
index 3adbc8b..006422d 100644
--- a/share/html/Search/Elements/PickBasics
+++ b/share/html/Search/Elements/PickBasics
@@ -83,8 +83,8 @@ my @lines = (
         Field => loc('Queue'),
         Op => {
             Type => 'component',
-            Path => '/Elements/SelectBoolean',
-            Arguments => { TrueVal=> '=', FalseVal => '!=' },
+            Path => '/Elements/SelectMatch',
+#           Arguments => { TrueVal=> '=', FalseVal => '!=' },
         },
         Value => {
             Type => 'component',

-----------------------------------------------------------------------


More information about the rt-commit mailing list