getId()) die('Invalid path'); //Make sure the staff is allowed to access the page. if(!@$thisstaff->isStaff() || !$ticket->checkStaffAccess($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(); //Auto-lock the ticket if locking is enabled.. If already locked by the user then it simply renews. if($cfg->getLockTime() && !$ticket->acquireLock($thisstaff->getId(),$cfg->getLockTime())) $warn.=__('Unable to obtain a lock on the ticket'); //Get the goodies. $dept = $ticket->getDept(); //Dept $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 $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('  %s', sprintf(__('Ticket is assigned to %s'), implode('/', $ticket->getAssignees()) )); if (!$errors['err']) { if ($lock && $lock->getStaffId()!=$thisstaff->getId()) $errors['err'] = sprintf(__('This ticket is currently locked by %s'), $lock->getStaffName()); elseif (($emailBanned=TicketFilter::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.='  '.__('Marked overdue!').''; ?>

getNumber()); ?>

canBanEmails() || $thisstaff->canEditTickets() || ($dept && $dept->isManager($thisstaff))) { ?> canEditTickets()) { ?> isOpen() && !$ticket->isAssigned() && $thisstaff->canAssignTickets() && $ticket->getDept()->isMember($thisstaff)) {?>
Información de contacto y ticket

Cliente: getName()); ?> (%d)', urlencode($user->getId()), __('Related Tickets'), $user->getNumTickets()); ?>
    getNumOpenTickets())) echo sprintf('
  • %s
  • ', $user->getId(), sprintf(_N('%d Open Ticket', '%d Open Tickets', $open), $open)); if(($closed=$user->getNumClosedTickets())) echo sprintf('
  • %s
  • ', $user->getId(), sprintf(_N('%d Closed Ticket', '%d Closed Tickets', $closed), $closed)); ?>
  • getOrgId()) { ?>
: getEmail(); ?>
: getStatus(); ?>
: getPriority(); ?>
: getDeptName()); ?>
: getCreateDate()); ?>
: getSource()); if($ticket->getIP()) echo '   ('.$ticket->getIP().')'; ?>
getDynamicData() as $entry) { ?> getAnswers() as $a) { ?>
getField()->get('label')); ?>: display(); ?>

isOpen()) { ?> isOpen()){ ?>
: isAssigned()) echo Format::htmlchars(implode('/', $ticket->getAssignees())); else echo '— '.__('Unassigned').' —'; ?>
: getStaff())) echo Format::htmlchars($staff->getName()); else echo '— '.__('Unknown').' —'; ?>
Plan de resolución: getName()):'— '.__('None').' —'; ?>
: getEstDueDate()); ?>
: getCloseDate()); ?>
Tipo de demanda : getHelpTopic()); ?>
: getLastMsgDate()); ?>
: getLastRespDate()); ?>

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 = array_filter($form->getAnswers(), function ($a) { return !in_array($a->getField()->get('name'), array('email','subject','name','priority')); }); if (count($answers) == 0) continue; ?>
display())) continue; ?>
getField()->get('label'); ?>:

INTERLOCUTOR: getSubject()); ?>

getThreadCount(); $tcount+= $ticket->getNumNotes(); ?>
'message','R'=>'response', 'N'=>'note'); /* -------- Messages & Responses & Notes (if inline)-------------*/ $types = array('M', 'R', 'N'); if(($thread=$ticket->getThreadEntries($types))) { foreach($thread as $entry) { ?> getThreadEntry($entry['id'])) && ($urls = $tentry->getAttachmentUrls()) && ($links = $tentry->getAttachmentsLinks())) {?>
SI"; elseif ($entry['thread_type']=='R') echo "Visible por el cliente: SI"; else echo "Visible por el cliente: NO"; ?>
"; else echo " "; ?> toHtml(); ?> "; else echo " "; ?>
getAttachmentsLinks(); ?>
'.__('Error fetching ticket thread - get technical help.').'

'; }?>
canPostReply()) { ?>
getName()), $ticket->getReplyToEmail()); $emailReply = (!isset($info['emailreply']) || $info['emailreply']); ?>
style="display:getNumCollaborators() ? 'inline-block': 'none'; ?>;" > getNumCollaborators()) $recipients = sprintf(__('Recipients (%d of %d)'), $ticket->getNumActiveCollaborators(), $ticket->getNumCollaborators()); echo sprintf('%s', $ticket->getId(), $recipients); ?>
  
isCannedResponseEnabled()) { ?>
getDefaultSignatureType()) { case 'dept': if ($dept && $dept->canAppendSignature()) $signature = $dept->getSignature(); break; case 'mine': $signature = $thisstaff->getSignature(); break; } ?>
getField('attachments')->render(); ?>
getDefaultSignatureType(); ?> getSignature()) {?> canAppendSignature()) { ?>

 

getField('attachments')->render(); ?>
 
 

canTransferTickets()) { ?>
 
'.__('Ticket is currently in %s department.').'', $ticket->getDeptName()); ?>
 

canAssignTickets()) { ?>
 
  isAssigned() && $ticket->isOpen()) { ?>
%s', $ticket->getAssignee())); ?>
isClosed()) { ?>
reopen it!'); ?>