Skip to content
Snippets Groups Projects
Commit 7e4c1723 authored by Peter Rotich's avatar Peter Rotich
Browse files

Filter tickets assignees

Filter assignees based on selected tickets department setting.
parent 06e42514
Branches
Tags
No related merge requests found
...@@ -523,7 +523,7 @@ class TicketsAjaxAPI extends AjaxController { ...@@ -523,7 +523,7 @@ class TicketsAjaxAPI extends AjaxController {
} }
function massProcess($action, $w=null) { function massProcess($action, $w=null) {
global $thisstaff; global $thisstaff, $cfg;
$actions = array( $actions = array(
'transfer' => array( 'transfer' => array(
...@@ -566,7 +566,7 @@ class TicketsAjaxAPI extends AjaxController { ...@@ -566,7 +566,7 @@ class TicketsAjaxAPI extends AjaxController {
$w = 'me'; $w = 'me';
case 'assign': case 'assign':
$inc = 'assign.tmpl.php'; $inc = 'assign.tmpl.php';
$info[':action'] = '#tickets/mass/assign'; $info[':action'] = "#tickets/mass/assign/$w";
$info[':title'] = sprintf('Assign %s', $info[':title'] = sprintf('Assign %s',
_N('selected ticket', 'selected tickets', $count)); _N('selected ticket', 'selected tickets', $count));
...@@ -579,10 +579,49 @@ class TicketsAjaxAPI extends AjaxController { ...@@ -579,10 +579,49 @@ class TicketsAjaxAPI extends AjaxController {
$assignees = null; $assignees = null;
switch ($w) { switch ($w) {
case 'agents': case 'agents':
$depts = array();
$tids = $_POST['tids'] ?: array_filter(explode(',', $_REQUEST['tids']));
if ($tids) {
$tickets = TicketModel::objects()
->distinct('dept_id')
->filter(array('ticket_id__in' => $tids));
$depts = $tickets->values_flat('dept_id');
}
$members = Staff::objects()
->distinct('staff_id')
->filter(array(
'onvacation' => 0,
'isactive' => 1,
)
);
if ($depts) {
$members->filter(Q::any( array(
'dept_id__in' => $depts,
Q::all(array(
'dept_access__dept__id__in' => $depts,
Q::not(array('dept_access__dept__flags__hasbit'
=> Dept::FLAG_ASSIGN_MEMBERS_ONLY))
))
)));
}
switch ($cfg->getAgentNameFormat()) {
case 'last':
case 'lastfirst':
case 'legal':
$members->order_by('lastname', 'firstname');
break;
default:
$members->order_by('firstname', 'lastname');
}
$prompt = __('Select an Agent'); $prompt = __('Select an Agent');
$assignees = array(); $assignees = array();
foreach (Staff::getAvailableStaffMembers() as $id => $name) foreach ($members as $member)
$assignees['s'.$id] = $name; $assignees['s'.$member->getId()] = $member->getName();
if (!$assignees) if (!$assignees)
$info['warn'] = __('No agents available for assignment'); $info['warn'] = __('No agents available for assignment');
......
...@@ -56,15 +56,22 @@ if ($agent->hasPerm(Ticket::PERM_DELETE, false)) {?> ...@@ -56,15 +56,22 @@ if ($agent->hasPerm(Ticket::PERM_DELETE, false)) {?>
?> ?>
<script type="text/javascript"> <script type="text/javascript">
$(function() { $(function() {
$(document).off('.tickets-actions');
$(document).on('click.tickets-actions', 'a.tickets-action', function(e) { $(document).off('.tickets');
$(document).on('click.tickets', 'a.tickets-action', function(e) {
e.preventDefault(); e.preventDefault();
var count = checkbox_checker($('form#tickets'), 1); var $form = $('form#tickets');
var count = checkbox_checker($form, 1);
if (count) { if (count) {
var tids = $('.ckb:checked', $form).map(function() {
return this.value;
}).get();
var url = 'ajax.php/' var url = 'ajax.php/'
+$(this).attr('href').substr(1) +$(this).attr('href').substr(1)
+'?count='+count +'?count='+count
+'&tids='+tids.join(',')
+'&_uid='+new Date().getTime(); +'&_uid='+new Date().getTime();
console.log(tids);
$.dialog(url, [201], function (xhr) { $.dialog(url, [201], function (xhr) {
$.pjax.reload('#pjax-container'); $.pjax.reload('#pjax-container');
}); });
......
...@@ -586,21 +586,6 @@ return false;"> ...@@ -586,21 +586,6 @@ return false;">
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(function() { $(function() {
$(document).off('.tickets');
$(document).on('click.tickets', 'a.tickets-action', function(e) {
e.preventDefault();
var count = checkbox_checker($('form#tickets'), 1);
if (count) {
var url = 'ajax.php/'
+$(this).attr('href').substr(1)
+'?count='+count
+'&_uid='+new Date().getTime();
$.dialog(url, [201], function (xhr) {
$.pjax({url: 'tickets.php', container: '#pjax-container'});
});
}
return false;
});
$('[data-toggle=tooltip]').tooltip(); $('[data-toggle=tooltip]').tooltip();
}); });
</script> </script>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment