From b5bca9b88a761af9780b55caf2f2c72fe17e0dd9 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Sun, 1 Jan 2017 16:57:08 -0600
Subject: [PATCH] queue: Fix search by status name

The ticket status search field was supposed to mimic a text field rather
than a drop-down field like the status selection.

Also, since select "TicketStatus / State" from the drop-down list doesn't
work, remove items from the drop-down in the advanced search dialog and
queue management page which would duplicate fields already available or
selected in the list of fields already displayed.
---
 include/class.list.php                                    | 2 +-
 include/staff/templates/advanced-search-criteria.tmpl.php | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/include/class.list.php b/include/class.list.php
index 13c9bf817..f10963a8f 100644
--- a/include/class.list.php
+++ b/include/class.list.php
@@ -1279,7 +1279,7 @@ implements CustomListItem, TemplateVariable, Searchable {
             'state' => new TicketStateChoiceField(array(
                 'label' => __('State'),
             )),
-            'name' => new TicketStatusChoiceField(array(
+            'name' => new TextBoxField(array(
                 'label' => __('Status Name'),
             )),
         );
diff --git a/include/staff/templates/advanced-search-criteria.tmpl.php b/include/staff/templates/advanced-search-criteria.tmpl.php
index 88060a600..136c7d139 100644
--- a/include/staff/templates/advanced-search-criteria.tmpl.php
+++ b/include/staff/templates/advanced-search-criteria.tmpl.php
@@ -9,9 +9,11 @@ foreach (array_keys($info) as $F) {
 }
 $has_errors = !!$form->errors();
 $inbody = false;
+$already_listed = [];
 $first_field = true;
 foreach ($form->getFields() as $name=>$field) {
     @list($name, $sub) = explode('+', $field->get('name'), 2);
+    $already_listed[$name] = 1;
     if ($sub === 'search') {
         if (!$first_field) {
             echo '</div></div>';
@@ -76,6 +78,9 @@ if (!$first_field)
 <?php
 if (is_array($matches)) {
 foreach ($matches as $path => $F) {
+    # Skip fields already listed above the drop-down
+    if (isset($already_listed[$path]))
+        continue;
     list($label, $field) = $F; ?>
     <option value="<?php echo $path; ?>" <?php
         if (isset($state[$path])) echo 'disabled="disabled"';
-- 
GitLab