diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php index c0f3a1bf971c66766c3a1f854bc1cf492dd1dea0..5f852956dd1f570195bf3efb7f6d480df7ace91d 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 4a84530660188770bbf136d41b6132994ab47482..36f075bc15c125cbb4ab2332ab9a7f1e340c8e80 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'),