golden hour
/home/doctorbruno/public_html/doctorbruno.info/taeionline/support/include/staff
⬆️ Go Up
Upload
File/Folder
Size
Actions
apikey.inc.php
4.69 KB
Del
OK
apikeys.inc.php
7.6 KB
Del
OK
banlist.inc.php
8.71 KB
Del
OK
banrule.inc.php
2.96 KB
Del
OK
cannedresponse.inc.php
6.09 KB
Del
OK
cannedresponses.inc.php
8.47 KB
Del
OK
categories.inc.php
7.03 KB
Del
OK
category.inc.php
6.51 KB
Del
OK
dashboard.inc.php
6.35 KB
Del
OK
department.inc.php
22.78 KB
Del
OK
departments.inc.php
10.42 KB
Del
OK
directory.inc.php
5.95 KB
Del
OK
dynamic-form.inc.php
15.2 KB
Del
OK
dynamic-forms.inc.php
5.26 KB
Del
OK
dynamic-list.inc.php
11.12 KB
Del
OK
dynamic-lists.inc.php
4.62 KB
Del
OK
email.inc.php
10.47 KB
Del
OK
emails.inc.php
7.03 KB
Del
OK
faq-categories.inc.php
7.13 KB
Del
OK
faq-category.inc.php
3.52 KB
Del
OK
faq-view.inc.php
3.52 KB
Del
OK
faq.inc.php
10.31 KB
Del
OK
filter.inc.php
18.98 KB
Del
OK
filters.inc.php
9.47 KB
Del
OK
footer.inc.php
3.87 KB
Del
OK
header.inc.php
6.02 KB
Del
OK
helptopic.inc.php
20.78 KB
Del
OK
helptopics.inc.php
9.93 KB
Del
OK
index.php
37 B
Del
OK
login.header.php
1.37 KB
Del
OK
login.tpl.php
6.76 KB
Del
OK
org-view.inc.php
4.45 KB
Del
OK
orgs.inc.php
8.57 KB
Del
OK
page.inc.php
7.87 KB
Del
OK
pages.inc.php
7.64 KB
Del
OK
plugin-add.inc.php
1.84 KB
Del
OK
plugin-instance.inc.php
1.31 KB
Del
OK
plugin.inc.php
4.67 KB
Del
OK
plugins.inc.php
5.81 KB
Del
OK
profile.inc.php
20.72 KB
Del
OK
pwreset.login.php
1.77 KB
Del
OK
pwreset.php
1.7 KB
Del
OK
pwreset.sent.php
1.59 KB
Del
OK
queue.inc.php
15.59 KB
Del
OK
queues-ticket.inc.php
4.56 KB
Del
OK
role.inc.php
4.91 KB
Del
OK
roles.inc.php
5.5 KB
Del
OK
schedule.inc.php
4.53 KB
Del
OK
schedules.inc.php
5.34 KB
Del
OK
settings-agents.inc.php
13.15 KB
Del
OK
settings-alerts.inc.php
10.68 KB
Del
OK
settings-autoresp.inc.php
2.48 KB
Del
OK
settings-emails.inc.php
9.88 KB
Del
OK
settings-kb.inc.php
2.18 KB
Del
OK
settings-pages.inc.php
15.32 KB
Del
OK
settings-system.inc.php
22.99 KB
Del
OK
settings-tasks.inc.php
14.99 KB
Del
OK
settings-tickets.inc.php
13.7 KB
Del
OK
settings-users.inc.php
9.36 KB
Del
OK
slaplan.inc.php
5.96 KB
Del
OK
slaplans.inc.php
7.99 KB
Del
OK
staff.inc.php
21.42 KB
Del
OK
staffmembers.inc.php
12.63 KB
Del
OK
syslogs.inc.php
8.58 KB
Del
OK
system.inc.php
7.82 KB
Del
OK
task-view.inc.php
93 B
Del
OK
tasks.inc.php
17.99 KB
Del
OK
team.inc.php
8.76 KB
Del
OK
teams.inc.php
8.14 KB
Del
OK
template.inc.php
7.21 KB
Del
OK
templates
-
Del
OK
templates.inc.php
8.25 KB
Del
OK
ticket-edit.inc.php
8.62 KB
Del
OK
ticket-open.inc.php
23.7 KB
Del
OK
ticket-relations.inc.php
1.27 KB
Del
OK
ticket-tasks.inc.php
7.32 KB
Del
OK
ticket-view.inc.php
70.54 KB
Del
OK
tickets.inc.php
25.45 KB
Del
OK
tpl.inc.php
5.77 KB
Del
OK
user-view.inc.php
9.22 KB
Del
OK
users.inc.php
12.88 KB
Del
OK
Edit: ticket-view.inc.php
<?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(); $type = array('type' => 'viewed'); Signal::send('object.view', $ticket, $type); //Get the goodies. $dept = $ticket->getDept(); //Dept $role = $ticket->getRole($thisstaff); $staff = $ticket->getStaff(); //Assigned or closed by.. $user = $ticket->getOwner(); //Ticket User (EndUser) $team = $ticket->getTeam(); //Assigned team. $sla = $ticket->getSLA(); $lock = $ticket->getLock(); //Ticket lock obj $children = $ticket->getChildren(); $thread = $ticket->getThread(); 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. $isManager = $dept->isManager($thisstaff); //Check if Agent is Manager $canRelease = ($isManager || $role->hasPerm(Ticket::PERM_RELEASE)); //Check if Agent can release tickets $blockReply = $ticket->isChild() && $ticket->getMergeType() != 'visual'; $canMarkAnswered = ($isManager || $role->hasPerm(Ticket::PERM_MARKANSWERED)); //Check if Agent can mark as answered/unanswered //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 ($blockReply) $warn = __('Child Tickets do not allow the end user or agent to reply.'); 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'), $lock->getStaffName()); 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> <div id="msg_notice" style="display: none;"><span id="msg-txt"><?php echo $msg ?: ''; ?></span></div> <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)) { ?> <a class="action-button pull-right" 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> <?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" aria-label="<?php echo __('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 title="PDF File"><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print¬es=0&events=0"><i class="icon-file-text-alt"></i> <?php echo __('Ticket Thread'); ?></a> <li title="PDF File"><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print¬es=1&events=0"><i class="icon-file-text-alt"></i> <?php echo __('Thread + Internal Notes'); ?></a> <li title="PDF File"><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print¬es=1&events=1"><i class="icon-file-text-alt"></i> <?php echo __('Thread + Internal Notes + Events'); ?></a> <?php if (extension_loaded('zip')) { ?> <li title="ZIP Archive"><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=zip¬es=1"><i class="icon-folder-close-alt"></i> <?php echo __('Thread + Internal Notes + Attachments'); ?></a> <li title="ZIP Archive"><a class="no-pjax" target="_blank" href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=zip¬es=1&tasks=1"><i class="icon-folder-close-alt"></i> <?php echo __('Thread + Internal Notes + Attachments + Tasks'); ?></a> <?php } ?> </ul> </div> <?php // Transfer if ($role->hasPerm(Ticket::PERM_TRANSFER)) {?> <a class="action-button pull-right ticket-action" id="ticket-transfer" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Transfer'); ?>" data-redirect="tickets.php" href="#tickets/<?php echo $ticket->getId(); ?>/transfer"><i class="icon-share"></i></a> <?php } ?> <?php // Assign 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'); ?>" > <i class="icon-caret-down pull-right"></i> <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> <?php // Agent can claim team assigned ticket if (!$ticket->getStaff() && (!$dept->assignMembersOnly() || $dept->isMember($thisstaff)) ) { ?> <li><a class="no-pjax ticket-action" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/claim"><i class="icon-chevron-sign-down"></i> <?php echo __('Claim'); ?></a> <?php } ?> <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> <?php if ($role->hasPerm(Ticket::PERM_EDIT)) { ?> <li><a class="change-user" href="#tickets/<?php echo $ticket->getId(); ?>/change-user" onclick="javascript: saveDraft();" ><i class="icon-user"></i> <?php echo __('Change Owner'); ?></a></li> <?php } if ($role->hasPerm(Ticket::PERM_MERGE) && !$ticket->isChild()) { ?> <li><a href="#ajax.php/tickets/<?php echo $ticket->getId(); ?>/merge" onclick="javascript: $.dialog($(this).attr('href').substr(1), 201); return false" ><i class="icon-code-fork"></i> <?php echo __('Merge Tickets'); ?></a></li> <?php } if ($role->hasPerm(Ticket::PERM_LINK) && $ticket->getMergeType() == 'visual') { ?> <li><a href="#ajax.php/tickets/<?php echo $ticket->getId(); ?>/link" onclick="javascript: $.dialog($(this).attr('href').substr(1), 201); return false" ><i class="icon-link"></i> <?php echo __('Link Tickets'); ?></a></li> <?php } if ($ticket->isAssigned() && $canRelease) { ?> <li><a href="#tickets/<?php echo $ticket->getId(); ?>/release" class="ticket-action" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>" > <i class="icon-unlock"></i> <?php echo __('Release (unassign) Ticket'); ?></a></li> <?php } if($ticket->isOpen() && $isManager) { 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->isOpen() && $canMarkAnswered) { if($ticket->isAnswered()) { ?> <li><a href="#tickets/<?php echo $ticket->getId(); ?>/mark/unanswered" class="ticket-action" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>"> <i class="icon-circle-arrow-left"></i> <?php echo __('Mark as Unanswered'); ?></a></li> <?php } else { ?> <li><a href="#tickets/<?php echo $ticket->getId(); ?>/mark/answered" class="ticket-action" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>"> <i class="icon-circle-arrow-right"></i> <?php echo __('Mark as Answered'); ?></a></li> <?php } } ?> <?php if ($role->hasPerm(Ticket::PERM_REFER)) { ?> <li><a href="#tickets/<?php echo $ticket->getId(); ?>/referrals" class="ticket-action" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>" > <i class="icon-exchange"></i> <?php echo __('Manage Referrals'); ?></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> <?php } if ($role->hasPerm(Ticket::PERM_REPLY) && $thread && $ticket->getId() == $thread->getObjectId()) { ?> <li> <?php $recipients = __(' Manage Collaborators'); echo sprintf('<a class="collaborators manage-collaborators" href="#thread/%d/collaborators/1"><i class="icon-group"></i>%s</a>', $ticket->getThreadId(), $recipients); ?> </li> <?php } ?> <?php if ($thisstaff->hasPerm(Email::PERM_BANLIST) && $role->hasPerm(Ticket::PERM_REPLY)) { 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> <?php } 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 } } Signal::send('ticket.view.more', $ticket, $extras); 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> <?php if (count($children) != 0) echo sprintf('<span style="font-weight: 700; line-height: 26px;">%s</span>', __('PARENT')); elseif ($ticket->isChild()) echo sprintf('<span style="font-weight: 700; line-height: 26px;">%s</span>', __('CHILD')); 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> <div class="flush-left"> <h2><a href="tickets.php?id=<?php echo $ticket->getId(); ?>" title="<?php echo __('Reload'); ?>"><i class="icon-refresh"></i> <?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 ? $subject_field->display($ticket->getSubject()) : Format::htmlchars($ticket->getSubject()); ?> </h3> </div> <table class="ticket_info" cellspacing="0" cellpadding="0" width="940" border="0"> <tr> <td width="50%"> <table border="0" cellspacing="0" cellpadding="4" width="100%"> <tr> <th width="100"><?php echo __('Status');?>:</th> <?php if ($role->hasPerm(Ticket::PERM_CLOSE)) {?> <td> <a class="tickets-action" data-dropdown="#action-dropdown-statuses" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Change Status'); ?>" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>" href="#statuses" onclick="javascript: saveDraft();" > <?php echo $ticket->getStatus(); ?> </a> </td> <?php } else { ?> <td><?php echo ($S = $ticket->getStatus()) ? $S->display() : ''; ?></td> <?php } ?> </tr> <tr> <th><?php echo __('Priority');?>:</th> <?php if ($role->hasPerm(Ticket::PERM_EDIT) && ($pf = $ticket->getPriorityField())) { ?> <td> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>" href="#tickets/<?php echo $ticket->getId();?>/field/<?php echo $pf->getId();?>/edit"> <span id="field_<?php echo $pf->getId(); ?>"><?php echo $pf->getAnswer()->display(); ?></span> </a> </td> <?php } else { ?> <td><?php echo $ticket->getPriority(); ?></td> <?php } ?> </tr> <tr> <th><?php echo __('Department');?>:</th> <?php if ($role->hasPerm(Ticket::PERM_TRANSFER)) {?> <td> <a class="ticket-action" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Transfer'); ?>" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/transfer" onclick="javascript: saveDraft();" ><?php echo Format::htmlchars($ticket->getDeptName()); ?> </a> </td> <?php }else {?> <td><?php echo Format::htmlchars($ticket->getDeptName()); ?></td> <?php } ?> </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="0" cellpadding="4" width="100%"> <tr> <th width="100"><?php echo __('User'); ?>:</th> <td><a href="#tickets/<?php echo $ticket->getId(); ?>/user" onclick="javascript: saveDraft(); $.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+'>'); }); return false; "><i class="icon-user"></i> <span id="user-<?php echo $ticket->getOwnerId(); ?>-name" ><?php echo Format::htmlchars($ticket->getName()); ?></span></a> <?php 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 if(($open=$user->getNumOpenTickets())) 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)); if(($closed=$user->getNumClosedTickets())) 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 } ?> </ul> </div> <?php if ($role->hasPerm(Ticket::PERM_EDIT) && $thread && $ticket->getId() == $thread->getObjectId()) { if ($thread) { $numCollaborators = $thread->getNumCollaborators(); if ($thread->getNumCollaborators()) $recipients = sprintf(__('%d'), $numCollaborators); } else $recipients = 0; echo sprintf('<span><a class="manage-collaborators preview" href="#thread/%d/collaborators/1"><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> <?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 } if ($thisstaff->hasPerm(User::PERM_DIRECTORY)) { ?> <li><a href="orgs.php?id=<?php echo $user->getOrgId(); ?>"><i class="icon-building icon-fixed-width"></i> <?php echo __('Manage Organization'); ?></a></li> <?php } ?> </ul> </div> </td> </tr> <?php } # end if (user->org) ?> <tr> <th><?php echo __('Source'); ?>:</th> <td> <?php if ($role->hasPerm(Ticket::PERM_EDIT)) { $source = $ticket->getField('source');?> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/field/source/edit"> <span id="field_source"> <?php echo Format::htmlchars($ticket->getSource()); ?></span> </a> <?php } else { echo Format::htmlchars($ticket->getSource()); } if (!strcasecmp($ticket->getSource(), 'Web') && $ticket->getIP()) echo ' <span class="faded">('.Format::htmlchars($ticket->getIP()).')</span>'; ?> </td> </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> <?php if ($role->hasPerm(Ticket::PERM_ASSIGN)) {?> <td> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/assign"> <span id="field_assign"> <?php if($ticket->isAssigned()) echo Format::htmlchars(implode('/', $ticket->getAssignees())); else echo '<span class="faded">— '.__('Unassigned').' —</span>'; ?></span> </a> </td> <?php } else { ?> <td> <?php if($ticket->isAssigned()) echo Format::htmlchars(implode('/', $ticket->getAssignees())); else echo '<span class="faded">— '.__('Unassigned').' —</span>'; ?> </td> <?php } ?> </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 if ($role->hasPerm(Ticket::PERM_EDIT)) { $slaField = $ticket->getField('sla'); ?> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/field/sla/edit"> <span id="field_sla"><?php echo $sla ?: __('None'); ?></span> </a> <?php } else { ?> <span id="field_sla"><?php echo $sla ?: __('None'); ?></span> <?php } ?> </td> </tr> <?php if($ticket->isOpen()){ ?> <tr> <th><?php echo __('Due Date');?>:</th> <?php if ($role->hasPerm(Ticket::PERM_EDIT)) { $duedate = $ticket->getField('duedate'); ?> <td> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/field/duedate/edit"> <?php $due_date = Format::datetime($ticket->getEstDueDate()); ?> <span id="field_duedate" <?php if (!$due_date) echo 'class="faded"'; ?>> <?php echo $due_date ?: '—'.__('Empty').'—'; ?> </span> </a> </td> <?php } else { ?> <td><?php echo Format::datetime($ticket->getEstDueDate()); ?></td> <?php } ?> </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> <?php if ($role->hasPerm(Ticket::PERM_EDIT)) { $topic = $ticket->getField('topic'); ?> <td> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>" href="#tickets/<?php echo $ticket->getId(); ?>/field/topic/edit"> <span id="field_topic"> <?php echo $ticket->getHelpTopic() ?: __('None'); ?> </span> </a> </td> <?php } else { ?> <td><?php echo Format::htmlchars($ticket->getHelpTopic()); ?></td> <?php } ?> </tr> <tr> <th nowrap><?php echo __('Last Message');?>:</th> <td><?php echo Format::datetime($ticket->getLastMsgDate()); ?></td> </tr> <tr> <th nowrap><?php echo __('Last Response');?>:</th> <td><?php echo Format::datetime($ticket->getLastRespDate()); ?></td> </tr> </table> </td> </tr> </table> <br> <?php foreach (DynamicFormEntry::forTicket($ticket->getId()) as $form) { $form->addMissingFields(); //Find fields to exclude if disabled by help topic $disabled = Ticket::getMissingRequiredFields($ticket, true); // 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'), 'field__id__in' => $disabled, ))); $displayed = array(); foreach($answers as $a) { if (!$a->getField()->isVisibleToStaff()) continue; $displayed[] = $a; } if (count($displayed) == 0) continue; ?> <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 $a) { $id = $a->getLocal('id'); $label = $a->getLocal('label'); $field = $a->getField(); $config = $field->getConfiguration(); $html = isset($config['html']) ? $config['html'] : false; $v = $html ? Format::striptags($a->display()) : $a->display(); $class = (Format::striptags($v)) ? '' : 'class="faded"'; $clean = (Format::striptags($v)) ? ($html ? Format::striptags($v) : $v) : '—' . __('Empty') . '—'; $isFile = ($field instanceof FileUploadField); $url = "#tickets/".$ticket->getId()."/field/".$id; ?> <tr> <td width="200"><?php echo Format::htmlchars($label); ?>:</td> <td id="<?php echo sprintf('inline-answer-%s', $field->getId()); ?>"> <?php if ($role->hasPerm(Ticket::PERM_EDIT) && $field->isEditableToStaff()) { $isEmpty = strpos($v, 'Empty') || ($v == ''); if ($isFile && !$isEmpty) { echo sprintf('<span id="field_%s" %s >%s</span><br>', $id, $class, $clean); } $title = ($html && !$isEmpty) ? __('View Content') : __('Update'); $href = $url.(($html && !$isEmpty) ? '/view' : '/edit'); ?> <a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo $title; ?>" href="<?php echo $href; ?>"> <?php if ($isFile && !$isEmpty) { echo "<i class=\"icon-edit\"></i>"; } elseif (strlen($v) > 200) { $clean = Format::truncate($v, 200); echo sprintf('<span id="field_%s" %s >%s</span>', $id, $class, $clean); echo "<br><i class=\"icon-edit\"></i>"; } else echo sprintf('<span id="field_%s" %s >%s</span>', $id, $class, $clean); $a = $field->getAnswer(); $hint = ($field->isRequiredForClose() && $a && !$a->getValue() && get_class($field) != 'BooleanField') ? sprintf('<i class="icon-warning-sign help-tip warning field-label" data-title="%s" data-content="%s" /></i>', __('Required to close ticket'), __('Data is required in this field in order to close the related ticket')) : ''; echo $hint; ?> </a> <?php } else { echo $clean; } ?> </td> </tr> <?php } ?> </tbody> </table> <?php } ?> <div class="clear"></div> <?php $tcount = $ticket->getThreadEntries($types) ? $ticket->getThreadEntries($types)->count() : 0; ?> <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> <li><a id="ticket-tasks-tab" href="#tasks" data-url="<?php echo sprintf('#tickets/%d/tasks', $ticket->getId()); ?>"><?php echo __('Tasks'); if ($ticket->getNumTasks()) echo sprintf(' (<span id="ticket-tasks-count">%d</span>)', $ticket->getNumTasks()); ?></a></li> <?php if ((count($children) != 0 || $ticket->isChild())) { ?> <li><a href="#relations" id="ticket-relations-tab" data-url="<?php echo sprintf('#tickets/%d/relations', $ticket->getId()); ?>" ><?php echo __('Related Tickets'); if (count($children)) echo sprintf(' (<span id="ticket-relations-count">%d</span>)', count($children)); elseif ($ticket->isChild()) echo sprintf(' (<span id="ticket-relations-count">%d</span>)', 1); ?></a></li> <?php } ?> </ul> <div id="ticket_tabs_container"> <div id="ticket_thread" class="tab_content"> <?php // Render ticket thread if ($thread) $thread->render( array('M', 'R', 'N'), array( 'html-id' => 'ticketThread', 'mode' => Thread::MODE_STAFF, 'sort' => $thisstaff->thread_view_order ) ); ?> <div class="clear"></div> <?php if ($errors['err'] && isset($_POST['a'])) { // Reflect errors back to the tab. $errors[$_POST['a']] = $errors['err']; } elseif($warn) { ?> <div id="msg_warning"><?php echo $warn; ?></div> <?php } ?> <div class="sticky bar stop actions" id="response_options" > <ul class="tabs" id="response-tabs"> <?php if ($role->hasPerm(Ticket::PERM_REPLY) && !($blockReply)) { ?> <li class="active <?php echo isset($errors['reply']) ? 'error' : ''; ?>"><a href="#reply" id="post-reply-tab"><?php echo __('Post Reply');?></a></li> <?php } if (!($blockReply)) { ?> <li><a href="#note" <?php echo isset($errors['postnote']) ? 'class="error"' : ''; ?> id="post-note-tab"><?php echo __('Post Internal Note');?></a></li> <?php } ?> </ul> <?php if ($role->hasPerm(Ticket::PERM_REPLY) && !($blockReply)) { $replyTo = $_POST['reply-to'] ?: 'all'; $emailReply = ($replyTo != 'none'); ?> <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() : ''; ?>" action="tickets.php?id=<?php 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> <select id="from_email_id" name="from_email_id"> <?php // Department email (default). if (($e=$dept->getEmail())) { echo sprintf('<option value="%s" selected="selected">%s</option>', $e->getId(), Format::htmlchars($e->getAddress())); } $staffDepts = $thisstaff->getDepts(); if (in_array($cfg->getDefaultDeptId(), $staffDepts)) $staffDepts[] = 0; // Optional SMTP addreses user can send email via if (($emails = Email::getAddresses(array('smtp' => true, 'depts' => $staffDepts), false)) && count($emails)) { $emailId = $_POST['from_email_id'] ?: 0; foreach ($emails as $e) { if ($dept->getEmail()->getId() == $e->getId()) continue; echo sprintf('<option value="%s" %s>%s</option>', $e->getId(), $e->getId() == $emailId ? 'selected="selected"' : '', Format::htmlchars($e->getAddress())); } } ?> </select> </td> </tr> </tbody> <tbody id="recipients"> <tr id="user-row"> <td width="120"> <label><strong><?php echo __('Recipients'); ?>:</strong></label> </td> <td><a href="#tickets/<?php echo $ticket->getId(); ?>/user" onclick="javascript: $.userLookup('ajax.php/tickets/<?php echo $ticket->getId(); ?>/user', function (user) { window.location = 'tickets.php?id='<?php $ticket->getId(); ?> }); return false; "><span ><?php echo Format::htmlchars($ticket->getOwner()->getEmail()->getAddress()); ?></span></a> </td> </tr> <tr><td> </td> <td> <div style="margin-bottom:2px;"> <?php if ($ticket->getThread()->getNumCollaborators()) $recipients = sprintf(__('(%d of %d)'), $ticket->getThread()->getNumActiveCollaborators(), $ticket->getThread()->getNumCollaborators()); echo sprintf('<span"><a id="show_ccs"> <i id="arrow-icon" class="icon-caret-right"></i> %s </a> <a class="manage-collaborators collaborators preview noclick %s" href="#thread/%d/collaborators/1"> %s</a></span>', __('Collaborators'), $ticket->getNumCollaborators() ? '' : 'hidden', $ticket->getThreadId(), sprintf('<span id="t%d-recipients">%s</span></a></span>', $ticket->getThreadId(), $recipients) ); ?> </div> <div id="ccs" class="hidden"> <div> <span style="margin: 10px 5px 1px 0;" class="faded pull-left"><?php echo __('Select or Add New Collaborators'); ?> </span> <?php if ($role->hasPerm(Ticket::PERM_REPLY) && $thread && $ticket->getId() == $thread->getObjectId()) { ?> <span class="action-button pull-left" style="margin: 2px 0 5px 20px;" data-dropdown="#action-dropdown-collaborators" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Manage Collaborators'); ?>" > <i class="icon-caret-down pull-right"></i> <a class="ticket-action" id="collabs-button" data-redirect="tickets.php?id=<?php echo $ticket->getId(); ?>" href="#thread/<?php echo $ticket->getThreadId(); ?>/collaborators/1"> <i class="icon-group"></i></a> </span> <?php } ?> <span class="error"> <?php echo $errors['ccs']; ?></span> </div> <?php if ($role->hasPerm(Ticket::PERM_REPLY) && $thread && $ticket->getId() == $thread->getObjectId()) { ?> <div id="action-dropdown-collaborators" class="action-dropdown anchor-right"> <ul> <li><a class="manage-collaborators" href="#thread/<?php echo $ticket->getThreadId(); ?>/add-collaborator/addcc"><i class="icon-plus"></i> <?php echo __('Add New'); ?></a> <li><a class="manage-collaborators" href="#thread/<?php echo $ticket->getThreadId(); ?>/collaborators/1"><i class="icon-cog"></i> <?php echo __('Manage Collaborators'); ?></a> </ul> </div> <?php } ?> <div class="clear"> <select id="collabselection" name="ccs[]" multiple="multiple" data-placeholder="<?php echo __('Select Active Collaborators'); ?>"> <?php if ($collabs = $ticket->getCollaborators()) { foreach ($collabs as $c) { echo sprintf('<option value="%s" %s class="%s">%s</option>', $c->getUserId(), $c->isActive() ? 'selected="selected"' : '', $c->isActive() ? 'active' : 'disabled', $c->getName()); } } ?> </select> </div> </div> </td> </tr> <tr> <td width="120"> <label><?php echo __('Reply To'); ?>:</label> </td> <td> <?php // Supported Reply Types $replyTypes = array( 'all' => __('All Active Recipients'), 'user' => sprintf('%s (%s)', __('Ticket Owner'), Format::htmlchars($ticket->getOwner()->getEmail())), 'none' => sprintf('— %s —', __('Do Not Email Reply')) ); $replyTo = $_POST['reply-to'] ?: 'all'; $emailReply = ($replyTo != 'none'); ?> <select id="reply-to" name="reply-to"> <?php foreach ($replyTypes as $k => $v) { echo sprintf('<option value="%s" %s>%s</option>', $k, ($k == $replyTo) ? 'selected="selected"' : '', $v); } ?> </select> <i class="help-tip icon-question-sign" href="#reply_types"></i> </td> </tr> </tbody> <tbody id="resp_sec"> <tr><td colspan="2"> </td></tr> <tr> <td width="120" style="vertical-align:top"> <label><strong><?php echo __('Response');?>:</strong></label> </td> <td> <?php if ($errors['response']) echo sprintf('<div class="error">%s</div>', $errors['response']); if ($cfg->isCannedResponseEnabled()) { ?> <div> <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) echo sprintf('<option value="%d">%s</option>',$id,$title); } ?> </select> </div> </td></tr> <tr><td colspan="2"> <?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=""/> <br/> <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 fullscreen" <?php list($draft, $attrs) = Draft::getDraftAndDataAttrs('ticket.response', $ticket->getId(), $info['response']); echo $attrs; ?>><?php echo ThreadEntryBody::clean($_POST ? $info['response'] : $draft); ?></textarea> <div id="reply_form_attachments" class="attachments"> <?php print $response_form->getField('attachments')->render(); ?> </div> </td> </tr> <tr> <td width="120"> <label for="signature" class="left"><?php echo __('Signature');?>:</label> </td> <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> <td> <?php $outstanding = false; if ($role->hasPerm(Ticket::PERM_CLOSE) && is_string($warning=$ticket->isCloseable())) { $outstanding = true; echo sprintf('<div class="warning-banner">%s</div>', $warning); } ?> <select name="reply_status_id"> <?php $statusId = $info['reply_status_id'] ?: $ticket->getStatusId(); $states = array('open'); if ($role->hasPerm(Ticket::PERM_CLOSE) && !$outstanding) $states = array_merge($states, array('closed')); foreach (TicketStatusList::getStatuses( array('states' => $states)) as $s) { if (!$s->isEnabled()) continue; $selected = ($statusId == $s->getId()); echo sprintf('<option value="%d" %s>%s%s</option>', $s->getId(), $selected ? 'selected="selected"' : '', __($s->getName()), $selected ? (' ('.__('current').')') : '' ); } ?> </select> </td> </tr> </tbody> </table> <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> <?php } if (!($blockReply)) { ?> <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"> <?php if($errors['postnote']) {?> <tr> <td width="120"> </td> <td class="error"><?php echo $errors['postnote']; ?></td> </tr> <?php } ?> <tr> <td width="120" style="vertical-align:top"> <label><strong><?php echo __('Internal Note'); ?>:</strong><span class='error'> *</span></label> </td> <td> <div> <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> </td></tr> <tr><td colspan="2"> <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 fullscreen" <?php list($draft, $attrs) = Draft::getDraftAndDataAttrs('ticket.note', $ticket->getId(), $info['note']); echo $attrs; ?>><?php echo ThreadEntryBody::clean($_POST ? $info['note'] : $draft); ?></textarea> <div class="attachments"> <?php print $note_form->getField('attachments')->render(); ?> </div> </td> </tr> <tr><td colspan="2"> </td></tr> <tr> <td width="120"> <label><?php echo __('Ticket Status');?>:</label> </td> <td> <div class="faded"></div> <select name="note_status_id"> <?php $statusId = $info['note_status_id'] ?: $ticket->getStatusId(); $states = array('open'); if ($ticket->isCloseable() === true && $role->hasPerm(Ticket::PERM_CLOSE)) $states = array_merge($states, array('closed')); foreach (TicketStatusList::getStatuses( array('states' => $states)) as $s) { if (!$s->isEnabled()) continue; $selected = $statusId == $s->getId(); echo sprintf('<option value="%d" %s>%s%s</option>', $s->getId(), $selected ? 'selected="selected"' : '', __($s->getName()), $selected ? (' ('.__('current').')') : '' ); } ?> </select> <span class='error'>* <?php echo $errors['note_status_id']; ?></span> </td> </tr> </table> <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> <?php } ?> </div> </div> </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');?> </label> </fieldset> <fieldset class="events"> <label class="fixed-size" for="events"><?php echo __('Print Events');?>:</label> <label class="inline checkbox"> <input type="checkbox" id="events" name="events" value="1"> <?php echo __('Print Thread Events');?> </label> </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> <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 no longer have access to the ticket')), '<b>'.Format::htmlchars($ticket->getName()).'</b>', Format::htmlchars($ticket->getEmail())); ?> </span> <?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> <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"> <?php csrf_token(); ?> <input type="hidden" name="id" value="<?php echo $ticket->getId(); ?>"> <input type="hidden" name="a" value="process"> <input type="hidden" name="do" id="action" value=""> <hr style="margin-top:1em"/> <p class="full-width"> <span class="buttons pull-left"> <input type="button" value="<?php echo __('Cancel');?>" class="close"> </span> <span class="buttons pull-right"> <input type="submit" value="<?php echo __('OK');?>"> </span> </p> </form> <div class="clear"></div> </div> <script type="text/javascript"> $(function() { $(document).on('click', 'a.change-user', function(e) { e.preventDefault(); var tid = <?php echo $ticket->getOwnerId(); ?>; var cid = <?php echo $ticket->getOwnerId(); ?>; var url = 'ajax.php/'+$(this).attr('href').substr(1); $.userLookup(url, function(user) { if(cid!=user.id && $('.dialog#confirm-action #changeuser-confirm').length) { $('#newuser').html(user.name +' <'+user.email+'>'); $('.dialog#confirm-action #action').val('changeuser'); $('#confirm-form').append('<input type=hidden name=user_id value='+user.id+' />'); $('#overlay').show(); $('.dialog#confirm-action .confirm-action').hide(); $('.dialog#confirm-action p#changeuser-confirm') .show() .parent('div').show().trigger('click'); } }); }); $(document).on('click', 'a.manage-collaborators', function(e) { e.preventDefault(); var url = 'ajax.php/'+$(this).attr('href').substr(1); $.dialog(url, 201, function (xhr) { var resp = $.parseJSON(xhr.responseText); if (resp.user && !resp.users) resp.users.push(resp.user); // TODO: Process resp.users $('.tip_box').remove(); }, { onshow: function() { $('#user-search').focus(); } }); return false; }); // Post Reply or Note action buttons. $('a.post-response').click(function (e) { var $r = $('ul.tabs > li > a'+$(this).attr('href')+'-tab'); if ($r.length) { // Make sure ticket thread tab is visiable. var $t = $('ul#ticket_tabs > li > a#ticket-thread-tab'); if ($t.length && !$t.hasClass('active')) $t.trigger('click'); // Make the target response tab active. if (!$r.hasClass('active')) $r.trigger('click'); // Scroll to the response section. var $stop = $(document).height(); var $s = $('div#response_options'); if ($s.length) $stop = $s.offset().top-125 $('html, body').animate({scrollTop: $stop}, 'fast'); } return false; }); $('#show_ccs').click(function() { var show = $('#arrow-icon'); var collabs = $('a#managecollabs'); $('#ccs').slideToggle('fast', function(){ if ($(this).is(":hidden")) { collabs.hide(); show.removeClass('icon-caret-down').addClass('icon-caret-right'); } else { collabs.show(); show.removeClass('icon-caret-right').addClass('icon-caret-down'); } }); return false; }); $('.collaborators.noclick').click(function() { $('#show_ccs').trigger('click'); }); $('#collabselection').select2({ width: '350px', allowClear: true, sorter: function(data) { return data.filter(function (item) { return !item.selected; }); }, templateResult: function(e) { var $e = $( '<span><i class="icon-user"></i> ' + e.text + '</span>' ); return $e; } }).on("select2:unselecting", function(e) { if (!confirm(__("Are you sure you want to DISABLE the collaborator?"))) e.preventDefault(); }).on("select2:selecting", function(e) { if (!confirm(__("Are you sure you want to ENABLE the collaborator?"))) e.preventDefault(); }).on('change', function(e) { var id = e.currentTarget.id; var count = $('li.select2-selection__choice').length; var total = $('#' + id +' option').length; $('.' + id + '__count').html(count); $('.' + id + '__total').html(total); $('.' + id + '__total').parent().toggle((total)); }).on('select2:opening select2:closing', function(e) { $(this).parent().find('.select2-search__field').prop('disabled', true); }); }); function saveDraft() { redactor = $('#response').redactor('plugin.draft'); if (redactor.opts.draftId) $('#response').redactor('plugin.draft.saveDraft'); } </script>
Save