Still working on admin ticket

merge-requests/27/head
Mike Koch 8 years ago
parent 12aca461ad
commit e3d2052912

@ -690,6 +690,7 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<div class="col-md-6"> <div class="col-md-6">
<table class="table table-striped"> <table class="table table-striped">
<tbody> <tbody>
<?php if ($ticket['email'] !== ''): ?>
<tr> <tr>
<td><b><?php echo $hesklang['email']; ?></b></td> <td><b><?php echo $hesklang['email']; ?></b></td>
<td> <td>
@ -713,7 +714,37 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
?> ?>
</td> </td>
</tr> </tr>
<?php if ($hesk_settings['time_worked']): ?> <?php endif; if ($hesk_settings['time_worked']): ?>
<tr>
<td><strong><?php echo $hesklang['ip']; ?></strong></td>
<td>
<?php
// Format IP for lookup
if ($ticket['ip'] == 'Unknown' || $ticket['ip'] == $hesklang['unknown']) {
echo $hesklang['unknown'];
} else {
echo '<a href="../ip_whois.php?ip=' . urlencode($ticket['ip']) . '">' . $ticket['ip'] . '</a>';
if ($can_ban_ips) {
if ($ip_id = hesk_isBannedIP($ticket['ip'])) {
if ($can_unban_ips) {
echo '<a href="banned_ips.php?a=unban&amp;track=' . $trackingID . '&amp;id=' . intval($ip_id) . '&amp;token=' . hesk_token_echo(0) . '">
<i class="fa fa-ban red icon-link gray-on-hover" data-toggle="tooltip" data-placement="top" data-original-title="' . $hesklang['ipisban'] . ' ' . $hesklang['click_unban'] . '"></i>
</a> ';
} else {
echo '<i class="fa fa-ban icon-link red" data-toggle="tooltip" data-placement="top" data-original-title="' . $hesklang['ipisban'] . '"></i>';
}
} else {
echo '<a href="banned_ips.php?a=ban&amp;track=' . $trackingID . '&amp;ip=' . urlencode($ticket['ip']) . '&amp;token=' . hesk_token_echo(0) . '">
<i class="fa fa-ban gray icon-link red-on-hover" data-toggle="tooltip" data-placement="top" data-original-title="' . $hesklang['savebanip'] . '"></i>
</a> ';
}
}
}
?>
</td>
</tr>
<tr> <tr>
<td><b><?php echo $hesklang['ts']; ?></b></td> <td><b><?php echo $hesklang['ts']; ?></b></td>
<td> <td>
@ -903,80 +934,61 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
</div> </div>
</div> </div>
</div> </div>
</section> <div class="table-bordered status-row">
<div class="row" style="padding: 20px"> <div class="row no-margins med-low-priority">
<div class="col-md-2"> <?php
</div>
<div class="col-md-10">
<?php
/* Do we need or have any canned responses? */
$can_options = hesk_printCanned();
?>
<div class="blankSpace"></div>
<!-- BEGIN TICKET HEAD -->
<div class="table-bordered">
<div class="row">
<div class="col-md-12">
<h3>
<?php
echo $ticket['subject'];
?></h3>
</div>
</div>
<div class="row medLowPriority">
<?php
$priorityLanguages = array( $priorityLanguages = array(
0 => $hesklang['critical'], 0 => $hesklang['critical'],
1 => $hesklang['high'], 1 => $hesklang['high'],
2 => $hesklang['medium'], 2 => $hesklang['medium'],
3 => $hesklang['low'] 3 => $hesklang['low']
); );
$options = array(); $options = array();
for ($i = 0; $i < 4; $i++) { for ($i = 0; $i < 4; $i++) {
$selected = $ticket['priority'] == $i ? 'selected' : ''; $selected = $ticket['priority'] == $i ? 'selected' : '';
array_push($options, '<option value="' . $i . '" ' . $selected . '>' . $priorityLanguages[$i] . '</option>'); array_push($options, '<option value="' . $i . '" ' . $selected . '>' . $priorityLanguages[$i] . '</option>');
} }
echo '<div class="ticket-cell-admin col-md-3 col-sm-12 '; echo '<div class="ticket-cell-admin col-md-3 col-sm-12 ';
if ($ticket['priority'] == 0) { if ($ticket['priority'] == 0) {
echo 'criticalPriority">'; echo 'critical-priority">';
} elseif ($ticket['priority'] == 1) { } elseif ($ticket['priority'] == 1) {
echo 'highPriority">'; echo 'high-priority">';
} else { } else {
echo 'medLowPriority">'; echo 'med-low-priority">';
} }
echo '<p class="ticketPropertyTitle">' . $hesklang['priority'] . '</p>'; echo '<p class="ticket-property-title">' . $hesklang['priority'] . '</p>';
echo '<form style="margin-bottom:0;" id="changePriorityForm" action="priority.php" method="post"> echo '<form style="margin-bottom:0;" id="changePriorityForm" action="priority.php" method="post">
<span style="white-space:nowrap;"> <span style="white-space:nowrap;">
<select class="form-control" name="priority" onchange="document.getElementById(\'changePriorityForm\').submit();">'; <select class="form-control" name="priority" onchange="document.getElementById(\'changePriorityForm\').submit();">';
echo implode('', $options); echo implode('', $options);
echo ' echo '
</select> </select>
<input type="submit" style="display: none" value="' . $hesklang['go'] . '" /><input type="hidden" name="track" value="' . $trackingID . '" /> <input type="submit" style="display: none" value="' . $hesklang['go'] . '" /><input type="hidden" name="track" value="' . $trackingID . '" />
<input type="hidden" name="token" value="' . hesk_token_echo(0) . '" />'; <input type="hidden" name="token" value="' . hesk_token_echo(0) . '" />';
if ($isManager) { if ($isManager) {
echo '<input type="hidden" name="isManager" value="1">'; echo '<input type="hidden" name="isManager" value="1">';
} }
echo '</span> echo '</span>
</form> </form>
</div>'; </div>';
echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticketPropertyTitle">' . $hesklang['status'] . '</p>'; echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticket-property-title">' . $hesklang['status'] . '</p>';
$status_options = array(); $status_options = array();
$results = mfh_getAllStatuses(); $results = mfh_getAllStatuses();
foreach ($results as $row) { foreach ($results as $row) {
$selected = $ticket['status'] == $row['ID'] ? 'selected' : ''; $selected = $ticket['status'] == $row['ID'] ? 'selected' : '';
$status_options[$row['ID']] = '<option value="' . $row['ID'] . '" ' . $selected . '>' . mfh_getDisplayTextForStatusId($row['ID']) . '</option>'; $status_options[$row['ID']] = '<option value="' . $row['ID'] . '" ' . $selected . '>' . mfh_getDisplayTextForStatusId($row['ID']) . '</option>';
} }
echo ' echo '
<form role="form" id="changeStatusForm" style="margin-bottom:0;" action="change_status.php" method="post"> <form role="form" id="changeStatusForm" style="margin-bottom:0;" action="change_status.php" method="post">
<span style="white-space:nowrap;"> <span style="white-space:nowrap;">
<select class="form-control" onchange="document.getElementById(\'changeStatusForm\').submit();" name="s"> <select class="form-control" onchange="document.getElementById(\'changeStatusForm\').submit();" name="s">
@ -985,44 +997,44 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<input type="submit" style="display:none;" value="' . $hesklang['go'] . '" class="btn btn-default" /><input type="hidden" name="track" value="' . $trackingID . '" /> <input type="submit" style="display:none;" value="' . $hesklang['go'] . '" class="btn btn-default" /><input type="hidden" name="track" value="' . $trackingID . '" />
<input type="hidden" name="token" value="' . hesk_token_echo(0) . '" />'; <input type="hidden" name="token" value="' . hesk_token_echo(0) . '" />';
if ($isManager) { if ($isManager) {
echo '<input type="hidden" name="isManager" value="1">'; echo '<input type="hidden" name="isManager" value="1">';
} }
echo '</span> echo '</span>
</form> </form>
</div>'; </div>';
echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticketPropertyTitle">' . $hesklang['owner'] . '</p>'; echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticket-property-title">' . $hesklang['owner'] . '</p>';
if (hesk_checkPermission('can_assign_others', 0) || $isManager) { if (hesk_checkPermission('can_assign_others', 0) || $isManager) {
echo ' echo '
<form style="margin-bottom:0;" id="changeOwnerForm" action="assign_owner.php" method="post"> <form style="margin-bottom:0;" id="changeOwnerForm" action="assign_owner.php" method="post">
<span style="white-space:nowrap;"> <span style="white-space:nowrap;">
<select class="form-control" name="owner" onchange="document.getElementById(\'changeOwnerForm\').submit();">'; <select class="form-control" name="owner" onchange="document.getElementById(\'changeOwnerForm\').submit();">';
$selectedForUnassign = 'selected'; $selectedForUnassign = 'selected';
foreach ($admins as $k => $v) { foreach ($admins as $k => $v) {
$selected = ''; $selected = '';
if ($k == $ticket['owner']) { if ($k == $ticket['owner']) {
$selectedForUnassign = ''; $selectedForUnassign = '';
$selected = 'selected'; $selected = 'selected';
}
echo '<option value="' . $k . '" ' . $selected . '>' . $v . '</option>';
} }
echo '<option value="-1" ' . $selectedForUnassign . '> &gt; ' . $hesklang['unas'] . ' &lt; </option>'; echo '<option value="' . $k . '" ' . $selected . '>' . $v . '</option>';
echo '</select>
<input type="submit" style="display: none" value="' . $hesklang['go'] . '" class="orangebutton" onmouseover="hesk_btn(this,\'orangebuttonover\');" onmouseout="hesk_btn(this,\'orangebutton\');" />
<input type="hidden" name="track" value="' . $trackingID . '" />
<input type="hidden" name="token" value="' . hesk_token_echo(0) . '" />
</span>';
} else {
echo '<p class="ticketPropertyText">';
echo isset($admins[$ticket['owner']]) ? $admins[$ticket['owner']] :
($can_assign_self ? $hesklang['unas'] . ' [<a href="assign_owner.php?track=' . $trackingID . '&amp;owner=' . $_SESSION['id'] . '&amp;token=' . hesk_token_echo(0) . '">' . $hesklang['asss'] . '</a>]' : $hesklang['unas']);
echo '</p>';
} }
echo '</form></div>'; echo '<option value="-1" ' . $selectedForUnassign . '> &gt; ' . $hesklang['unas'] . ' &lt; </option>';
echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticketPropertyTitle">' . $hesklang['category'] . '</p>'; echo '</select>
if ($can_change_cat) { <input type="submit" style="display: none" value="' . $hesklang['go'] . '">
echo ' <input type="hidden" name="track" value="' . $trackingID . '">
<input type="hidden" name="token" value="' . hesk_token_echo(0) . '">
</span>';
} else {
echo '<p class="ticket-property-text">';
echo isset($admins[$ticket['owner']]) ? $admins[$ticket['owner']] :
($can_assign_self ? $hesklang['unas'] . ' [<a href="assign_owner.php?track=' . $trackingID . '&amp;owner=' . $_SESSION['id'] . '&amp;token=' . hesk_token_echo(0) . '">' . $hesklang['asss'] . '</a>]' : $hesklang['unas']);
echo '</p>';
}
echo '</form></div>';
echo '<div class="col-md-3 col-sm-12 ticket-cell-admin"><p class="ticket-property-title">' . $hesklang['category'] . '</p>';
if ($can_change_cat) {
echo '
<form style="margin-bottom:0;" id="changeCategory" action="move_category.php" method="post"> <form style="margin-bottom:0;" id="changeCategory" action="move_category.php" method="post">
@ -1031,18 +1043,76 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
' . $categories_options . ' ' . $categories_options . '
</select> </select>
<input type="submit" style="display: none" value="' . $hesklang['go'] . '" /><input type="hidden" name="track" value="' . $trackingID . '" /> <input type="submit" style="display: none" value="' . $hesklang['go'] . '">
<input type="hidden" name="token" value="' . hesk_token_echo(0) . '" /> <input type="hidden" name="track" value="' . $trackingID . '">
<input type="hidden" name="token" value="' . hesk_token_echo(0) . '">
</span> </span>
</form>'; </form>';
} else { } else {
echo '<p class="ticketPropertyText">' . $category['name'] . '</p>'; echo '<p class="ticket-property-text">' . $category['name'] . '</p>';
}
echo '</div>';
?>
</div>
</div>
<div class="box">
<div class="box-header with-border">
<h1 class="box-title">
<?php echo $hesklang['message']; ?>
</h1>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="box-body">
<?php
/* Do we need or have any canned responses? */
$can_options = hesk_printCanned();
?>
<div class="row">
<div class="col-md-2 text-right">
<strong><?php echo $hesklang['m_sub']; ?></strong>
</div>
<div class="col-md-10">
<?php echo $ticket['subject']; ?>
</div>
</div>
<?php foreach ($hesk_settings['custom_fields'] as $k => $v) {
if ($v['use'] && $v['place'] == 0) {
if ($modsForHesk_settings['custom_field_setting']) {
$v['name'] = $hesklang[$v['name']];
}
echo '<div class="row">';
echo '<div class="col-md-2 text-right"><strong>' . $v['name'] . ':</strong></div>';
if ($v['type'] == 'date' && !empty($ticket[$k])) {
$dt = date('Y-m-d h:i:s', $ticket[$k]);
echo '<div class="col-md-10">' . hesk_dateToString($dt, 0) . '</div>';
} else {
echo '<div class="col-md-10">' . $ticket[$k] . '</div>';
}
echo '</div>';
} }
echo '</div>'; }
?> ?>
<div class="row push-down-10">
<div class="col-md-2 text-right">
<strong><?php echo $hesklang['message_colon']; ?></strong>
</div>
<div class="col-md-10">
<?php echo $ticket['subject']; ?>
</div>
</div> </div>
</div> </div>
</div>
</section>
<div class="row" style="padding: 20px">
<div class="col-md-10">
<div class="blankSpace"></div>
<!-- BEGIN TICKET HEAD -->
<?php <?php
$res = hesk_dbQuery("SELECT t1.*, t2.`name` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "notes` AS t1 LEFT JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` AS t2 ON t1.`who` = t2.`id` WHERE `ticket`='" . intval($ticket['id']) . "' ORDER BY t1.`id` " . ($hesk_settings['new_top'] ? 'DESC' : 'ASC')); $res = hesk_dbQuery("SELECT t1.*, t2.`name` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "notes` AS t1 LEFT JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` AS t2 ON t1.`who` = t2.`id` WHERE `ticket`='" . intval($ticket['id']) . "' ORDER BY t1.`id` " . ($hesk_settings['new_top'] ? 'DESC' : 'ASC'));
while ($note = hesk_dbFetchAssoc($res)) { while ($note = hesk_dbFetchAssoc($res)) {
@ -1174,39 +1244,6 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
$color = 'class="ticketMessageContainer"'; $color = 'class="ticketMessageContainer"';
?> ?>
<div class="row ticketMessageContainer"> <div class="row ticketMessageContainer">
<div class="col-md-3 col-xs-12">
<div class="ticketName"><?php echo $ticket['name']; ?></div>
<div class="ticketEmail">
<!-- TODO -->
</div>
<div class="ticketEmail"><?php echo $hesklang['ip']; ?>:
<?php
// Format IP for lookup
if ($ticket['ip'] == 'Unknown' || $ticket['ip'] == $hesklang['unknown']) {
echo $hesklang['unknown'];
} else {
if ($can_ban_ips) {
if ($ip_id = hesk_isBannedIP($ticket['ip'])) {
if ($can_unban_ips) {
echo '<a href="banned_ips.php?a=unban&amp;track=' . $trackingID . '&amp;id=' . intval($ip_id) . '&amp;token=' . hesk_token_echo(0) . '">
<i class="fa fa-ban" style="font-size:16px;color:red" data-toggle="tooltip" data-placement="top" data-original-title="' . $hesklang['ipisban'] . ' ' . $hesklang['click_unban'] . '"></i>
</a> ';
} else {
echo '<i class="fa fa-ban" style="font-size:16px;color:red" data-toggle="tooltip" data-placement="top" data-original-title="' . $hesklang['ipisban'] . '"></i>';
}
} else {
echo '<a href="banned_ips.php?a=ban&amp;track=' . $trackingID . '&amp;ip=' . urlencode($ticket['ip']) . '&amp;token=' . hesk_token_echo(0) . '">
<i class="fa fa-ban" style="font-size:16px;color:grey" data-toggle="tooltip" data-placement="top" data-original-title="' . $hesklang['savebanip'] . '"></i>
</a> ';
}
}
echo '<a href="../ip_whois.php?ip=' . urlencode($ticket['ip']) . '">' . $ticket['ip'] . '</a>';
}
?>
</div>
</div>
<div class="col-md-9 col-xs-12 pushMarginLeft"> <div class="col-md-9 col-xs-12 pushMarginLeft">
<div class="ticketMessageTop withBorder"> <div class="ticketMessageTop withBorder">
<!-- Action Buttons --> <!-- Action Buttons -->
@ -1216,24 +1253,7 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
<p><br/><?php echo $hesklang['date']; ?>: <?php echo hesk_date($ticket['dt'], true); ?> <p><br/><?php echo $hesklang['date']; ?>: <?php echo hesk_date($ticket['dt'], true); ?>
<!-- Custom Fields Before Message --> <!-- Custom Fields Before Message -->
<?php
foreach ($hesk_settings['custom_fields'] as $k => $v) {
if ($v['use'] && $v['place'] == 0) {
if ($modsForHesk_settings['custom_field_setting']) {
$v['name'] = $hesklang[$v['name']];
}
echo '<p>' . $v['name'] . ': ';
if ($v['type'] == 'date' && !empty($ticket[$k])) {
$dt = date('Y-m-d h:i:s', $ticket[$k]);
echo hesk_dateToString($dt, 0);
} else {
echo $ticket[$k];
}
echo '</p>';
}
}
?>
</div> </div>
<div class="ticketMessageBottom"> <div class="ticketMessageBottom">
<!-- Message --> <!-- Message -->

@ -3,7 +3,8 @@
} }
.red, .red,
.important { .important,
.critical-priority {
color: red; color: red;
} }
@ -32,6 +33,14 @@
color: blue; color: blue;
} }
.med-low-priority {
background-color: #8BB467;
}
.high-priority {
background-color: #ff6a00;
}
/* Hover colors */ /* Hover colors */
.red-on-hover:hover { .red-on-hover:hover {
color: red; color: red;

@ -24,4 +24,61 @@
.dropdown-menu>li>span>.fa { .dropdown-menu>li>span>.fa {
margin-right: 10px; margin-right: 10px;
}
.no-margins {
margin: 0;
}
@media (max-width: 991px) {
.ticket-cell-admin {
border-bottom: solid 1px #ddd;
border-right: 0;
padding-top: 5px;
height: 100px;
}
}
@media (min-width: 992px) {
.ticket-cell-admin {
border-bottom: 0;
border-right: solid 1px #ddd;
margin-top: 1px;
height: 100px;
padding-top: 10px;
}
}
.ticket-property-title {
color: rgba(255, 255, 255, .75);
font-size: 11px;
text-transform: uppercase;
}
@media (min-width: 992px) {
.ticketPropertyText {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.ticketPropertyText:hover {
white-space: normal;
overflow: visible;
}
}
.ticketPropertyText {
font-size: 16px;
line-height: 1em;
color: #fff;
padding-bottom: 2px;
}
.status-row {
margin-bottom: 20px;
}
.push-down-10 {
margin-top: 10px;
} }

@ -40,6 +40,7 @@ $hesklang['updated_colon'] = 'Updated:';
$hesklang['last_replier_colon'] = 'Last replier:'; $hesklang['last_replier_colon'] = 'Last replier:';
$hesklang['click_to_edit'] = 'Click to edit'; $hesklang['click_to_edit'] = 'Click to edit';
$hesklang['no_device_information'] = 'No device information'; $hesklang['no_device_information'] = 'No device information';
$hesklang['message_colon'] = 'Message:';
// ADDED OR MODIFIED IN Mods for HESK 2.6.0 // ADDED OR MODIFIED IN Mods for HESK 2.6.0
$hesklang['search_logs'] = 'Search Logs'; $hesklang['search_logs'] = 'Search Logs';

Loading…
Cancel
Save