Newer
Older
<?php
//Note that ticket obj is initiated in tickets.php.
if(!defined('OSTSCPINC') || !$thisstaff || !is_object($ticket) || !$ticket->getId()) die('Invalid path');
//Make sure the staff is allowed to access the page.
if(!@$thisstaff->isStaff() || !$ticket->checkStaffPerm($thisstaff)) die('Access Denied');
//Re-use the post info on error...savekeyboards.org (Why keyboard? -> some people care about objects than users!!)
$info=($_POST && $errors)?Format::input($_POST):array();
//Get the goodies.
$dept = $ticket->getDept(); //Dept
$role = $thisstaff->getRole($dept);
$staff = $ticket->getStaff(); //Assigned or closed by..
$user = $ticket->getOwner(); //Ticket User (EndUser)
$team = $ticket->getTeam(); //Assigned team.
$lock = $ticket->getLock(); //Ticket lock obj
if (!$lock && $cfg->getTicketLockMode() == Lock::MODE_ON_VIEW)
$lock = $ticket->acquireLock($thisstaff->getId());
$mylock = ($lock && $lock->getStaffId() == $thisstaff->getId()) ? $lock : null;
$id = $ticket->getId(); //Ticket ID.
//Useful warnings and errors the user might want to know!
if ($ticket->isClosed() && !$ticket->isReopenable())
$warn = sprintf(
__('Current ticket status (%s) does not allow the end user to reply.'),
$ticket->getStatus());
elseif ($ticket->isAssigned()
&& (($staff && $staff->getId()!=$thisstaff->getId())
|| ($team && !$team->hasMember($thisstaff))
))
$warn.= sprintf(' <span class="Icon assignedTicket">%s</span>',
sprintf(__('Ticket is assigned to %s'),
implode('/', $ticket->getAssignees())
));
if (!$errors['err']) {
if ($lock && $lock->getStaffId()!=$thisstaff->getId())
$errors['err'] = sprintf(__('%s is currently locked by %s'),
__('This ticket'),
elseif (($emailBanned=Banlist::isBanned($ticket->getEmail())))
$errors['err'] = __('Email is in banlist! Must be removed before any reply/response');
elseif (!Validator::is_valid_email($ticket->getEmail()))
$errors['err'] = __('EndUser email address is not valid! Consider updating it before responding');
$unbannable=($emailBanned) ? BanList::includes($ticket->getEmail()) : false;
if($ticket->isOverdue())
$warn.=' <span class="Icon overdueTicket">'.__('Marked overdue!').'</span>';
?>
<div class="sticky bar">
<div class="content">
<div class="pull-right flush-right">
<?php
if ($thisstaff->hasPerm(Email::PERM_BANLIST)
|| $role->hasPerm(Ticket::PERM_EDIT)
|| ($dept && $dept->isManager($thisstaff))) { ?>
<span class="action-button pull-right" data-placement="bottom" data-dropdown="#action-dropdown-more" data-toggle="tooltip" title="<?php echo __('More');?>">
<i class="icon-caret-down pull-right"></i>
<span ><i class="icon-cog"></i></span>
</span>
<?php
if ($role->hasPerm(Ticket::PERM_EDIT)) { ?>
<span class="action-button pull-right"><a data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Edit'); ?>" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=edit"><i class="icon-edit"></i></a></span>
<?php
<span class="action-button pull-right" data-placement="bottom" data-dropdown="#action-dropdown-print" data-toggle="tooltip" title="<?php echo __('Print'); ?>">
<i class="icon-caret-down pull-right"></i>
<a id="ticket-print" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print"><i class="icon-print"></i></a>
</span>
<div id="action-dropdown-print" class="action-dropdown anchor-right">
<ul>
<li><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print¬es=0"><i
class="icon-file-alt"></i> <?php echo __('Ticket Thread'); ?></a>
<li><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print¬es=1"><i
class="icon-file-text-alt"></i> <?php echo __('Thread + Internal Notes'); ?></a>
</ul>
</div>
if ($role->hasPerm(Ticket::PERM_TRANSFER)) {?>
<span class="action-button pull-right">
<a class="ticket-action" id="ticket-transfer" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Transfer'); ?>"
href="#tickets/<?php echo $ticket->getId(); ?>/transfer"><i class="icon-share"></i></a>
</span>
<?php
if ($ticket->isOpen() && $role->hasPerm(Ticket::PERM_ASSIGN)) {?>
<span class="action-button pull-right"
data-dropdown="#action-dropdown-assign"
data-placement="bottom"
data-toggle="tooltip"
title=" <?php echo $ticket->isAssigned() ? __('Assign') : __('Reassign'); ?>"
<a class="ticket-action" id="ticket-assign"
data-redirect="tickets.php"
href="#tickets/<?php echo $ticket->getId(); ?>/assign"><i class="icon-user"></i></a>
</span>
<div id="action-dropdown-assign" class="action-dropdown anchor-right">
<ul>
if (!$ticket->getStaff()
&& (!$dept->assignMembersOnly()
|| $dept->isMember($thisstaff))
) { ?>
<li><a class="no-pjax ticket-action"
data-redirect="tickets.php"
class="icon-chevron-sign-down"></i> <?php echo __('Claim'); ?></a>
<li><a class="no-pjax ticket-action"
data-redirect="tickets.php"
href="#tickets/<?php echo $ticket->getId(); ?>/assign/agents"><i
class="icon-user"></i> <?php echo __('Agent'); ?></a>
<li><a class="no-pjax ticket-action"
data-redirect="tickets.php"
href="#tickets/<?php echo $ticket->getId(); ?>/assign/teams"><i
class="icon-group"></i> <?php echo __('Team'); ?></a>
</ul>
</div>
<?php
} ?>
<div id="action-dropdown-more" class="action-dropdown anchor-right">
<ul>
if ($role->hasPerm(Ticket::PERM_EDIT)) { ?>
<li><a class="change-user" href="#tickets/<?php
echo $ticket->getId(); ?>/change-user"><i class="icon-user"></i> <?php
echo __('Change Owner'); ?></a></li>
<?php
}
if($ticket->isOpen() && ($dept && $dept->isManager($thisstaff))) {
if($ticket->isAssigned()) { ?>
<li><a class="confirm-action" id="ticket-release" href="#release"><i class="icon-user"></i> <?php
echo __('Release (unassign) Ticket'); ?></a></li>
<?php
}
if(!$ticket->isOverdue()) { ?>
<li><a class="confirm-action" id="ticket-overdue" href="#overdue"><i class="icon-bell"></i> <?php
echo __('Mark as Overdue'); ?></a></li>
<?php
}
if($ticket->isAnswered()) { ?>
<li><a class="confirm-action" id="ticket-unanswered" href="#unanswered"><i class="icon-circle-arrow-left"></i> <?php
echo __('Mark as Unanswered'); ?></a></li>
<?php
} else { ?>
<li><a class="confirm-action" id="ticket-answered" href="#answered"><i class="icon-circle-arrow-right"></i> <?php
echo __('Mark as Answered'); ?></a></li>
<?php
}
<?php
if ($role->hasPerm(Ticket::PERM_EDIT)) { ?>
<li><a href="#ajax.php/tickets/<?php echo $ticket->getId();
?>/forms/manage" onclick="javascript:
$.dialog($(this).attr('href').substr(1), 201);
return false"
><i class="icon-paste"></i> <?php echo __('Manage Forms'); ?></a></li>
<li>
<?php
$recipients = __(' Manage Collaborators');
echo sprintf('<a class="collaborators manage-collaborators"
href="#thread/%d/collaborators"><i class="icon-group"></i>%s</a>',
$ticket->getThreadId(),
$recipients);
?>
</li>
<?php if ($thisstaff->hasPerm(Email::PERM_BANLIST)) {
if(!$emailBanned) {?>
<li><a class="confirm-action" id="ticket-banemail"
href="#banemail"><i class="icon-ban-circle"></i> <?php echo sprintf(
Format::htmlchars(__('Ban Email <%s>')),
$ticket->getEmail()); ?></a></li>
} elseif($unbannable) { ?>
<li><a class="confirm-action" id="ticket-banemail"
href="#unbanemail"><i class="icon-undo"></i> <?php echo sprintf(
Format::htmlchars(__('Unban Email <%s>')),
$ticket->getEmail()); ?></a></li>
<?php
}
if ($role->hasPerm(Ticket::PERM_DELETE)) {
?>
<li class="danger"><a class="ticket-action" href="#tickets/<?php
echo $ticket->getId(); ?>/status/delete"
data-redirect="tickets.php"><i class="icon-trash"></i> <?php
echo __('Delete Ticket'); ?></a></li>
<?php
}
?>
</ul>
</div>
if ($role->hasPerm(Ticket::PERM_REPLY)) { ?>
<a href="#post-reply" class="post-response action-button"
data-placement="bottom" data-toggle="tooltip"
title="<?php echo __('Post Reply'); ?>"><i class="icon-mail-reply"></i></a>
<?php
} ?>
<a href="#post-note" id="post-note" class="post-response action-button"
data-placement="bottom" data-toggle="tooltip"
title="<?php echo __('Post Internal Note'); ?>"><i class="icon-file-text"></i></a>
<?php // Status change options
echo TicketStatus::status_options();
?>
<div class="flush-left">
<h2><a href="tickets.php?id=<?php echo $ticket->getId(); ?>"
title="<?php echo __('Reload'); ?>"><i class="icon-refresh"></i>
Nathan Febuary
committed
<?php echo sprintf(__('Ticket #%s'), $ticket->getNumber()); ?></a>
</h2>
</div>
</div>
</div>
</div>
<div class="clear tixTitle has_bottom_border">
<h3>
<?php $subject_field = TicketForm::getInstance()->getField('subject');
echo $subject_field->display($ticket->getSubject()); ?>
</h3>
</div>
<table class="ticket_info" cellspacing="0" cellpadding="0" width="940" border="0">
<tr>
<table border="0" cellspacing="" cellpadding="4" width="100%">
<tr>
<th width="100"><?php echo __('Status');?>:</th>
<td><?php echo ($S = $ticket->getStatus()) ? $S->display() : ''; ?></td>
</tr>
<tr>
<th><?php echo __('Priority');?>:</th>
<td><?php echo $ticket->getPriority(); ?></td>
</tr>
<tr>
<th><?php echo __('Department');?>:</th>
<td><?php echo Format::htmlchars($ticket->getDeptName()); ?></td>
</tr>
<tr>
<th><?php echo __('Create Date');?>:</th>
<td><?php echo Format::datetime($ticket->getCreateDate()); ?></td>
</tr>
</table>
</td>
<td width="50%" style="vertical-align:top">
<table border="0" cellspacing="" cellpadding="4" width="100%">
<tr>
<th width="100"><?php echo __('User'); ?>:</th>
<td><a href="#tickets/<?php echo $ticket->getId(); ?>/user"
$.userLookup('ajax.php/tickets/<?php echo $ticket->getId(); ?>/user',
function (user) {
$('#user-'+user.id+'-name').text(user.name);
$('#user-'+user.id+'-email').text(user.email);
$('#user-'+user.id+'-phone').text(user.phone);
$('select#emailreply option[value=1]').text(user.name+' <'+user.email+'>');
"><i class="icon-user"></i> <span id="user-<?php echo $ticket->getOwnerId(); ?>-name"
><?php echo Format::htmlchars($ticket->getName());
?></span></a>
if ($user) { ?>
<a href="tickets.php?<?php echo Http::build_query(array(
'status'=>'open', 'a'=>'search', 'uid'=> $user->getId()
)); ?>" title="<?php echo __('Related Tickets'); ?>"
data-dropdown="#action-dropdown-stats">
(<b><?php echo $user->getNumTickets(); ?></b>)
</a>
<div id="action-dropdown-stats" class="action-dropdown anchor-right">
<ul>
<?php
echo sprintf('<li><a href="tickets.php?a=search&status=open&uid=%s"><i class="icon-folder-open-alt icon-fixed-width"></i> %s</a></li>',
$user->getId(), sprintf(_N('%d Open Ticket', '%d Open Tickets', $open), $open));
echo sprintf('<li><a href="tickets.php?a=search&status=closed&uid=%d"><i
class="icon-folder-close-alt icon-fixed-width"></i> %s</a></li>',
$user->getId(), sprintf(_N('%d Closed Ticket', '%d Closed Tickets', $closed), $closed));
<li><a href="tickets.php?a=search&uid=<?php echo $ticket->getOwnerId(); ?>"><i class="icon-double-angle-right icon-fixed-width"></i> <?php echo __('All Tickets'); ?></a></li>
<?php if ($thisstaff->hasPerm(User::PERM_DIRECTORY)) { ?>
<li><a href="users.php?id=<?php echo
$user->getId(); ?>"><i class="icon-user
icon-fixed-width"></i> <?php echo __('Manage User'); ?></a></li>
<?php
if ($role->hasPerm(TicketModel::PERM_EDIT)) {
$numCollaborators = $ticket->getThread()->getNumCollaborators();
if ($ticket->getThread()->getNumCollaborators())
$recipients = sprintf(__('%d'),
$numCollaborators);
else
$recipients = 0;
echo sprintf('<span><a class="collaborators preview"
href="#thread/%d/collaborators"><span id="t%d-recipients"><i class="icon-group"></i> (%s)</span></a></span>',
$ticket->getThreadId(),
$ticket->getThreadId(),
$recipients);
}?>
<?php } # end if ($user) ?>
</td>
</tr>
<tr>
<th><?php echo __('Email'); ?>:</th>
<td>
<span id="user-<?php echo $ticket->getOwnerId(); ?>-email"><?php echo $ticket->getEmail(); ?></span>
</td>
</tr>
<?php if ($user->getOrganization()) { ?>
<tr>
<th><?php echo __('Organization'); ?>:</th>
<td><i class="icon-building"></i>
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
<?php echo Format::htmlchars($user->getOrganization()->getName()); ?>
<a href="tickets.php?<?php echo Http::build_query(array(
'status'=>'open', 'a'=>'search', 'orgid'=> $user->getOrgId()
)); ?>" title="<?php echo __('Related Tickets'); ?>"
data-dropdown="#action-dropdown-org-stats">
(<b><?php echo $user->getNumOrganizationTickets(); ?></b>)
</a>
<div id="action-dropdown-org-stats" class="action-dropdown anchor-right">
<ul>
<?php if ($open = $user->getNumOpenOrganizationTickets()) { ?>
<li><a href="tickets.php?<?php echo Http::build_query(array(
'a' => 'search', 'status' => 'open', 'orgid' => $user->getOrgId()
)); ?>"><i class="icon-folder-open-alt icon-fixed-width"></i>
<?php echo sprintf(_N('%d Open Ticket', '%d Open Tickets', $open), $open); ?>
</a></li>
<?php }
if ($closed = $user->getNumClosedOrganizationTickets()) { ?>
<li><a href="tickets.php?<?php echo Http::build_query(array(
'a' => 'search', 'status' => 'closed', 'orgid' => $user->getOrgId()
)); ?>"><i class="icon-folder-close-alt icon-fixed-width"></i>
<?php echo sprintf(_N('%d Closed Ticket', '%d Closed Tickets', $closed), $closed); ?>
</a></li>
<li><a href="tickets.php?<?php echo Http::build_query(array(
'a' => 'search', 'orgid' => $user->getOrgId()
)); ?>"><i class="icon-double-angle-right icon-fixed-width"></i> <?php echo __('All Tickets'); ?></a></li>
<?php }
<li><a href="orgs.php?id=<?php echo $user->getOrgId(); ?>"><i
class="icon-building icon-fixed-width"></i> <?php
echo __('Manage Organization'); ?></a></li>
</td>
</tr>
<?php } # end if (user->org) ?>
<tr>
<th><?php echo __('Source'); ?>:</th>
echo Format::htmlchars($ticket->getSource());
if (!strcasecmp($ticket->getSource(), 'Web') && $ticket->getIP())
echo ' <span class="faded">('.Format::htmlchars($ticket->getIP()).')</span>';
</tr>
</table>
</td>
</tr>
</table>
<br>
<table class="ticket_info" cellspacing="0" cellpadding="0" width="940" border="0">
<tr>
<td width="50%">
<table cellspacing="0" cellpadding="4" width="100%" border="0">
<?php
if($ticket->isOpen()) { ?>
<tr>
<th width="100"><?php echo __('Assigned To');?>:</th>
<td>
<?php
if($ticket->isAssigned())
echo Format::htmlchars(implode('/', $ticket->getAssignees()));
else
echo '<span class="faded">— '.__('Unassigned').' —</span>';
?>
</td>
</tr>
<?php
} else { ?>
<tr>
<th width="100"><?php echo __('Closed By');?>:</th>
<td>
<?php
if(($staff = $ticket->getStaff()))
echo Format::htmlchars($staff->getName());
else
echo '<span class="faded">— '.__('Unknown').' —</span>';
?>
</td>
</tr>
<?php
} ?>
<tr>
<th><?php echo __('SLA Plan');?>:</th>
<td><?php echo $sla?Format::htmlchars($sla->getName()):'<span class="faded">— '.__('None').' —</span>'; ?></td>
</tr>
<?php
if($ticket->isOpen()){ ?>
<tr>
<th><?php echo __('Due Date');?>:</th>
<td><?php echo Format::datetime($ticket->getEstDueDate()); ?></td>
</tr>
<?php
}else { ?>
<tr>
<th><?php echo __('Close Date');?>:</th>
<td><?php echo Format::datetime($ticket->getCloseDate()); ?></td>
</tr>
<?php
}
?>
</table>
</td>
<td width="50%">
<table cellspacing="0" cellpadding="4" width="100%" border="0">
<tr>
<th width="100"><?php echo __('Help Topic');?>:</th>
<td><?php echo Format::htmlchars($ticket->getHelpTopic()); ?></td>
</tr>
<tr>
<th nowrap><?php echo __('Last Message');?>:</th>
<td><?php echo Format::datetime($ticket->getLastMsgDate()); ?></td>
</tr>
<th nowrap><?php echo __('Last Response');?>:</th>
<td><?php echo Format::datetime($ticket->getLastRespDate()); ?></td>
</table>
</td>
</tr>
</table>
<br>
<?php
foreach (DynamicFormEntry::forTicket($ticket->getId()) as $form) {
// Skip core fields shown earlier in the ticket view
// TODO: Rewrite getAnswers() so that one could write
// ->getAnswers()->filter(not(array('field__name__in'=>
// array('email', ...))));
$answers = $form->getAnswers()->exclude(Q::any(array(
'field__flags__hasbit' => DynamicFormField::FLAG_EXT_STORED,
'field__name__in' => array('subject', 'priority')
)));
$displayed = array();
foreach($answers as $a) {
if (!($v = $a->display()))
continue;
$displayed[] = array($a->getLocal('label'), $v);
}
if (count($displayed) == 0)
<table class="ticket_info custom-data" cellspacing="0" cellpadding="0" width="940" border="0">
<thead>
<th colspan="2"><?php echo Format::htmlchars($form->getTitle()); ?></th>
</thead>
<tbody>
<?php
foreach ($displayed as $stuff) {
list($label, $v) = $stuff;
?>
<td width="200"><?php
echo Format::htmlchars($label);
?>:</th>
<td><?php
echo $v;
?></td>
<?php } ?>
</tbody>
</table>
<?php } ?>
Nathan Febuary
committed
<?php
$tcount = $ticket->getThreadEntries($types)->count();
?>
<ul class="tabs clean threads" id="ticket_tabs" >
<li class="active"><a id="ticket-thread-tab" href="#ticket_thread"><?php
echo sprintf(__('Ticket Thread (%d)'), $tcount); ?></a></li>
echo sprintf('#tickets/%d/tasks', $ticket->getId()); ?>"><?php
echo __('Tasks');
if ($ticket->getNumTasks())
echo sprintf(' (<span id="ticket-tasks-count">%d</span>)', $ticket->getNumTasks());
</ul>
<div id="ticket_thread" class="tab_content">
<?php
// Render ticket thread
$ticket->getThread()->render(
array('M', 'R', 'N'),
array(
'html-id' => 'ticketThread',
'mode' => Thread::MODE_STAFF,
'sort' => $thisstaff->thread_view_order
)
<?php
if ($errors['err'] && isset($_POST['a'])) {
// Reflect errors back to the tab.
$errors[$_POST['a']] = $errors['err'];
} elseif($msg) { ?>
<div id="msg_notice"><?php echo $msg; ?></div>
<?php
} elseif($warn) { ?>
<div id="msg_warning"><?php echo $warn; ?></div>
<div class="sticky bar stop actions" id="response_options"
>
<ul class="tabs" id="response-tabs">
if ($role->hasPerm(Ticket::PERM_REPLY)) { ?>
<li class="active <?php
echo isset($errors['reply']) ? 'error' : ''; ?>"><a
href="#reply" id="post-reply-tab"><?php echo __('Post Reply');?></a></li>
<li><a href="#note" <?php
echo isset($errors['postnote']) ? 'class="error"' : ''; ?>
id="post-note-tab"><?php echo __('Post Internal Note');?></a></li>
</ul>
if ($role->hasPerm(Ticket::PERM_REPLY)) { ?>
<form id="reply" class="tab_content spellcheck exclusive save"
data-lock-object-id="ticket/<?php echo $ticket->getId(); ?>"
data-lock-id="<?php echo $mylock ? $mylock->getId() : ''; ?>"
echo $ticket->getId(); ?>#reply" name="reply" method="post" enctype="multipart/form-data">
<?php csrf_token(); ?>
<input type="hidden" name="id" value="<?php echo $ticket->getId(); ?>">
<input type="hidden" name="msgId" value="<?php echo $msgId; ?>">
<input type="hidden" name="a" value="reply">
<input type="hidden" name="lockCode" value="<?php echo $mylock ? $mylock->getCode() : ''; ?>">
<table style="width:100%" border="0" cellspacing="0" cellpadding="3">
<?php
if ($errors['reply']) {?>
<tr><td width="120"> </td><td class="error"><?php echo $errors['reply']; ?> </td></tr>
<?php
}?>
<tbody id="to_sec">
<tr>
<td width="120">
<label><strong><?php echo __('From'); ?>:</strong></label>
</td>
<td>
<?php
# XXX: Add user-to-name and user-to-email HTML ID#s
$addresses = Email::getAddresses();
?>
<select id="from_name" name="from_name">
<?php
$sql=' SELECT email_id, email, name, smtp_host '
.' FROM '.EMAIL_TABLE.' WHERE smtp_active = 1';
if(($res=db_query($sql)) && db_num_rows($res)) {
while (list($id, $email, $name, $host) = db_fetch_row($res)){
$email=$name?"$name <$email>":$email;
?>
<option value="<?php echo $id; ?>"<?php echo ($dept->getEmail()->email_id==$id)?'selected="selected"':''; ?>><?php echo $email; ?></option>
<?php
}
} ?>
</select>
</td>
</tr>
<tr>
<label><strong><?php echo __('To'); ?>:</strong></label>
</td>
# XXX: Add user-to-name and user-to-email HTML ID#s
$to =sprintf('%s <%s>',
Format::htmlchars($ticket->getName()),
$ticket->getReplyToEmail());
$emailReply = (!isset($info['emailreply']) || $info['emailreply']);
<select id="emailreply" name="emailreply">
<option value="1" <?php echo $emailReply ? 'selected="selected"' : ''; ?>><?php echo $to; ?></option>
<option value="0" <?php echo !$emailReply ? 'selected="selected"' : ''; ?>
>— <?php echo __('Do Not Email Reply'); ?> —</option>
</select>
</td>
</tr>
</tbody>
<?php
<tbody id="cc_sec"
style="display:<?php echo $emailReply? 'table-row-group':'none'; ?>;">
<tr>
<label><strong><?php echo __('Collaborators'); ?>:</strong></label>
<input type='checkbox' value='1' name="emailcollab"
id="t<?php echo $ticket->getThreadId(); ?>-emailcollab"
Peter Rotich
committed
<?php echo ((!$info['emailcollab'] && !$errors) || isset($info['emailcollab']))?'checked="checked"':''; ?>
style="display:<?php echo $ticket->getThread()->getNumCollaborators() ? 'inline-block': 'none'; ?>;"
Peter Rotich
committed
>
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
<?php $collaborators = $ticket->getThread()->getCollaborators();
$cc_cids = array();
$bcc_cids = array();
foreach ($collaborators as $c) {
if ($c->flags & Collaborator::FLAG_CC && $c->flags & Collaborator::FLAG_ACTIVE)
$cc_cids[] = $c->user_id;
elseif (!($c->flags & Collaborator::FLAG_CC) && $c->flags & Collaborator::FLAG_ACTIVE) {
$bcc_cids[] = $c->user_id;
}
}
?>
<tr>
<td width="160"><b><?php echo __('Cc'); ?>:</b></td>
<td>
<select name="ccs[]" id="cc_users" multiple="multiple"
data-placeholder="<?php echo __('Select Contacts'); ?>">
<option value=""></option>
<option value="NEW">— <?php echo __('Add New');?> —</option>
<?php
$users = User::objects();
foreach ($users as $u) {
if($u->id != $ticket->user_id && !in_array($u->getId(), $bcc_cids)) {
?>
<option value="<?php echo $u->id; ?>" <?php
if (in_array($u->getId(), $cc_cids))
echo 'selected="selected"'; ?>><?php echo $u->getName(); ?>
</option>
<?php } } ?>
</select>
<br/><span class="error"><?php echo $errors['ccs']; ?></span>
</td>
</tr>
<tr>
<td width="160"><b><?php echo __('Bcc'); ?>:</b></td>
<td>
<select name="bccs[]" id="bcc_users" multiple="multiple"
data-placeholder="<?php echo __('Select Contacts'); ?>">
<option value=""></option>
<option value="NEW">— <?php echo __('Add New');?> —</option>
<?php
$users = User::objects();
foreach ($users as $u) {
if($u->id != $ticket->user_id && !in_array($u->getId(), $cc_cids)) {
?>
<option value="<?php echo $u->id; ?>" <?php
if (in_array($u->getId(), $bcc_cids))
echo 'selected="selected"'; ?>><?php echo $u->getName(); ?>
</option>
<?php } } ?>
</select>
<br/><span class="error"><?php echo $errors['bccs']; ?></span>
</td>
</tr>
</tbody>
<?php
} ?>
<tbody id="resp_sec">
<?php
<tr><td width="120"> </td><td class="error"><?php echo $errors['response']; ?> </td></tr>
}?>
<tr>
<td width="120" style="vertical-align:top">
<label><strong><?php echo __('Response');?>:</strong></label>
</td>
<?php if ($cfg->isCannedResponseEnabled()) { ?>
<select id="cannedResp" name="cannedResp">
<option value="0" selected="selected"><?php echo __('Select a canned response');?></option>
<option value='original'><?php echo __('Original Message'); ?></option>
<option value='lastmessage'><?php echo __('Last Message'); ?></option>
<?php
if(($cannedResponses=Canned::responsesByDeptId($ticket->getDeptId()))) {
echo '<option value="0" disabled="disabled">
------------- '.__('Premade Replies').' ------------- </option>';
foreach($cannedResponses as $id =>$title)
}
?>
</select>
<br>
<?php } # endif (canned-resonse-enabled)
$signature = '';
switch ($thisstaff->getDefaultSignatureType()) {
case 'dept':
if ($dept && $dept->canAppendSignature())
$signature = $dept->getSignature();
break;
case 'mine':
$signature = $thisstaff->getSignature();
break;
} ?>
<input type="hidden" name="draft_id" value=""/>
<textarea name="response" id="response" cols="50"
data-signature-field="signature" data-dept-id="<?php echo $dept->getId(); ?>"
data-signature="<?php
echo Format::htmlchars(Format::viewableImages($signature)); ?>"
placeholder="<?php echo __(
'Start writing your response here. Use canned responses from the drop-down above'
); ?>"
rows="9" wrap="soft"
class="<?php if ($cfg->isRichTextEnabled()) echo 'richtext';
?> draft draft-delete" <?php
list($draft, $attrs) = Draft::getDraftAndDataAttrs('ticket.response', $ticket->getId(), $info['response']);
echo $attrs; ?>><?php echo $_POST ? $info['response'] : $draft;
<div id="reply_form_attachments" class="attachments">
<?php
print $response_form->getField('attachments')->render();
?>
<tr>
<label for="signature" class="left"><?php echo __('Signature');?>:</label>
</td>
<?php
$info['signature']=$info['signature']?$info['signature']:$thisstaff->getDefaultSignatureType();
?>
<label><input type="radio" name="signature" value="none" checked="checked"> <?php echo __('None');?></label>
<?php
if($thisstaff->getSignature()) {?>
<label><input type="radio" name="signature" value="mine"
<?php echo ($info['signature']=='mine')?'checked="checked"':''; ?>> <?php echo __('My Signature');?></label>
<?php
} ?>
<?php
if($dept && $dept->canAppendSignature()) { ?>
<label><input type="radio" name="signature" value="dept"
<?php echo ($info['signature']=='dept')?'checked="checked"':''; ?>>
<?php echo sprintf(__('Department Signature (%s)'), Format::htmlchars($dept->getName())); ?></label>
<?php
} ?>
</td>
</tr>
<tr>
<td width="120" style="vertical-align:top">
<label><strong><?php echo __('Ticket Status');?>:</strong></label>
</td>
if ($role->hasPerm(Ticket::PERM_CLOSE)
$outstanding = true;
echo sprintf('<div class="warning-banner">%s</div>', $warning);
} ?>
<?php
$statusId = $info['reply_status_id'] ?: $ticket->getStatusId();
if ($role->hasPerm(Ticket::PERM_CLOSE) && !$outstanding)
foreach (TicketStatusList::getStatuses(
array('states' => $states)) as $s) {
$selected = ($statusId == $s->getId());
echo sprintf('<option value="%d" %s>%s%s</option>',
$selected
? (' ('.__('current').')') : ''
</td>
</tr>
</table>
Nathan Febuary
committed
<p style="text-align:center;">
<input class="save pending" type="submit" value="<?php echo __('Post Reply');?>">
<input class="" type="reset" value="<?php echo __('Reset');?>">
</p>
</form>
<form id="note" class="hidden tab_content spellcheck exclusive save"
data-lock-object-id="ticket/<?php echo $ticket->getId(); ?>"
data-lock-id="<?php echo $mylock ? $mylock->getId() : ''; ?>"
action="tickets.php?id=<?php echo $ticket->getId(); ?>#note"
name="note" method="post" enctype="multipart/form-data">
<?php csrf_token(); ?>
<input type="hidden" name="id" value="<?php echo $ticket->getId(); ?>">
<input type="hidden" name="locktime" value="<?php echo $cfg->getLockTime() * 60; ?>">
<input type="hidden" name="a" value="postnote">
<input type="hidden" name="lockCode" value="<?php echo $mylock ? $mylock->getCode() : ''; ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="3">
if($errors['postnote']) {?>
<tr>
</tr>
<tr>
<td width="120" style="vertical-align:top">
<label><strong><?php echo __('Internal Note'); ?>:</strong><span class='error'> *</span></label>
</td>
<div class="faded" style="padding-left:0.15em"><?php
echo __('Note title - summary of the note (optional)'); ?></div>
<input type="text" name="title" id="title" size="60" value="<?php echo $info['title']; ?>" >
<br/>
<span class="error"> <?php echo $errors['title']; ?></span>
<div class="error"><?php echo $errors['note']; ?></div>
<textarea name="note" id="internal_note" cols="80"
placeholder="<?php echo __('Note details'); ?>"
rows="9" wrap="soft"
class="<?php if ($cfg->isRichTextEnabled()) echo 'richtext';
?> draft draft-delete" <?php
list($draft, $attrs) = Draft::getDraftAndDataAttrs('ticket.note', $ticket->getId(), $info['note']);
echo $attrs; ?>><?php echo $_POST ? $info['note'] : $draft;
<div class="attachments">
<?php
print $note_form->getField('attachments')->render();
?>
</td>
</tr>
<tr>
<label><?php echo __('Ticket Status');?>:</label>
</td>
$statusId = $info['note_status_id'] ?: $ticket->getStatusId();
if ($ticket->isCloseable() === true
&& $role->hasPerm(Ticket::PERM_CLOSE))
foreach (TicketStatusList::getStatuses(
array('states' => $states)) as $s) {
$selected = $statusId == $s->getId();
echo sprintf('<option value="%d" %s>%s%s</option>',
$selected ? 'selected="selected"' : '',
$selected ? (' ('.__('current').')') : ''
<span class='error'>* <?php echo $errors['note_status_id']; ?></span>
</td>
</tr>
</table>
Nathan Febuary
committed
<p style="text-align:center;">
<input class="save pending" type="submit" value="<?php echo __('Post Note');?>">
<input class="" type="reset" value="<?php echo __('Reset');?>">
</p>
</form>
</div>
<div style="display:none;" class="dialog" id="print-options">
<h3><?php echo __('Ticket Print Options');?></h3>
<a class="close" href=""><i class="icon-remove-circle"></i></a>
<hr/>
<form action="tickets.php?id=<?php echo $ticket->getId(); ?>"
method="post" id="print-form" name="print-form" target="_blank">
<?php csrf_token(); ?>
<input type="hidden" name="a" value="print">
<input type="hidden" name="id" value="<?php echo $ticket->getId(); ?>">
<fieldset class="notes">
<label class="fixed-size" for="notes"><?php echo __('Print Notes');?>:</label>
<label class="inline checkbox">
<input type="checkbox" id="notes" name="notes" value="1"> <?php echo __('Print <b>Internal</b> Notes/Comments');?>
</fieldset>
<fieldset>
<label class="fixed-size" for="psize"><?php echo __('Paper Size');?>:</label>
<select id="psize" name="psize">
<option value="">— <?php echo __('Select Print Paper Size');?> —</option>
<?php
$psize =$_SESSION['PAPER_SIZE']?$_SESSION['PAPER_SIZE']:$thisstaff->getDefaultPaperSize();
foreach(Export::$paper_sizes as $v) {
echo sprintf('<option value="%s" %s>%s</option>',
$v,($psize==$v)?'selected="selected"':'', __($v));
}
?>
</select>
</fieldset>
<hr style="margin-top:3em"/>
<p class="full-width">
<span class="buttons pull-left">
<input type="reset" value="<?php echo __('Reset');?>">
<input type="button" value="<?php echo __('Cancel');?>" class="close">
</span>
<span class="buttons pull-right">
<input type="submit" value="<?php echo __('Print');?>">
</span>
</p>
</form>
<div class="clear"></div>
</div>
<div style="display:none;" class="dialog" id="confirm-action">
<h3><?php echo __('Please Confirm');?></h3>
<a class="close" href=""><i class="icon-remove-circle"></i></a>
<hr/>
<p class="confirm-action" style="display:none;" id="claim-confirm">
<?php echo sprintf(__('Are you sure you want to <b>claim</b> (self assign) %s?'), __('this ticket'));?>
</p>
<p class="confirm-action" style="display:none;" id="answered-confirm">
<?php echo __('Are you sure you want to flag the ticket as <b>answered</b>?');?>
<p class="confirm-action" style="display:none;" id="unanswered-confirm">
<?php echo __('Are you sure you want to flag the ticket as <b>unanswered</b>?');?>
</p>
<p class="confirm-action" style="display:none;" id="overdue-confirm">
<?php echo __('Are you sure you want to flag the ticket as <font color="red"><b>overdue</b></font>?');?>
</p>
<p class="confirm-action" style="display:none;" id="banemail-confirm">
<?php echo sprintf(__('Are you sure you want to <b>ban</b> %s?'), $ticket->getEmail());?> <br><br>
<?php echo __('New tickets from the email address will be automatically rejected.');?>
</p>
<p class="confirm-action" style="display:none;" id="unbanemail-confirm">
<?php echo sprintf(__('Are you sure you want to <b>remove</b> %s from ban list?'), $ticket->getEmail()); ?>
</p>
<p class="confirm-action" style="display:none;" id="release-confirm">
<?php echo sprintf(__('Are you sure you want to <b>unassign</b> ticket from <b>%s</b>?'), $ticket->getAssigned()); ?>
</p>
<p class="confirm-action" style="display:none;" id="changeuser-confirm">
<span id="msg_warning" style="display:block;vertical-align:top">
<?php echo sprintf(Format::htmlchars(__('%s <%s> will longer have access to the ticket')),
'<b>'.Format::htmlchars($ticket->getName()).'</b>', Format::htmlchars($ticket->getEmail())); ?>
<?php echo sprintf(__('Are you sure you want to <b>change</b> ticket owner to %s?'),
'<b><span id="newuser">this guy</span></b>'); ?>
<p class="confirm-action" style="display:none;" id="delete-confirm">
<font color="red"><strong><?php echo sprintf(
__('Are you sure you want to DELETE %s?'), __('this ticket'));?></strong></font>
<br><br><?php echo __('Deleted data CANNOT be recovered, including any associated attachments.');?>
</p>
<div><?php echo __('Please confirm to continue.');?></div>
<form action="tickets.php?id=<?php echo $ticket->getId(); ?>" method="post" id="confirm-form" name="confirm-form">