diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php index 7d0ee9eb7f5e9c28aa7aa54dea466228946046db..16d0d9ec037629feb59e89646ad6d4cc53fd75c3 100644 --- a/include/ajax.tickets.php +++ b/include/ajax.tickets.php @@ -748,9 +748,14 @@ class TicketsAjaxAPI extends AjaxController { $verb = TicketStateField::getVerb($state); $info['action'] = sprintf('#tickets/%d/status/%s', $ticket->getId(), $status); - $info['title'] = sprintf('%s %s #%s', - $verb ?: $status, - __('Ticket'), $ticket->getNumber()); + + $info['title'] = sprintf(__( + /* 1$ will be a verb, like 'open', 2$ will be the ticket number */ + '%1$s Ticket #%2$s'), + $verb ?: $state, + $ticket->getNumber() + ); + $info['status_id'] = $_REQUEST['status_id'] ?: $id ?: $ticket->getStatusId(); return self::_setStatus($state, $info); @@ -770,28 +775,28 @@ class TicketsAjaxAPI extends AjaxController { if (!($status= TicketStatus::lookup($_REQUEST['status_id']))) $errors['status_id'] = sprintf('%s %s', __('Unknown or invalid'), __('status')); - elseif (!$errors) { + elseif ($status->getId() == $ticket->getStatusId()) + $errors['err'] = sprintf(__('Ticket already set to %s status'), + __($status->getName())); + else { // Make sure the agent has permission to set the status switch(mb_strtolower($status->getState())) { case 'open': if (!$thisstaff->canCloseTickets() && !$thisstaff->canCreateTickets()) - $errors['err'] = sprintf(__('You do not have - permission to %s.'), - __('reopen tickets')); + $errors['err'] = sprintf(__('You do not have permission %s.'), + __('to reopen tickets')); break; case 'resolved': case 'closed': if (!$thisstaff->canCloseTickets()) - $errors['err'] = sprintf(__('You do not have - permission to %s.'), - __('resolve/close tickets')); + $errors['err'] = sprintf(__('You do not have permission %s.'), + __('to resolve/close tickets')); break; case 'deleted': if (!$thisstaff->canDeleteTickets()) - $errors['err'] = sprintf(__('You do not have - permission to %s.'), - __('archive/delete tickets')); + $errors['err'] = sprintf(__('You do not have permission %s.'), + __('to archive/delete tickets')); break; default: $errors['err'] = sprintf('%s %s', @@ -799,14 +804,28 @@ class TicketsAjaxAPI extends AjaxController { } } - if ($ticket->setStatus($status, $_REQUEST['comments'])) { + if (!$errors && $ticket->setStatus($status, $_REQUEST['comments'])) { $_SESSION['::sysmsgs']['msg'] = sprintf( __('Successfully updated status to %s'), $status->getName()); Http::response(201, 'Successfully processed'); + } elseif (!$errors['err']) { + $errors['err'] = __('Error updating ticket status'); } - $errors['err'] = __('Error updating ticket status'); + + $state = $status ? $status->getState() : $state; + $verb = TicketStateField::getVerb($state); + + $info['action'] = sprintf('#tickets/%d/status/%s', $ticket->getId(), $state); + $info['title'] = sprintf(__( + /* 1$ will be a verb, like 'open', 2$ will be the ticket number */ + '%1$s Ticket #%2$s'), + $verb ?: $state, + $ticket->getNumber() + ); + $info['status_id'] = $_REQUEST['status_id'] ?: 0; + $info['comments'] = Format::htmlchars($_REQUEST['comments']); $info['errors'] = $errors; return self::_setStatus($state, $info); } @@ -868,7 +887,10 @@ class TicketsAjaxAPI extends AjaxController { $errors = $info = array(); if (!$thisstaff || !$thisstaff->canManageTickets()) - $errors['err']=__('You do not have permission to mass manage tickets. Contact admin for such access'); + $errors['err'] = sprintf('%s %s', + sprintf(__('You do not have permission %s.'), + __('to mass manage tickets')), + __('Contact admin for such access')); elseif (!$_REQUEST['tids'] || !count($_REQUEST['tids'])) $errors['err']=sprintf(__('You must select at least %s.'), __('one ticket')); @@ -881,21 +903,18 @@ class TicketsAjaxAPI extends AjaxController { case 'open': if (!$thisstaff->canCloseTickets() && !$thisstaff->canCreateTickets()) - $errors['err'] = sprintf(__('You do not have - permission to %s.'), + $errors['err'] = sprintf(__('You do not have permission to %s.'), __('reopen tickets')); break; case 'resolved': case 'closed': if (!$thisstaff->canCloseTickets()) - $errors['err'] = sprintf(__('You do not have - permission to %s.'), + $errors['err'] = sprintf(__('You do not have permission to %s.'), __('resolve/close tickets')); break; case 'deleted': if (!$thisstaff->canDeleteTickets()) - $errors['err'] = sprintf(__('You do not have - permission to %s.'), + $errors['err'] = sprintf(__('You do not have permission to %s.'), __('archive/delete tickets')); break; default: diff --git a/scp/tickets.php b/scp/tickets.php index cd7d5ebfbae570cd656ba4932abfa7fe613e38d2..07df162d032d88d7900e7aa8485238d2f08f9749 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -330,7 +330,10 @@ if($_POST && !$errors): case 'open': $ticket=null; if(!$thisstaff || !$thisstaff->canCreateTickets()) { - $errors['err']=__('You do not have permission to create tickets. Contact admin for such access'); + $errors['err'] = sprintf('%s %s', + sprintf(__('You do not have permission %s.'), + __('to create tickets')), + __('Contact admin for such access')); } else { $vars = $_POST; $vars['uid'] = $user? $user->getId() : 0;