From 56d900260bab3b5f93024ad5c500891e19324176 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Wed, 3 Dec 2014 12:31:55 -0600 Subject: [PATCH] search: Add sticky queue for advanced search --- include/staff/tickets.inc.php | 5 ++--- scp/tickets.php | 27 +++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php index c0f3a1bf9..5f852956d 100644 --- a/include/staff/tickets.inc.php +++ b/include/staff/tickets.inc.php @@ -31,9 +31,9 @@ case 'answered': $tickets->filter(array('isanswered'=>1)); break; default: - if (isset($_GET['clear_filter'])) - unset($_SESSION['advsearch']); +case 'search': if (isset($_SESSION['advsearch'])) { + // XXX: De-duplicate and simplify this code $form = $search->getFormFromSession('advsearch'); $form->loadState($_SESSION['advsearch']); $tickets = $search->mangleQuerySet($tickets, $form); @@ -75,7 +75,6 @@ $tickets->filter(Q::any($visibility)); // Select pertinent columns // ------------------------------------------------------------ -#$tickets->select_related('lock', 'dept', 'staff', 'user', 'user__default_email', 'topic', 'status', 'cdata', 'cdata__:priority'); $tickets->values('lock__lock_id', 'staff_id', 'isoverdue', 'team_id', 'ticket_id', 'number', 'cdata__subject', 'user__default_email__address', 'source', 'cdata__:priority__priority_color', 'cdata__:priority__priority_desc', 'status__name', 'status__state', 'dept_id', 'dept__dept_name', 'user__name', 'lastupdate'); // Apply requested quick filter diff --git a/scp/tickets.php b/scp/tickets.php index 4a8453066..36f075bc1 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -368,6 +368,10 @@ endif; /*... Quick stats ...*/ $stats= $thisstaff->getTicketsStats(); +// Clear advanced search upon request +if (isset($_GET['clear_filter'])) + unset($_SESSION['advsearch']); + //Navigation $nav->setTabActive('tickets'); $open_name = _P('queue-name', @@ -376,18 +380,18 @@ $open_name = _P('queue-name', if($cfg->showAnsweredTickets()) { $nav->addSubMenu(array('desc'=>$open_name.' ('.number_format($stats['open']+$stats['answered']).')', 'title'=>__('Open Tickets'), - 'href'=>'tickets.php', + 'href'=>'tickets.php?status=open', 'iconclass'=>'Ticket'), - (!$_REQUEST['status'] || $_REQUEST['status']=='open')); + ((!$_REQUEST['status'] && !isset($_SESSION['advsearch'])) || $_REQUEST['status']=='open')); } else { if ($stats) { $nav->addSubMenu(array('desc'=>$open_name.' ('.number_format($stats['open']).')', 'title'=>__('Open Tickets'), - 'href'=>'tickets.php', + 'href'=>'tickets.php?status=open', 'iconclass'=>'Ticket'), - (!$_REQUEST['status'] || $_REQUEST['status']=='open')); + ((!$_REQUEST['status'] && !isset($_SESSION['advsearch'])) || $_REQUEST['status']=='open')); } if($stats['answered']) { @@ -434,6 +438,21 @@ if($thisstaff->showAssignedOnly() && $stats['closed']) { ($_REQUEST['status']=='closed')); } +if (isset($_SESSION['advsearch'])) { + // XXX: De-duplicate and simplify this code + $search = SavedSearch::create(); + $form = $search->getFormFromSession('advsearch'); + $form->loadState($_SESSION['advsearch']); + $tickets = TicketModel::objects(); + $tickets = $search->mangleQuerySet($tickets, $form); + $count = $tickets->count(); + $nav->addSubMenu(array('desc' => __('Search').' ('.number_format($count).')', + 'title'=>__('Advanced Search Query'), + 'href'=>'tickets.php?status=search', + 'iconclass'=>'Ticket'), + (!$_REQUEST['status'] || $_REQUEST['status']=='search')); +} + if($thisstaff->canCreateTickets()) { $nav->addSubMenu(array('desc'=>__('New Ticket'), 'title'=> __('Open a New Ticket'), -- GitLab