|
|
|
@ -123,14 +123,14 @@ $htmlHeadXtra[] = '<style> |
|
|
|
|
$ticket_id = $_GET['ticket_id']; |
|
|
|
|
$ticket = TicketManager::get_ticket_detail_by_id($ticket_id); |
|
|
|
|
if (!isset($ticket['ticket'])) { |
|
|
|
|
api_not_allowed(); |
|
|
|
|
api_not_allowed(true); |
|
|
|
|
} |
|
|
|
|
if (!isset($_GET['ticket_id'])) { |
|
|
|
|
header('Location: '.api_get_path(WEB_CODE_PATH).'ticket/tickets.php'); |
|
|
|
|
exit; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (isset($_POST['response'])) { |
|
|
|
|
/*if (isset($_POST['response'])) { |
|
|
|
|
if ($user_id == $ticket['ticket']['assigned_last_user'] || api_is_platform_admin()) { |
|
|
|
|
$response = $_POST['response'] === '1' ? true : false; |
|
|
|
|
$newStatus = TicketManager::STATUS_PENDING; |
|
|
|
@ -145,113 +145,23 @@ if (isset($_POST['response'])) { |
|
|
|
|
Display::addFlash(Display::return_message(get_lang('Updated'))); |
|
|
|
|
header("Location:".api_get_self()."?ticket_id=".$ticket_id); |
|
|
|
|
exit; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
$title = 'Ticket #'.$ticket['ticket']['code']; |
|
|
|
|
|
|
|
|
|
if (!isset($_POST['compose'])) { |
|
|
|
|
if (isset($_REQUEST['close'])) { |
|
|
|
|
if (isset($_REQUEST['close'])) { |
|
|
|
|
TicketManager::close_ticket($_REQUEST['ticket_id'], $user_id); |
|
|
|
|
$ticket['ticket']['status_id'] = TicketManager::STATUS_CLOSE; |
|
|
|
|
$ticket['ticket']['status'] = get_lang('Closed'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Display::display_header(); |
|
|
|
|
$projectId = $ticket['ticket']['project_id']; |
|
|
|
|
echo '<div class="actions">'; |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon('back.png', get_lang('Tickets'), [], ICON_SIZE_MEDIUM), |
|
|
|
|
api_get_path(WEB_CODE_PATH).'ticket/tickets.php?project_id='.$projectId |
|
|
|
|
); |
|
|
|
|
echo '</div>'; |
|
|
|
|
$bold = ''; |
|
|
|
|
if ($ticket['ticket']['status_id'] == TicketManager::STATUS_CLOSE) { |
|
|
|
|
$bold = 'style = "font-weight: bold;"'; |
|
|
|
|
echo "<style> |
|
|
|
|
#confirmticket { |
|
|
|
|
display: none; |
|
|
|
|
} |
|
|
|
|
</style>"; |
|
|
|
|
} |
|
|
|
|
if ($isAdmin) { |
|
|
|
|
$senderData = get_lang('AddedBy').' '.$ticket['ticket']['user_url'].' ('.$ticket['usuario']['username'].').'; |
|
|
|
|
} else { |
|
|
|
|
$senderData = get_lang('AddedBy').' '.$ticket['usuario']['complete_name'].' ('.$ticket['usuario']['username'].').'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo '<table width="100%" > |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="3"> |
|
|
|
|
<h1>'.$title.'</h1> |
|
|
|
|
<h2>'.$ticket['ticket']['subject'].'</h2> |
|
|
|
|
<p> |
|
|
|
|
'.$senderData.' '. |
|
|
|
|
get_lang('Created').' '. |
|
|
|
|
Display::url( |
|
|
|
|
date_to_str_ago($ticket['ticket']['start_date_from_db']), |
|
|
|
|
'#', |
|
|
|
|
['title' => $ticket['ticket']['start_date'], 'class' => 'boot-tooltip'] |
|
|
|
|
).'. '. |
|
|
|
|
get_lang('TicketUpdated').' '. |
|
|
|
|
Display::url( |
|
|
|
|
date_to_str_ago($ticket['ticket']['sys_lastedit_datetime_from_db']), |
|
|
|
|
'#', |
|
|
|
|
['title' => $ticket['ticket']['sys_lastedit_datetime'], 'class' => 'boot-tooltip'] |
|
|
|
|
).' |
|
|
|
|
</p> |
|
|
|
|
</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><p><b>' . get_lang('Category').': </b>'.$ticket['ticket']['name'].'</p></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><p ' . $bold.'><b>'.get_lang('Status').':</b> '.$ticket['ticket']['status'].'</p></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><p><b>' . get_lang('Priority').': </b>'.$ticket['ticket']['priority'].'<p></td> |
|
|
|
|
</tr>'; |
|
|
|
|
|
|
|
|
|
if (!empty($ticket['ticket']['assigned_last_user'])) { |
|
|
|
|
$assignedUser = api_get_user_info($ticket['ticket']['assigned_last_user']); |
|
|
|
|
echo '<tr> |
|
|
|
|
<td><p><b>' . get_lang('AssignedTo').': </b>'.$assignedUser['complete_name'].'<p></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} else { |
|
|
|
|
echo '<tr> |
|
|
|
|
<td><p><b>' . get_lang('AssignedTo').': </b>-<p></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|
if ($ticket['ticket']['course_url'] != null) { |
|
|
|
|
if (!empty($ticket['ticket']['session_id'])) { |
|
|
|
|
$sessionInfo = api_get_session_info($ticket['ticket']['session_id']); |
|
|
|
|
echo '<tr> |
|
|
|
|
<td><b>' . get_lang('Session').':</b> '.$sessionInfo['name'].' </td> |
|
|
|
|
<td></td> |
|
|
|
|
<td colspan="2"></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo '<tr> |
|
|
|
|
<td><b>' . get_lang('Course').':</b> '.$ticket['ticket']['course_url'].' </td> |
|
|
|
|
<td></td> |
|
|
|
|
<td colspan="2"></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|
echo '<tr> |
|
|
|
|
<td> |
|
|
|
|
<hr /> |
|
|
|
|
<b>' . get_lang('Description').':</b> <br /> |
|
|
|
|
'.$ticket['ticket']['message'].' |
|
|
|
|
<hr /> |
|
|
|
|
</td> |
|
|
|
|
</tr> |
|
|
|
|
'; |
|
|
|
|
echo '</table>'; |
|
|
|
|
$messages = $ticket['messages']; |
|
|
|
|
$counter = 1; |
|
|
|
|
foreach ($messages as $message) { |
|
|
|
|
$projectId = $ticket['ticket']['project_id']; |
|
|
|
|
$messages = $ticket['messages']; |
|
|
|
|
$counter = 1; |
|
|
|
|
$messageToShow = ''; |
|
|
|
|
$formToShow = ''; |
|
|
|
|
foreach ($messages as $message) { |
|
|
|
|
$date = Display::url( |
|
|
|
|
date_to_str_ago($message['sys_insert_datetime']), |
|
|
|
|
'#', |
|
|
|
@ -279,45 +189,43 @@ if (!isset($_POST['compose'])) { |
|
|
|
|
|
|
|
|
|
$entireMessage = $receivedMessage.$attachmentLinks; |
|
|
|
|
$counterLink = Display::url('#'.$counter, api_get_self().'?ticket_id='.$ticket_id.'#note-'.$counter); |
|
|
|
|
echo '<a id="note-'.$counter.'"> </a><h4>'.sprintf(get_lang('UpdatedByX'), $message['user_created']).' '.$date. |
|
|
|
|
' <span class="pull-right">'.$counterLink.'</span></h4>'; |
|
|
|
|
echo '<hr />'; |
|
|
|
|
|
|
|
|
|
$messageToShow .= '<a id="note-'.$counter.'"> </a><h4>'.sprintf( |
|
|
|
|
get_lang('UpdatedByX'), |
|
|
|
|
$message['user_info']['complete_name_with_message_link'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$messageToShow .= ' '.$date.' <span class="pull-right">'.$counterLink.'</span></h4>'; |
|
|
|
|
$messageToShow .= '<hr />'; |
|
|
|
|
|
|
|
|
|
if (!empty($entireMessage)) { |
|
|
|
|
echo Display::div( |
|
|
|
|
$messageToShow .= Display::div( |
|
|
|
|
$entireMessage, |
|
|
|
|
['class' => 'well'] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
$counter++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$subject = get_lang('ReplyShort').': '.$ticket['ticket']['subject']; |
|
|
|
|
$subject = get_lang('ReplyShort').': '.$ticket['ticket']['subject']; |
|
|
|
|
|
|
|
|
|
if ($ticket['ticket']['status_id'] != TicketManager::STATUS_FORWARDED && |
|
|
|
|
if ($ticket['ticket']['status_id'] != TicketManager::STATUS_FORWARDED && |
|
|
|
|
$ticket['ticket']['status_id'] != TicketManager::STATUS_CLOSE |
|
|
|
|
) { |
|
|
|
|
if (!$isAdmin && $ticket['ticket']['status_id'] != TicketManager::STATUS_UNCONFIRMED) { |
|
|
|
|
show_form_send_message($ticket['ticket']); |
|
|
|
|
} else { |
|
|
|
|
) { |
|
|
|
|
if ($ticket['ticket']['assigned_last_user'] == $user_id || |
|
|
|
|
$ticket['ticket']['sys_insert_user_id'] == $user_id || |
|
|
|
|
$isAdmin |
|
|
|
|
) { |
|
|
|
|
show_form_send_message($ticket['ticket']); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$form = getForm($ticket['ticket']); |
|
|
|
|
$formToShow = $form->returnForm(); |
|
|
|
|
|
|
|
|
|
Display::display_footer(); |
|
|
|
|
} else { |
|
|
|
|
if ($form->validate()) { |
|
|
|
|
$ticket_id = $_POST['ticket_id']; |
|
|
|
|
$content = $_POST['content']; |
|
|
|
|
$messageToSend = ''; |
|
|
|
|
$subject = $_POST['subject']; |
|
|
|
|
$message = isset($_POST['confirmation']) ? true : false; |
|
|
|
|
$file_attachments = $_FILES; |
|
|
|
|
$user_id = api_get_user_id(); |
|
|
|
|
|
|
|
|
|
if ($isAdmin) { |
|
|
|
|
$oldUserId = $ticket['ticket']['assigned_last_user']; |
|
|
|
@ -331,13 +239,15 @@ if (!isset($_POST['compose'])) { |
|
|
|
|
$oldUserName = '-'; |
|
|
|
|
if (!empty($oldUserId)) { |
|
|
|
|
$oldUserInfo = api_get_user_info($oldUserId); |
|
|
|
|
$oldUserName = $oldUserInfo['complete_name']; |
|
|
|
|
$oldUserName = $oldUserInfo['complete_name_with_message_link']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$userCompleteName = '-'; |
|
|
|
|
if (!empty($_POST['assigned_last_user'])) { |
|
|
|
|
$userInfo = api_get_user_info($_POST['assigned_last_user']); |
|
|
|
|
$userCompleteName = $userInfo['complete_name']; |
|
|
|
|
$userInfo = api_get_user_info( |
|
|
|
|
$_POST['assigned_last_user'] |
|
|
|
|
); |
|
|
|
|
$userCompleteName = $userInfo['complete_name_with_message_link']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$messageToSend .= sprintf( |
|
|
|
@ -357,12 +267,16 @@ if (!isset($_POST['compose'])) { |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ($_POST['priority_id'] != $ticket['ticket']['priority_id']) { |
|
|
|
|
$newPriority = TicketManager::getPriority($_POST['priority_id']); |
|
|
|
|
$newPriority = TicketManager::getPriority( |
|
|
|
|
$_POST['priority_id'] |
|
|
|
|
); |
|
|
|
|
$newPriorityTitle = '-'; |
|
|
|
|
if ($newPriority) { |
|
|
|
|
$newPriorityTitle = $newPriority->getName(); |
|
|
|
|
} |
|
|
|
|
$oldPriority = TicketManager::getPriority($ticket['ticket']['priority_id']); |
|
|
|
|
$oldPriority = TicketManager::getPriority( |
|
|
|
|
$ticket['ticket']['priority_id'] |
|
|
|
|
); |
|
|
|
|
$oldPriorityTitle = '-'; |
|
|
|
|
if ($oldPriority) { |
|
|
|
|
$oldPriorityTitle = $oldPriority->getName(); |
|
|
|
@ -375,12 +289,16 @@ if (!isset($_POST['compose'])) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($_POST['status_id'] != $ticket['ticket']['status_id']) { |
|
|
|
|
$newStatus = TicketManager::getStatus($_POST['status_id']); |
|
|
|
|
$newStatus = TicketManager::getStatus( |
|
|
|
|
$_POST['status_id'] |
|
|
|
|
); |
|
|
|
|
$newTitle = '-'; |
|
|
|
|
if ($newStatus) { |
|
|
|
|
$newTitle = $newStatus->getName(); |
|
|
|
|
} |
|
|
|
|
$oldStatus = TicketManager::getStatus($ticket['ticket']['status_id']); |
|
|
|
|
$oldStatus = TicketManager::getStatus( |
|
|
|
|
$ticket['ticket']['status_id'] |
|
|
|
|
); |
|
|
|
|
$oldStatusTitle = '-'; |
|
|
|
|
if ($oldStatus) { |
|
|
|
|
$oldStatusTitle = $oldStatus->getName(); |
|
|
|
@ -415,14 +333,110 @@ if (!isset($_POST['compose'])) { |
|
|
|
|
Display::addFlash(Display::return_message(get_lang('Saved'))); |
|
|
|
|
header("Location:".api_get_self()."?ticket_id=".$ticket_id); |
|
|
|
|
exit; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Display::display_header(); |
|
|
|
|
echo '<div class="actions">'; |
|
|
|
|
echo Display::url( |
|
|
|
|
Display::return_icon('back.png', get_lang('Tickets'), [], ICON_SIZE_MEDIUM), |
|
|
|
|
api_get_path(WEB_CODE_PATH).'ticket/tickets.php?project_id='.$projectId |
|
|
|
|
); |
|
|
|
|
echo '</div>'; |
|
|
|
|
$bold = ''; |
|
|
|
|
if ($ticket['ticket']['status_id'] == TicketManager::STATUS_CLOSE) { |
|
|
|
|
$bold = 'style = "font-weight: bold;"'; |
|
|
|
|
} |
|
|
|
|
if ($isAdmin) { |
|
|
|
|
$senderData = get_lang('AddedBy').' '.$ticket['ticket']['user_url'].' ('.$ticket['usuario']['complete_name_with_message_link'].').'; |
|
|
|
|
} else { |
|
|
|
|
$senderData = get_lang('AddedBy').' '.$ticket['usuario']['complete_name_with_message_link'].' ('.$ticket['usuario']['username'].').'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo '<table width="100%" > |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="3"> |
|
|
|
|
<h1>'.$title.'</h1> |
|
|
|
|
<h2>'.$ticket['ticket']['subject'].'</h2> |
|
|
|
|
<p> |
|
|
|
|
'.$senderData.' '. |
|
|
|
|
get_lang('Created').' '. |
|
|
|
|
Display::url( |
|
|
|
|
date_to_str_ago($ticket['ticket']['start_date_from_db']), |
|
|
|
|
'#', |
|
|
|
|
['title' => $ticket['ticket']['start_date'], 'class' => 'boot-tooltip'] |
|
|
|
|
).'. '. |
|
|
|
|
get_lang('TicketUpdated').' '. |
|
|
|
|
Display::url( |
|
|
|
|
date_to_str_ago($ticket['ticket']['sys_lastedit_datetime_from_db']), |
|
|
|
|
'#', |
|
|
|
|
['title' => $ticket['ticket']['sys_lastedit_datetime'], 'class' => 'boot-tooltip'] |
|
|
|
|
).' |
|
|
|
|
</p> |
|
|
|
|
</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><p><b>' . get_lang('Category').': </b>'.$ticket['ticket']['name'].'</p></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><p ' . $bold.'><b>'.get_lang('Status').':</b> '.$ticket['ticket']['status'].'</p></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><p><b>' . get_lang('Priority').': </b>'.$ticket['ticket']['priority'].'<p></td> |
|
|
|
|
</tr>'; |
|
|
|
|
|
|
|
|
|
if (!empty($ticket['ticket']['assigned_last_user'])) { |
|
|
|
|
$assignedUser = api_get_user_info($ticket['ticket']['assigned_last_user']); |
|
|
|
|
echo '<tr> |
|
|
|
|
<td><p><b>' . get_lang('AssignedTo').': </b>'.$assignedUser['complete_name_with_message_link'].'<p></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} else { |
|
|
|
|
echo '<tr> |
|
|
|
|
<td><p><b>' . get_lang('AssignedTo').': </b>-<p></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|
if ($ticket['ticket']['course_url'] != null) { |
|
|
|
|
if (!empty($ticket['ticket']['session_id'])) { |
|
|
|
|
$sessionInfo = api_get_session_info($ticket['ticket']['session_id']); |
|
|
|
|
echo '<tr> |
|
|
|
|
<td><b>' . get_lang('Session').':</b> '.$sessionInfo['name'].' </td> |
|
|
|
|
<td></td> |
|
|
|
|
<td colspan="2"></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo '<tr> |
|
|
|
|
<td><b>' . get_lang('Course').':</b> '.$ticket['ticket']['course_url'].' </td> |
|
|
|
|
<td></td> |
|
|
|
|
<td colspan="2"></td> |
|
|
|
|
</tr>'; |
|
|
|
|
} |
|
|
|
|
echo '<tr> |
|
|
|
|
<td> |
|
|
|
|
<hr /> |
|
|
|
|
<b>' . get_lang('Description').':</b> <br /> |
|
|
|
|
'.$ticket['ticket']['message'].' |
|
|
|
|
<hr /> |
|
|
|
|
</td> |
|
|
|
|
</tr> |
|
|
|
|
'; |
|
|
|
|
echo '</table>'; |
|
|
|
|
|
|
|
|
|
echo $messageToShow; |
|
|
|
|
|
|
|
|
|
echo $formToShow; |
|
|
|
|
|
|
|
|
|
Display::display_footer(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param array $ticket |
|
|
|
|
* @return FormValidator |
|
|
|
|
*/ |
|
|
|
|
function show_form_send_message($ticket) |
|
|
|
|
function getForm($ticket) |
|
|
|
|
{ |
|
|
|
|
global $isAdmin; |
|
|
|
|
$isAdmin = api_is_platform_admin(); |
|
|
|
|
global $subject; |
|
|
|
|
|
|
|
|
|
$form = new FormValidator( |
|
|
|
@ -517,19 +531,11 @@ function show_form_send_message($ticket) |
|
|
|
|
'<span id="link-more-attach"> |
|
|
|
|
<span class="btn btn-success" onclick="return add_image_form()">' . get_lang('AddOneMoreFile').'</span> |
|
|
|
|
</span> |
|
|
|
|
('.sprintf(get_lang('MaximunFileSizeX'), format_file_size(api_get_setting('message_max_upload_filesize'))).') |
|
|
|
|
'); |
|
|
|
|
('.sprintf(get_lang('MaximunFileSizeX'), format_file_size(api_get_setting('message_max_upload_filesize'))).')' |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$form->addElement('html', '<br/>'); |
|
|
|
|
$form->addElement( |
|
|
|
|
'button', |
|
|
|
|
'compose', |
|
|
|
|
get_lang('SendMessage'), |
|
|
|
|
null, |
|
|
|
|
null, |
|
|
|
|
null, |
|
|
|
|
'btn btn-primary' |
|
|
|
|
); |
|
|
|
|
$form->addButtonSend(get_lang('Send')); |
|
|
|
|
|
|
|
|
|
$form->display(); |
|
|
|
|
return $form; |
|
|
|
|
} |
|
|
|
|