#110 Update admin_ticket to submit as any status, as well as cust. reply
This commit is contained in:
parent
7bfe92747f
commit
756e60426d
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Title: Help Desk Software HESK
|
* Title: Help Desk Software HESK
|
||||||
* Version: 2.5.5 from 5th August 2014
|
* Version: 2.6.0 beta 1 from 30th December 2014
|
||||||
* Author: Klemen Stirn
|
* Author: Klemen Stirn
|
||||||
* Website: http://www.hesk.com
|
* Website: http://www.hesk.com
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
@ -83,10 +83,54 @@ $hesk_error_buffer = array();
|
|||||||
// Get the message
|
// Get the message
|
||||||
$message = hesk_input(hesk_POST('message'));
|
$message = hesk_input(hesk_POST('message'));
|
||||||
|
|
||||||
|
// Submit as customer?
|
||||||
|
$submit_as_customer = isset($_POST['submit_as_customer']) ? true : false;
|
||||||
|
|
||||||
if (strlen($message))
|
if (strlen($message))
|
||||||
{
|
{
|
||||||
|
// Save message for later and ignore the rest?
|
||||||
|
if ( isset($_POST['save_reply']) )
|
||||||
|
{
|
||||||
|
// Delete any existing drafts from this owner for this ticket
|
||||||
|
hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."reply_drafts` WHERE `owner`=".intval($_SESSION['id'])." AND `ticket`=".intval($ticket['id'])." LIMIT 1");
|
||||||
|
|
||||||
|
// Save the message draft
|
||||||
|
hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."reply_drafts` (`owner`, `ticket`, `message`) VALUES (".intval($_SESSION['id']).", ".intval($ticket['id']).", '".hesk_dbEscape($message)."')");
|
||||||
|
|
||||||
|
/* Set reply submitted message */
|
||||||
|
$_SESSION['HESK_SUCCESS'] = TRUE;
|
||||||
|
$_SESSION['HESK_MESSAGE'] = $hesklang['reply_saved'];
|
||||||
|
|
||||||
|
/* What to do after reply? */
|
||||||
|
if ($_SESSION['afterreply'] == 1)
|
||||||
|
{
|
||||||
|
header('Location: admin_main.php');
|
||||||
|
}
|
||||||
|
elseif ($_SESSION['afterreply'] == 2)
|
||||||
|
{
|
||||||
|
/* Get the next open ticket that needs a reply */
|
||||||
|
$res = hesk_dbQuery("SELECT * FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` WHERE `owner` IN ('0','".intval($_SESSION['id'])."') AND " . hesk_myCategories() . " AND `status` IN ('0','1') ORDER BY `owner` DESC, `priority` ASC LIMIT 1");
|
||||||
|
|
||||||
|
if (hesk_dbNumRows($res) == 1)
|
||||||
|
{
|
||||||
|
$row = hesk_dbFetchAssoc($res);
|
||||||
|
$_SESSION['HESK_MESSAGE'] .= '<br /><br />'.$hesklang['rssn'];
|
||||||
|
header('Location: admin_ticket.php?track='.$row['trackid'].'&Refresh='.rand(10000,99999));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
header('Location: admin_main.php');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
header('Location: admin_ticket.php?track='.$ticket['trackid'].'&Refresh='.rand(10000,99999));
|
||||||
|
}
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
// Attach signature to the message?
|
// Attach signature to the message?
|
||||||
if ( ! empty($_POST['signature']))
|
if ( ! $submit_as_customer && ! empty($_POST['signature']))
|
||||||
{
|
{
|
||||||
$message .= "\n\n" . addslashes($_SESSION['signature']) . "\n";
|
$message .= "\n\n" . addslashes($_SESSION['signature']) . "\n";
|
||||||
}
|
}
|
||||||
@ -153,8 +197,15 @@ if ($hesk_settings['attachments']['use'] && !empty($attachments))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add reply */
|
// Add reply
|
||||||
$result = hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`staffid`) VALUES ('".intval($replyto)."','".hesk_dbEscape(addslashes($_SESSION['name']))."','".hesk_dbEscape($message)."',NOW(),'".hesk_dbEscape($myattachments)."','".intval($_SESSION['id'])."')");
|
if ($submit_as_customer)
|
||||||
|
{
|
||||||
|
hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` (`replyto`,`name`,`message`,`dt`,`attachments`) VALUES ('".intval($replyto)."','".hesk_dbEscape(addslashes($ticket['name']))."','".hesk_dbEscape($message."<br /><br /><i>{$hesklang['creb']} {$_SESSION['name']}</i>")."',NOW(),'".hesk_dbEscape($myattachments)."')");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hesk_dbQuery("INSERT INTO `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` (`replyto`,`name`,`message`,`dt`,`attachments`,`staffid`) VALUES ('".intval($replyto)."','".hesk_dbEscape(addslashes($_SESSION['name']))."','".hesk_dbEscape($message)."',NOW(),'".hesk_dbEscape($myattachments)."','".intval($_SESSION['id'])."')");
|
||||||
|
}
|
||||||
|
|
||||||
/* Track ticket status changes for history */
|
/* Track ticket status changes for history */
|
||||||
$revision = '';
|
$revision = '';
|
||||||
@ -189,15 +240,61 @@ $defaultStatusReplyStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClos
|
|||||||
$staffClosedCheckboxStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClosed` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `IsStaffClosedOption` = 1 LIMIT 1"));
|
$staffClosedCheckboxStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID`, `IsClosed` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `IsStaffClosedOption` = 1 LIMIT 1"));
|
||||||
$lockedTicketStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `LockedTicketStatus` = 1 LIMIT 1"));
|
$lockedTicketStatus = hesk_dbFetchAssoc(hesk_dbQuery("SELECT `ID` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."statuses` WHERE `LockedTicketStatus` = 1 LIMIT 1"));
|
||||||
|
|
||||||
$new_status = empty($_POST['close']) ? $defaultStatusReplyStatus['ID'] : $staffClosedCheckboxStatus['ID'];
|
// Get new ticket status
|
||||||
|
$sql_status = '';
|
||||||
/* --> If a ticket is locked keep it closed */
|
// -> If locked, keep it resolved
|
||||||
if ($ticket['locked'])
|
if ($ticket['locked'])
|
||||||
{
|
{
|
||||||
$new_status = $lockedTicketStatus['ID'];
|
$new_status = $lockedTicketStatus['ID'];
|
||||||
}
|
}
|
||||||
|
elseif (isset($_POST['submit_as_status']))
|
||||||
|
{
|
||||||
|
$new_status = $_POST['submit_as_status'];
|
||||||
|
|
||||||
|
if ($ticket['status'] != $new_status)
|
||||||
|
{
|
||||||
|
// Does this status close the ticket?
|
||||||
|
$newStatusRs = hesk_dbQuery('SELECT `IsClosed`, `ShortNameContentKey` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `ID` = '.hesk_dbEscape($new_status));
|
||||||
|
$newStatus = hesk_dbFetchAssoc($newStatusRs);
|
||||||
|
|
||||||
|
if ($newStatus['IsClosed'])
|
||||||
|
{
|
||||||
|
$revision = sprintf($hesklang['thist3'],hesk_date(),$_SESSION['name'].' ('.$_SESSION['user'].')');
|
||||||
|
$sql_status = " , `closedat`=NOW(), `closedby`=".intval($_SESSION['id']).", `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') ";
|
||||||
|
|
||||||
|
// Lock the ticket if customers are not allowed to reopen tickets
|
||||||
|
if ($hesk_settings['custopen'] != 1)
|
||||||
|
{
|
||||||
|
$sql_status .= " , `locked`='1' ";
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
// Ticket isn't being closed, just add the history to the sql query
|
||||||
|
$revision = sprintf($hesklang['thist9'],hesk_date(),$hesklang[$newStatus['ShortNameContentKey']],$_SESSION['name'].' ('.$_SESSION['user'].')');
|
||||||
|
$sql_status = " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// -> Submit as Customer reply
|
||||||
|
elseif ($submit_as_customer)
|
||||||
|
{
|
||||||
|
//Get the status ID for customer replies
|
||||||
|
$customerReplyStatusRs = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsCustomerReplyStatus` = 1 LIMIT 1');
|
||||||
|
$customerReplyStatus = hesk_dbFetchAssoc($customerReplyStatusRs);
|
||||||
|
$new_status = $customerReplyStatus['ID'];
|
||||||
|
}
|
||||||
|
// -> Default: submit as "Replied by staff"
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Get the status ID for staff replies
|
||||||
|
$staffReplyStatusRs = hesk_dbQuery('SELECT `ID` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses` WHERE `IsDefaultStaffReplyStatus` = 1 LIMIT 1');
|
||||||
|
$staffReplyStatus = hesk_dbFetchAssoc($staffReplyStatusRs);
|
||||||
|
$new_status = $staffReplyStatus['ID'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = "UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `status`='{$new_status}',";
|
||||||
|
$sql.= $submit_as_customer ? "`lastreplier`='0', `replierid`='0' " : "`lastreplier`='1', `replierid`='".intval($_SESSION['id'])."' ";
|
||||||
|
|
||||||
$sql = "UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."tickets` SET `status`='{$new_status}', `lastreplier`='1', `replierid`='".intval($_SESSION['id'])."' ";
|
|
||||||
|
|
||||||
/* Update time_worked or force update lastchange */
|
/* Update time_worked or force update lastchange */
|
||||||
if ($time_worked == '00:00:00')
|
if ($time_worked == '00:00:00')
|
||||||
@ -216,19 +313,19 @@ if ( ! empty($_POST['assign_self']) && hesk_checkPermission('can_assign_self',0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql .= " $priority_sql ";
|
$sql .= " $priority_sql ";
|
||||||
|
$sql .= " $sql_status ";
|
||||||
|
|
||||||
|
|
||||||
$isNewStatusClosed = empty($_POST['close']) ? $defaultStatusReplyStatus['IsClosed'] : $staffClosedCheckboxStatus['IsClosed'];
|
if ( ! $ticket['firstreplyby'] )
|
||||||
if ($isNewStatusClosed)
|
|
||||||
{
|
{
|
||||||
$revision = sprintf($hesklang['thist3'],hesk_date(),$_SESSION['name'].' ('.$_SESSION['user'].')');
|
$sql .= " , `firstreply`=NOW(), `firstreplyby`=".intval($_SESSION['id'])." ";
|
||||||
$sql .= " , `history`=CONCAT(`history`,'".hesk_dbEscape($revision)."') ";
|
}
|
||||||
|
|
||||||
if ($hesk_settings['custopen'] != 1)
|
// Keep track of replies to this ticket for easier reporting
|
||||||
{
|
$sql .= " , `replies`=`replies`+1 ";
|
||||||
$sql .= " , `locked`='1' ";
|
$sql .= $submit_as_customer ? '' : " , `staffreplies`=`staffreplies`+1 ";
|
||||||
}
|
|
||||||
}
|
// End and execute the query
|
||||||
$sql .= " WHERE `id`='{$replyto}' LIMIT 1";
|
$sql .= " WHERE `id`='{$replyto}' LIMIT 1";
|
||||||
hesk_dbQuery($sql);
|
hesk_dbQuery($sql);
|
||||||
unset($sql);
|
unset($sql);
|
||||||
@ -247,12 +344,13 @@ $info = array(
|
|||||||
'trackid' => $ticket['trackid'],
|
'trackid' => $ticket['trackid'],
|
||||||
'status' => $new_status,
|
'status' => $new_status,
|
||||||
'name' => $ticket['name'],
|
'name' => $ticket['name'],
|
||||||
'lastreplier' => $_SESSION['name'],
|
'lastreplier' => ($submit_as_customer ? $ticket['name'] : $_SESSION['name']),
|
||||||
'subject' => $ticket['subject'],
|
'subject' => $ticket['subject'],
|
||||||
'message' => stripslashes($message),
|
'message' => stripslashes($message),
|
||||||
'attachments' => $myattachments,
|
'attachments' => $myattachments,
|
||||||
'dt' => hesk_date($ticket['dt'], true),
|
'dt' => hesk_date($ticket['dt'], true),
|
||||||
'lastchange' => hesk_date($ticket['lastchange'], true),
|
'lastchange' => hesk_date($ticket['lastchange'], true),
|
||||||
|
'id' => $ticket['id'],
|
||||||
);
|
);
|
||||||
|
|
||||||
// 2. Add custom fields to the array
|
// 2. Add custom fields to the array
|
||||||
@ -264,19 +362,26 @@ foreach ($hesk_settings['custom_fields'] as $k => $v)
|
|||||||
// 3. Make sure all values are properly formatted for email
|
// 3. Make sure all values are properly formatted for email
|
||||||
$ticket = hesk_ticketToPlain($info, 1, 0);
|
$ticket = hesk_ticketToPlain($info, 1, 0);
|
||||||
|
|
||||||
// Notify the customer
|
// Notify the assigned staff?
|
||||||
if ( ! isset($_POST['no_notify']) || intval( hesk_POST('no_notify') ) != 1)
|
if ($submit_as_customer)
|
||||||
|
{
|
||||||
|
if ($ticket['owner'] && $ticket['owner'] != $_SESSION['id'])
|
||||||
|
{
|
||||||
|
hesk_notifyAssignedStaff(false, 'new_reply_by_customer', 'notify_reply_my');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Notify customer?
|
||||||
|
elseif ( ! isset($_POST['no_notify']) || intval( hesk_POST('no_notify') ) != 1)
|
||||||
{
|
{
|
||||||
hesk_notifyCustomer('new_reply_by_staff');
|
hesk_notifyCustomer('new_reply_by_staff');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete any existing drafts from this owner for this ticket
|
||||||
|
hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."reply_drafts` WHERE `owner`=".intval($_SESSION['id'])." AND `ticket`=".intval($ticket['id'])." LIMIT 1");
|
||||||
|
|
||||||
/* Set reply submitted message */
|
/* Set reply submitted message */
|
||||||
$_SESSION['HESK_SUCCESS'] = TRUE;
|
$_SESSION['HESK_SUCCESS'] = TRUE;
|
||||||
$_SESSION['HESK_MESSAGE'] = $hesklang['reply_submitted'];
|
$_SESSION['HESK_MESSAGE'] = $hesklang['reply_submitted'];
|
||||||
if (!empty($_POST['close']))
|
|
||||||
{
|
|
||||||
$_SESSION['HESK_MESSAGE'] .= '<br /><br />'.$hesklang['ticket_marked'].' <span class="resolved">'.$hesklang['closed'].'</span>';
|
|
||||||
}
|
|
||||||
|
|
||||||
/* What to do after reply? */
|
/* What to do after reply? */
|
||||||
if ($_SESSION['afterreply'] == 1)
|
if ($_SESSION['afterreply'] == 1)
|
||||||
|
@ -220,6 +220,28 @@ if (isset($_GET['delete_post']) && $can_delete && hesk_token_check())
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$closed_sql = '';
|
$closed_sql = '';
|
||||||
|
$changeStatusRs = hesk_dbQuery('SELECT `id`, `LockedTicketStatus`, `IsCustomerReplyStatus`, `IsDefaultStaffReplyStatus`, `IsNewTicketStatus`
|
||||||
|
FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses`
|
||||||
|
WHERE `LockedTicketStatus` = 1
|
||||||
|
OR `IsCustomerReplyStatus` = 1
|
||||||
|
OR `IsDefaultStaffReplyStatus` = 1
|
||||||
|
OR `IsNewTicketStatus` = 1');
|
||||||
|
$lockedTicketStatus = '';
|
||||||
|
$customerReplyStatus = '';
|
||||||
|
$defaultStaffReplyStatus = '';
|
||||||
|
$newTicketStatus = '';
|
||||||
|
while ($row = hesk_dbFetchAssoc($changeStatusRs))
|
||||||
|
{
|
||||||
|
if ($row['LockedTicketStatus']) {
|
||||||
|
$lockedTicketStatus = $row['id'];
|
||||||
|
} elseif ($row['IsCustomerReplyStatus']) {
|
||||||
|
$customerReplyStatus = $row['id'];
|
||||||
|
} elseif ($row['IsDefaultStaffReplyStatus']) {
|
||||||
|
$defaultStaffReplyStatus = $row['id'];
|
||||||
|
} elseif ($row['IsNewTicketStatus']) {
|
||||||
|
$newTicketStatus = $row['id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Reply deleted. Need to update status and last replier? */
|
/* Reply deleted. Need to update status and last replier? */
|
||||||
$res = hesk_dbQuery("SELECT `dt`, `staffid` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` WHERE `replyto`='".intval($ticket['id'])."' ORDER BY `id` DESC LIMIT 1");
|
$res = hesk_dbQuery("SELECT `dt`, `staffid` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."replies` WHERE `replyto`='".intval($ticket['id'])."' ORDER BY `id` DESC LIMIT 1");
|
||||||
@ -232,12 +254,11 @@ if (isset($_GET['delete_post']) && $can_delete && hesk_token_check())
|
|||||||
$status_sql = '';
|
$status_sql = '';
|
||||||
if ($last_reply_id == $n)
|
if ($last_reply_id == $n)
|
||||||
{
|
{
|
||||||
//TODO Update this to MFH-compatible statuses
|
$status = $ticket['locked'] ? $lockedTicketStatus : ($last_replier ? $defaultStaffReplyStatus : $customerReplyStatus);
|
||||||
$status = $ticket['locked'] ? 3 : ($last_replier ? 2 : 1);
|
|
||||||
$status_sql = " , `status`='".intval($status)."' ";
|
$status_sql = " , `status`='".intval($status)."' ";
|
||||||
|
|
||||||
// Update closedat and closedby columns as required
|
// Update closedat and closedby columns as required
|
||||||
if ($status == 3)
|
if ($status == $lockedTicketStatus)
|
||||||
{
|
{
|
||||||
$closed_sql = " , `closedat`=NOW(), `closedby`=".intval($_SESSION['id'])." ";
|
$closed_sql = " , `closedat`=NOW(), `closedby`=".intval($_SESSION['id'])." ";
|
||||||
}
|
}
|
||||||
@ -250,12 +271,12 @@ if (isset($_GET['delete_post']) && $can_delete && hesk_token_check())
|
|||||||
// Update status, closedat and closedby columns as required
|
// Update status, closedat and closedby columns as required
|
||||||
if ($ticket['locked'])
|
if ($ticket['locked'])
|
||||||
{
|
{
|
||||||
$status = 3;
|
$status = $lockedTicketStatus;
|
||||||
$closed_sql = " , `closedat`=NOW(), `closedby`=".intval($_SESSION['id'])." ";
|
$closed_sql = " , `closedat`=NOW(), `closedby`=".intval($_SESSION['id'])." ";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$status = 0;
|
$status = $newTicketStatus;
|
||||||
$closed_sql = " , `closedat`=NULL, `closedby`=NULL ";
|
$closed_sql = " , `closedat`=NULL, `closedby`=NULL ";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1686,8 +1707,8 @@ function hesk_printReplyForm() {
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="message" class="col-sm-3 control-label"><?php echo $hesklang['message']; ?>: <font class="important">*</font></label>
|
<label for="message" class="col-sm-3 control-label"><?php echo $hesklang['message']; ?>: <font class="important">*</font></label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<span id="HeskMsg"><textarea class="form-control" name="message" id="message" rows="12" placeholder="<?php echo $hesklang['message']; ?>" cols="72">
|
<span id="HeskMsg">
|
||||||
<?php
|
<textarea class="form-control" name="message" id="message" rows="12" placeholder="<?php echo $hesklang['message']; ?>" cols="72"><?php
|
||||||
|
|
||||||
// Do we have any message stored in session?
|
// Do we have any message stored in session?
|
||||||
if ( isset($_SESSION['ticket_message']) )
|
if ( isset($_SESSION['ticket_message']) )
|
||||||
@ -1704,8 +1725,7 @@ function hesk_printReplyForm() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?></textarea></span>
|
||||||
</textarea></span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
@ -1756,14 +1776,43 @@ function hesk_printReplyForm() {
|
|||||||
</select></div><br />
|
</select></div><br />
|
||||||
<label><input type="checkbox" name="signature" value="1" checked="checked" /> <?php echo $hesklang['attach_sign']; ?></label>
|
<label><input type="checkbox" name="signature" value="1" checked="checked" /> <?php echo $hesklang['attach_sign']; ?></label>
|
||||||
(<a href="profile.php"><?php echo $hesklang['profile_settings']; ?></a>)<br />
|
(<a href="profile.php"><?php echo $hesklang['profile_settings']; ?></a>)<br />
|
||||||
<label><input type="checkbox" name="no_notify" value="1" <?php echo ($_SESSION['notify_customer_reply'] || empty($ticket['email'])) ? '' : 'checked="checked" '; ?> <?php if (empty($ticket['email'])) { echo 'disabled'; } ?>> <?php echo $hesklang['dsen']; ?></label><br/><br/>
|
<label><input type="checkbox" name="no_notify" value="1" <?php echo ($_SESSION['notify_customer_reply'] && !empty($ticket['email'])) ? '' : 'checked="checked" '; ?> <?php if (empty($ticket['email'])) { echo 'disabled'; } ?>> <?php echo $hesklang['dsen']; ?></label><br/><br/>
|
||||||
<?php if (empty($ticket['email'])) {
|
<?php if (empty($ticket['email'])) {
|
||||||
echo '<input type="hidden" name="no_notify" value="1">';
|
echo '<input type="hidden" name="no_notify" value="1">';
|
||||||
} ?>
|
} ?>
|
||||||
<input type="hidden" name="orig_id" value="<?php echo $ticket['id']; ?>" />
|
<input type="hidden" name="orig_id" value="<?php echo $ticket['id']; ?>" />
|
||||||
<input type="hidden" name="token" value="<?php hesk_token_echo(); ?>" />
|
<input type="hidden" name="token" value="<?php hesk_token_echo(); ?>" />
|
||||||
<input class="btn btn-default" type="submit" value="<?php echo $hesklang['submit_reply']; ?>" />
|
<div class="btn-group">
|
||||||
<!-- TODO Use bootstrap button dropdown to replace submit button with submit dropdown to change status, rather than having eight different buttons, only if ticket is not locked! -->
|
<input class="btn btn-primary" type="submit" value="<?php echo $hesklang['submit_reply']; ?>">
|
||||||
|
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
||||||
|
<span class="caret"></span>
|
||||||
|
<span class="sr-only">Toggle Dropdown</span>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
<li><a>
|
||||||
|
<button class="dropdown-submit" type="submit" name="submit_as_customer">
|
||||||
|
<?php echo $hesklang['sasc']; ?>
|
||||||
|
</button>
|
||||||
|
</a></li>
|
||||||
|
<li class="divider"></li>
|
||||||
|
<?php
|
||||||
|
$allStatusesRs = hesk_dbQuery('SELECT `ID`, `ShortNameContentKey`, `TextColor` FROM `'.hesk_dbEscape($hesk_settings['db_pfix']).'statuses`');
|
||||||
|
$statuses = array();
|
||||||
|
while ($row = hesk_dbFetchAssoc($allStatusesRs)) {
|
||||||
|
array_push($statuses, $row);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($statuses as $status) {
|
||||||
|
echo '<li><a>
|
||||||
|
<button class="dropdown-submit" type="submit" name="submit_as_status" value="'.$status['ID'].'"">
|
||||||
|
'.$hesklang['submit_reply'].' '.$hesklang['and_change_status_to'].' <b>
|
||||||
|
<span style="color:'.$status['TextColor'].'">'.$hesklang[$status['ShortNameContentKey']].'</span></b>
|
||||||
|
</button>
|
||||||
|
</a></li>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<input class="btn btn-default" type="submit" name="save_reply" value="<?php echo $hesklang['save_reply']; ?>"
|
<input class="btn btn-default" type="submit" name="save_reply" value="<?php echo $hesklang['save_reply']; ?>"
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -364,3 +364,12 @@ div.setupButtons {
|
|||||||
cursor: text !important;
|
cursor: text !important;
|
||||||
background-color: #fff !important;
|
background-color: #fff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button.btn.dropdown-toggle {
|
||||||
|
height: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.dropdown-submit {
|
||||||
|
background:none!important;
|
||||||
|
border:none;
|
||||||
|
}
|
||||||
|
@ -358,3 +358,14 @@ div.setupButtons {
|
|||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
}
|
}
|
||||||
|
.white-readonly {
|
||||||
|
cursor: text !important;
|
||||||
|
background-color: #fff !important;
|
||||||
|
}
|
||||||
|
button.btn.dropdown-toggle {
|
||||||
|
height: 34px;
|
||||||
|
}
|
||||||
|
button.dropdown-submit {
|
||||||
|
background:none!important;
|
||||||
|
border:none;
|
||||||
|
}
|
@ -24,6 +24,8 @@ $hesklang['EMAIL_HR']='------ Reply above this line ------';
|
|||||||
// ADDED OR MODIFIED IN Mods For HESK 2.0.0
|
// ADDED OR MODIFIED IN Mods For HESK 2.0.0
|
||||||
$hesklang['saved_ticket_tpl'] = 'Saved Templates';
|
$hesklang['saved_ticket_tpl'] = 'Saved Templates';
|
||||||
$hesklang['new_ticket_tpl']='Add or Edit a Ticket Template';
|
$hesklang['new_ticket_tpl']='Add or Edit a Ticket Template';
|
||||||
|
$hesklang['and_change_status_to'] = 'and change status to'; // Used in combination with $hesklang['submit_reply'] (Reads as "Submit reply and change status to")
|
||||||
|
|
||||||
|
|
||||||
// ADDED OR MODIFIED IN Mods For HESK 1.7.0
|
// ADDED OR MODIFIED IN Mods For HESK 1.7.0
|
||||||
$hesklang['date_custom_field'] = 'Date';
|
$hesklang['date_custom_field'] = 'Date';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user