You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
776 lines
33 KiB
776 lines
33 KiB
<?php
|
|
if (!defined('OSTSCPINC')
|
|
|| !$thisstaff || !$task
|
|
|| !($role = $thisstaff->getRole($task->getDept())))
|
|
die('Invalid path');
|
|
|
|
global $cfg;
|
|
|
|
$id = $task->getId();
|
|
$dept = $task->getDept();
|
|
$thread = $task->getThread();
|
|
|
|
$iscloseable = $task->isCloseable();
|
|
$canClose = ($role->hasPerm(TaskModel::PERM_CLOSE) && $iscloseable === true);
|
|
$actions = array();
|
|
$object = $task->ticket;
|
|
|
|
if ($task->isOpen() && $role->hasPerm(Task::PERM_ASSIGN)) {
|
|
|
|
if ($task->getStaffId() != $thisstaff->getId()
|
|
&& (!$dept->assignMembersOnly()
|
|
|| $dept->isMember($thisstaff))) {
|
|
$actions += array(
|
|
'claim' => array(
|
|
'href' => sprintf('#tasks/%d/claim', $task->getId()),
|
|
'icon' => 'icon-user',
|
|
'label' => __('Claim'),
|
|
'redirect' => 'tasks.php'
|
|
));
|
|
}
|
|
|
|
$actions += array(
|
|
'assign/agents' => array(
|
|
'href' => sprintf('#tasks/%d/assign/agents', $task->getId()),
|
|
'icon' => 'icon-user',
|
|
'label' => __('Assign to Agent'),
|
|
'redirect' => 'tasks.php'
|
|
));
|
|
|
|
$actions += array(
|
|
'assign/teams' => array(
|
|
'href' => sprintf('#tasks/%d/assign/teams', $task->getId()),
|
|
'icon' => 'icon-user',
|
|
'label' => __('Assign to Team'),
|
|
'redirect' => 'tasks.php'
|
|
));
|
|
}
|
|
|
|
if ($role->hasPerm(Task::PERM_TRANSFER)) {
|
|
$actions += array(
|
|
'transfer' => array(
|
|
'href' => sprintf('#tasks/%d/transfer', $task->getId()),
|
|
'icon' => 'icon-share',
|
|
'label' => __('Transfer'),
|
|
'redirect' => 'tasks.php'
|
|
));
|
|
}
|
|
|
|
$actions += array(
|
|
'print' => array(
|
|
'href' => sprintf('tasks.php?id=%d&a=print', $task->getId()),
|
|
'class' => 'no-pjax',
|
|
'icon' => 'icon-print',
|
|
'label' => __('Print')
|
|
));
|
|
|
|
if ($role->hasPerm(Task::PERM_EDIT)) {
|
|
$actions += array(
|
|
'edit' => array(
|
|
'href' => sprintf('#tasks/%d/edit', $task->getId()),
|
|
'icon' => 'icon-edit',
|
|
'dialog' => '{"size":"large"}',
|
|
'label' => __('Edit')
|
|
));
|
|
}
|
|
|
|
if ($role->hasPerm(Task::PERM_DELETE)) {
|
|
$actions += array(
|
|
'delete' => array(
|
|
'href' => sprintf('#tasks/%d/delete', $task->getId()),
|
|
'icon' => 'icon-trash',
|
|
'class' => (strpos($_SERVER['REQUEST_URI'], 'tickets.php') !== false) ? 'danger' : 'red button',
|
|
'label' => __('Delete'),
|
|
'redirect' => 'tasks.php'
|
|
));
|
|
}
|
|
|
|
$info=($_POST && $errors)?Format::input($_POST):array();
|
|
$type = array('type' => 'viewed');
|
|
Signal::send('object.view', $task, $type);
|
|
|
|
if ($task->isOverdue())
|
|
$warn.=' <span class="Icon overdueTicket">'.__('Marked overdue!').'</span>';
|
|
|
|
?>
|
|
<div>
|
|
<div class="sticky bar">
|
|
<div class="content">
|
|
<div class="pull-left flush-left">
|
|
<?php
|
|
if ($ticket) { ?>
|
|
<strong>
|
|
<a id="all-ticket-tasks" href="#">
|
|
<?php
|
|
echo sprintf(__('All Tasks (%s)'),
|
|
$ticket->getNumTasks());
|
|
?></a>
|
|
/
|
|
<a id="reload-task" class="preview"
|
|
<?php
|
|
echo ' class="preview" ';
|
|
echo sprintf('data-preview="#tasks/%d/preview" ', $task->getId());
|
|
echo sprintf('href="#tickets/%s/tasks/%d/view" ',
|
|
$ticket->getId(), $task->getId()
|
|
);
|
|
?>><?php echo sprintf(__('Task #%s'), $task->getNumber()); ?></a>
|
|
</strong>
|
|
<?php
|
|
} else { ?>
|
|
<h2>
|
|
<a id="reload-task"
|
|
href="tasks.php?id=<?php echo $task->getId(); ?>"><i
|
|
class="icon-refresh"></i> <?php
|
|
echo sprintf(__('Task #%s'), $task->getNumber()); ?></a>
|
|
<?php if ($object) { ?>
|
|
/
|
|
<a class="preview"
|
|
href="tickets.php?id=<?php echo $object->getId(); ?>"
|
|
data-preview="#tickets/<?php echo $object->getId(); ?>/preview"
|
|
><?php echo sprintf(__('Ticket #%s'), $object->getNumber()); ?></a>
|
|
<?php } ?>
|
|
</h2>
|
|
<?php
|
|
}
|
|
?>
|
|
</div>
|
|
<div class="flush-right">
|
|
<?php
|
|
if ($ticket) { ?>
|
|
<a id="task-view"
|
|
target="_blank"
|
|
class="action-button"
|
|
href="tasks.php?id=<?php
|
|
echo $task->getId(); ?>"><i class="icon-share"></i> <?php
|
|
echo __('View Task'); ?></a>
|
|
<span
|
|
class="action-button"
|
|
data-dropdown="#action-dropdown-task-options">
|
|
<i class="icon-caret-down pull-right"></i>
|
|
<a class="task-action"
|
|
href="#task-options"><i
|
|
class="icon-reorder"></i> <?php
|
|
echo __('Actions'); ?></a>
|
|
</span>
|
|
<div id="action-dropdown-task-options"
|
|
class="action-dropdown anchor-right">
|
|
<ul>
|
|
|
|
<?php
|
|
if (!$task->isOpen()) { ?>
|
|
<li>
|
|
<a class="no-pjax task-action"
|
|
href="#tasks/<?php echo $task->getId(); ?>/reopen"><i
|
|
class="icon-fixed-width icon-undo"></i> <?php
|
|
echo __('Reopen');?> </a>
|
|
</li>
|
|
<?php
|
|
} elseif ($canClose) {
|
|
?>
|
|
<li>
|
|
<a class="no-pjax task-action"
|
|
href="#tasks/<?php echo $task->getId(); ?>/close"><i
|
|
class="icon-fixed-width icon-ok-circle"></i> <?php
|
|
echo __('Close');?> </a>
|
|
</li>
|
|
<?php
|
|
} ?>
|
|
<?php
|
|
foreach ($actions as $a => $action) { ?>
|
|
<li <?php if ($action['class']) echo sprintf("class='%s'", $action['class']); ?> >
|
|
<a <?php echo sprintf('class="%s"', ($a == 'print') ? $action['class'] : 'no-pjax task-action'); ?><?php
|
|
if ($action['dialog'])
|
|
echo sprintf("data-dialog-config='%s'", $action['dialog']);
|
|
if ($action['redirect'])
|
|
echo sprintf("data-redirect='%s'", $action['redirect']);
|
|
?>
|
|
href="<?php echo $action['href']; ?>"
|
|
<?php
|
|
if (isset($action['href']) &&
|
|
$action['href'][0] != '#') {
|
|
echo 'target="blank"';
|
|
} ?>
|
|
><i class="<?php
|
|
echo $action['icon'] ?: 'icon-tag'; ?>"></i> <?php
|
|
echo $action['label']; ?></a>
|
|
</li>
|
|
<?php
|
|
} ?>
|
|
</ul>
|
|
</div>
|
|
<?php
|
|
} else { ?>
|
|
<span
|
|
class="action-button"
|
|
data-dropdown="#action-dropdown-tasks-status">
|
|
<i class="icon-caret-down pull-right"></i>
|
|
<a class="tasks-status-action"
|
|
href="#statuses"
|
|
data-placement="bottom"
|
|
data-toggle="tooltip"
|
|
title="<?php echo __('Change Status'); ?>"><i
|
|
class="icon-flag"></i></a>
|
|
</span>
|
|
<div id="action-dropdown-tasks-status"
|
|
class="action-dropdown anchor-right">
|
|
<ul>
|
|
<?php
|
|
if ($task->isClosed()) { ?>
|
|
<li>
|
|
<a class="no-pjax task-action"
|
|
href="#tasks/<?php echo $task->getId(); ?>/reopen"><i
|
|
class="icon-fixed-width icon-undo"></i> <?php
|
|
echo __('Reopen');?> </a>
|
|
</li>
|
|
<?php
|
|
} elseif ($canClose) {
|
|
?>
|
|
<li>
|
|
<a class="no-pjax task-action"
|
|
href="#tasks/<?php echo $task->getId(); ?>/close"><i
|
|
class="icon-fixed-width icon-ok-circle"></i> <?php
|
|
echo __('Close');?> </a>
|
|
</li>
|
|
<?php
|
|
} ?>
|
|
</ul>
|
|
</div>
|
|
<?php
|
|
// Assign
|
|
unset($actions['claim'], $actions['assign/agents'], $actions['assign/teams']);
|
|
if ($task->isOpen() && $role->hasPerm(Task::PERM_ASSIGN)) {?>
|
|
<span class="action-button"
|
|
data-dropdown="#action-dropdown-assign"
|
|
data-placement="bottom"
|
|
data-toggle="tooltip"
|
|
title=" <?php echo $task->isAssigned() ? __('Reassign') : __('Assign'); ?>"
|
|
>
|
|
<i class="icon-caret-down pull-right"></i>
|
|
<a class="task-action" id="task-assign"
|
|
data-redirect="tasks.php"
|
|
href="#tasks/<?php echo $task->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 ($task->getStaffId() != $thisstaff->getId()
|
|
&& (!$dept->assignMembersOnly()
|
|
|| $dept->isMember($thisstaff))
|
|
) { ?>
|
|
<li><a class="no-pjax task-action"
|
|
data-redirect="tasks.php"
|
|
href="#tasks/<?php echo $task->getId(); ?>/claim"><i
|
|
class="icon-chevron-sign-down"></i> <?php echo __('Claim'); ?></a>
|
|
<?php
|
|
} ?>
|
|
<li><a class="no-pjax task-action"
|
|
data-redirect="tasks.php"
|
|
href="#tasks/<?php echo $task->getId(); ?>/assign/agents"><i
|
|
class="icon-user"></i> <?php echo __('Agent'); ?></a>
|
|
<li><a class="no-pjax task-action"
|
|
data-redirect="tasks.php"
|
|
href="#tasks/<?php echo $task->getId(); ?>/assign/teams"><i
|
|
class="icon-group"></i> <?php echo __('Team'); ?></a>
|
|
</ul>
|
|
</div>
|
|
<?php
|
|
} ?>
|
|
<?php
|
|
foreach ($actions as $action) {?>
|
|
<span class="action-button <?php echo $action['class'] ?: ''; ?>">
|
|
<a class="<?php echo ($action['class'] == 'no-pjax') ? '' : 'task-action'; ?>"
|
|
<?php
|
|
if ($action['dialog'])
|
|
echo sprintf("data-dialog-config='%s'", $action['dialog']);
|
|
if ($action['redirect'])
|
|
echo sprintf("data-redirect='%s'", $action['redirect']);
|
|
?>
|
|
id="<?php echo $id ?>"
|
|
href="<?php echo $action['href']; ?>"
|
|
data-placement="bottom"
|
|
data-toggle="tooltip"
|
|
title="<?php echo $action['label']; ?>">
|
|
<i class="<?php
|
|
echo $action['icon'] ?: 'icon-tag'; ?>"></i>
|
|
</a>
|
|
</span>
|
|
<?php
|
|
}
|
|
} ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="clear tixTitle has_bottom_border">
|
|
<h3>
|
|
<?php
|
|
$title = TaskForm::getInstance()->getField('title');
|
|
echo $title->display($task->getTitle());
|
|
?>
|
|
</h3>
|
|
</div>
|
|
<?php
|
|
if (!$ticket) { ?>
|
|
<table class="ticket_info" cellspacing="0" cellpadding="0" width="940" border="0">
|
|
<tr>
|
|
<td width="50%">
|
|
<table border="0" cellspacing="" cellpadding="4" width="100%">
|
|
<tr>
|
|
<th width="100"><?php echo __('Status');?>:</th>
|
|
<?php
|
|
if ($role->hasPerm(Task::PERM_CLOSE)) {
|
|
$state = $task->isClosed() ? 'reopen' : 'close'; ?>
|
|
<td>
|
|
<a class="task-action"
|
|
href=<?php echo sprintf('#tasks/%s/%s', $task->getId(), $state); ?>
|
|
data-placement="bottom"
|
|
data-toggle="tooltip"
|
|
title="<?php echo __('Change Status'); ?>"><?php echo $task->getStatus(); ?></a>
|
|
</td>
|
|
<?php } else { ?>
|
|
<td><?php echo $task->getStatus(); ?></td>
|
|
<?php } ?>
|
|
</tr>
|
|
<tr>
|
|
<th><?php echo __('Created');?>:</th>
|
|
<td><?php echo Format::datetime($task->getCreateDate()); ?></td>
|
|
</tr>
|
|
<?php
|
|
if($task->isOpen()){ ?>
|
|
<tr>
|
|
<th><?php echo __('Due Date');?>:</th>
|
|
<td>
|
|
<a class="inline-edit" data-placement="bottom"
|
|
href="#tasks/<?php echo $task->getId();
|
|
?>/field/duedate/edit">
|
|
<span id="field_duedate"><?php echo $task->duedate ?
|
|
(Format::datetime($task->duedate)) :
|
|
'—' . __('None') . '—' ; ?></span>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
}else { ?>
|
|
<tr>
|
|
<th><?php echo __('Completed');?>:</th>
|
|
<td><?php echo Format::datetime($task->getCloseDate()); ?></td>
|
|
</tr>
|
|
<?php
|
|
}
|
|
?>
|
|
</table>
|
|
</td>
|
|
<td width="50%" style="vertical-align:top">
|
|
<table cellspacing="0" cellpadding="4" width="100%" border="0">
|
|
|
|
<tr>
|
|
<th><?php echo __('Department');?>:</th>
|
|
<?php if ($role->hasPerm(Task::PERM_TRANSFER)) {?>
|
|
<td>
|
|
<a class="task-action" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Transfer'); ?>"
|
|
data-redirect="tasks.php?id=<?php echo $task->getId(); ?>"
|
|
href="#tasks/<?php echo $task->getId(); ?>/transfer"
|
|
onclick="javascript:
|
|
saveDraft();"
|
|
><?php echo Format::htmlchars($task->dept->getName()); ?>
|
|
</td>
|
|
<?php }else {?>
|
|
<td><?php echo Format::htmlchars($task->dept->getName()); ?></td>
|
|
<?php } ?>
|
|
</tr>
|
|
<?php
|
|
if ($task->isOpen()) { ?>
|
|
<tr>
|
|
<th width="100"><?php echo __('Assigned To');?>:</th>
|
|
<?php
|
|
if ($role->hasPerm(Task::PERM_ASSIGN)) {?>
|
|
<td>
|
|
<a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>"
|
|
href="#tasks/<?php echo $task->getId(); ?>/assign">
|
|
<span id="field_assign">
|
|
<?php if($task->isAssigned())
|
|
echo Format::htmlchars(implode('/', $task->getAssignees()));
|
|
else
|
|
echo '<span class="faded">— '.__('Unassigned').' —</span>';
|
|
?></span>
|
|
</a>
|
|
</td>
|
|
<?php
|
|
} else { ?>
|
|
<td>
|
|
<?php
|
|
if($task->isAssigned())
|
|
echo Format::htmlchars(implode('/', $task->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 = $task->getStaff()))
|
|
echo Format::htmlchars($staff->getName());
|
|
else
|
|
echo '<span class="faded">— '.__('Unknown').' —</span>';
|
|
?>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
} ?>
|
|
<tr>
|
|
<th><?php echo __('Collaborators');?>:</th>
|
|
<td>
|
|
<?php
|
|
$collaborators = __('Collaborators');
|
|
if ($task->getThread()->getNumCollaborators())
|
|
$collaborators = sprintf(__('Collaborators (%d)'),
|
|
$task->getThread()->getNumCollaborators());
|
|
|
|
echo sprintf('<span><a class="collaborators preview"
|
|
href="#thread/%d/collaborators/1"><span
|
|
id="t%d-collaborators">%s</span></a></span>',
|
|
$task->getThreadId(),
|
|
$task->getThreadId(),
|
|
$collaborators);
|
|
?>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<?php
|
|
$idx = 0;
|
|
foreach (DynamicFormEntry::forObject($task->getId(),
|
|
ObjectModel::OBJECT_TYPE_TASK) as $form) {
|
|
$form->addMissingFields();
|
|
$answers = $form->getAnswers()->exclude(Q::any(array(
|
|
'field__flags__hasbit' => DynamicFormField::FLAG_EXT_STORED,
|
|
'field__name__in' => array('title')
|
|
)));
|
|
$displayed = array();
|
|
foreach($answers as $a) {
|
|
if (!$a->getField()->isVisibleToStaff())
|
|
continue;
|
|
$displayed[] = $a;
|
|
}
|
|
if (count($displayed) == 0)
|
|
continue;
|
|
?>
|
|
<br>
|
|
<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>
|
|
<tr>
|
|
<td colspan="2">
|
|
<table cellspacing="0" cellpadding="4" width="100%" border="0">
|
|
<?php foreach($displayed as $a) {
|
|
$field = $a->getField();
|
|
$id = $a->getLocal('id');
|
|
$label = $a->getLocal('label');
|
|
$v = $a->display();
|
|
$class = (Format::striptags($v)) ? '' : 'class="faded"';
|
|
$clean = (Format::striptags($v)) ? $v : '—' . __('Empty') . '—';
|
|
$field = $a->getField();
|
|
$isFile = ($field instanceof FileUploadField);
|
|
?>
|
|
<tr>
|
|
<td width="200"><?php echo Format::htmlchars($label); ?>:</td>
|
|
<td>
|
|
<?php if ($role->hasPerm(Task::PERM_EDIT)
|
|
&& $field->isEditableToStaff()) {
|
|
$isEmpty = strpos($v, 'Empty');
|
|
if ($isFile && !$isEmpty) {
|
|
echo sprintf('<span id="field_%s" %s >%s</span><br>', $id,
|
|
$class,
|
|
$clean);
|
|
}
|
|
?>
|
|
<a class="inline-edit" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Update'); ?>"
|
|
href="#tasks/<?php echo $task->getId(); ?>/field/<?php echo $id; ?>/edit">
|
|
<?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>
|
|
<?php } else
|
|
echo $v;
|
|
?></td>
|
|
</tr>
|
|
<?php
|
|
} ?>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<?php
|
|
$idx++;
|
|
} ?>
|
|
<?php
|
|
} ?>
|
|
<div class="clear"></div>
|
|
<div id="task_thread_container">
|
|
<div id="task_thread_content" class="tab_content">
|
|
<?php
|
|
$task->getThread()->render(array('M', 'R', 'N'),
|
|
array(
|
|
'mode' => Thread::MODE_STAFF,
|
|
'container' => 'taskThread',
|
|
'sort' => $thisstaff->thread_view_order
|
|
)
|
|
);
|
|
?>
|
|
</div>
|
|
</div>
|
|
<div class="clear"></div>
|
|
<?php if($errors['err']) { ?>
|
|
<div id="msg_error"><?php echo $errors['err']; ?></div>
|
|
<?php }elseif($msg) { ?>
|
|
<div id="msg_notice"><?php echo $msg; ?></div>
|
|
<?php }elseif($warn) { ?>
|
|
<div id="msg_warning"><?php echo $warn; ?></div>
|
|
<?php }
|
|
|
|
if ($ticket)
|
|
$action = sprintf('#tickets/%d/tasks/%d',
|
|
$ticket->getId(), $task->getId());
|
|
else
|
|
$action = 'tasks.php?id='.$task->getId();
|
|
?>
|
|
<div id="task_response_options" class="<?php echo $ticket ? 'ticket_task_actions' : ''; ?> sticky bar stop actions">
|
|
<ul class="tabs">
|
|
<?php
|
|
if ($role->hasPerm(TaskModel::PERM_REPLY)) { ?>
|
|
<li class="active"><a href="#task_reply"><?php echo __('Post Update');?></a></li>
|
|
<li><a href="#task_note"><?php echo __('Post Internal Note');?></a></li>
|
|
<?php
|
|
}?>
|
|
</ul>
|
|
<?php
|
|
if ($role->hasPerm(TaskModel::PERM_REPLY)) { ?>
|
|
<form id="task_reply" class="tab_content spellcheck save"
|
|
action="<?php echo $action; ?>"
|
|
name="task_reply" method="post" enctype="multipart/form-data">
|
|
<?php csrf_token(); ?>
|
|
<input type="hidden" name="id" value="<?php echo $task->getId(); ?>">
|
|
<input type="hidden" name="a" value="postreply">
|
|
<input type="hidden" name="lockCode" value="<?php echo ($mylock) ? $mylock->getCode() : ''; ?>">
|
|
<span class="error"></span>
|
|
<table style="width:100%" border="0" cellspacing="0" cellpadding="3">
|
|
<tbody id="collab_sec" style="display:table-row-group">
|
|
<tr>
|
|
<td>
|
|
<input type='checkbox' value='1' name="emailcollab" id="emailcollab"
|
|
<?php echo ((!$info['emailcollab'] && !$errors) || isset($info['emailcollab']))?'checked="checked"':''; ?>
|
|
style="display:<?php echo $thread->getNumCollaborators() ? 'inline-block': 'none'; ?>;"
|
|
>
|
|
<?php
|
|
if ($thread->getNumCollaborators())
|
|
$recipients = sprintf(__('(%d of %d)'),
|
|
$thread->getNumActiveCollaborators(),
|
|
$thread->getNumCollaborators());
|
|
|
|
echo sprintf('<span><a class="collaborators preview"
|
|
href="#thread/%d/collaborators/1"> %s <span id="t%d-recipients">%s</span></a></span>',
|
|
$thread->getId(),
|
|
__('Collaborators'),
|
|
$thread->getId(),
|
|
$recipients);
|
|
?>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
<tbody id="update_sec">
|
|
<tr>
|
|
<td>
|
|
<div class="error"><?php echo $errors['response']; ?></div>
|
|
<input type="hidden" name="draft_id" value=""/>
|
|
<textarea name="response" id="task-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 update here.'); ?>"
|
|
rows="9" wrap="soft"
|
|
class="<?php if ($cfg->isRichTextEnabled()) echo 'richtext';
|
|
?> draft draft-delete fullscreen" <?php
|
|
list($draft, $attrs) = Draft::getDraftAndDataAttrs('task.response', $task->getId(), $info['task.response']);
|
|
echo $attrs; ?>><?php echo $draft ?: $info['task.response'];
|
|
?></textarea>
|
|
<div id="task_response_form_attachments" class="attachments">
|
|
<?php
|
|
if ($reply_attachments_form)
|
|
print $reply_attachments_form->getField('attachments')->render();
|
|
?>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div><?php echo __('Status');?>
|
|
<span class="faded"> - </span>
|
|
<select name="task:status">
|
|
<option value="open" <?php
|
|
echo $task->isOpen() ?
|
|
'selected="selected"': ''; ?>> <?php
|
|
echo __('Open'); ?></option>
|
|
<?php
|
|
if ($task->isClosed() || $canClose) {
|
|
?>
|
|
<option value="closed" <?php
|
|
echo $task->isClosed() ?
|
|
'selected="selected"': ''; ?>> <?php
|
|
echo __('Closed'); ?></option>
|
|
<?php
|
|
} ?>
|
|
</select>
|
|
<span class='error'><?php echo
|
|
$errors['task:status']; ?></span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p style="text-align:center;">
|
|
<input class="save pending" type="submit" value="<?php echo __('Post Update');?>">
|
|
<input type="reset" value="<?php echo __('Reset');?>">
|
|
</p>
|
|
</form>
|
|
<?php
|
|
} ?>
|
|
<form id="task_note"
|
|
action="<?php echo $action; ?>"
|
|
class="tab_content spellcheck save <?php
|
|
echo $role->hasPerm(TaskModel::PERM_REPLY) ? 'hidden' : ''; ?>"
|
|
name="task_note"
|
|
method="post" enctype="multipart/form-data">
|
|
<?php csrf_token(); ?>
|
|
<input type="hidden" name="id" value="<?php echo $task->getId(); ?>">
|
|
<input type="hidden" name="a" value="postnote">
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
|
<tr>
|
|
<td>
|
|
<div><span class='error'><?php echo $errors['note']; ?></span></div>
|
|
<textarea name="note" id="task-note" cols="80"
|
|
placeholder="<?php echo __('Internal Note details'); ?>"
|
|
rows="9" wrap="soft" data-draft-namespace="task.note"
|
|
data-draft-object-id="<?php echo $task->getId(); ?>"
|
|
class="richtext ifhtml draft draft-delete fullscreen"><?php
|
|
echo $info['note'];
|
|
?></textarea>
|
|
<div class="attachments">
|
|
<?php
|
|
if ($note_attachments_form)
|
|
print $note_attachments_form->getField('attachments')->render();
|
|
?>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div><?php echo __('Status');?>
|
|
<span class="faded"> - </span>
|
|
<select name="task:status">
|
|
<option value="open" <?php
|
|
echo $task->isOpen() ?
|
|
'selected="selected"': ''; ?>> <?php
|
|
echo __('Open'); ?></option>
|
|
<?php
|
|
if ($task->isClosed() || $canClose) {
|
|
?>
|
|
<option value="closed" <?php
|
|
echo $task->isClosed() ?
|
|
'selected="selected"': ''; ?>> <?php
|
|
echo __('Closed'); ?></option>
|
|
<?php
|
|
} ?>
|
|
</select>
|
|
<span class='error'><?php echo
|
|
$errors['task:status']; ?></span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p style="text-align:center;">
|
|
<input class="save pending" type="submit" value="<?php echo __('Post Note');?>">
|
|
<input type="reset" value="<?php echo __('Reset');?>">
|
|
</p>
|
|
</form>
|
|
</div>
|
|
<?php
|
|
echo $reply_attachments_form->getMedia();
|
|
?>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
$(document).off('.tasks-content');
|
|
$(document).on('click.tasks-content', '#all-ticket-tasks', function(e) {
|
|
e.preventDefault();
|
|
$('div#task_content').hide().empty();
|
|
$('div#tasks_content').show();
|
|
return false;
|
|
});
|
|
|
|
$(document).off('.task-action');
|
|
$(document).on('click.task-action', 'a.task-action', function(e) {
|
|
e.preventDefault();
|
|
var url = 'ajax.php/'
|
|
+$(this).attr('href').substr(1)
|
|
+'?_uid='+new Date().getTime();
|
|
var $options = $(this).data('dialogConfig');
|
|
var $redirect = $(this).data('redirect');
|
|
$.dialog(url, [201], function (xhr) {
|
|
if (!!$redirect)
|
|
window.location.href = $redirect;
|
|
else
|
|
$.pjax.reload('#pjax-container');
|
|
}, $options);
|
|
|
|
return false;
|
|
});
|
|
|
|
$(document).off('.tf');
|
|
$(document).on('submit.tf', '.ticket_task_actions form', function(e) {
|
|
e.preventDefault();
|
|
var $form = $(this);
|
|
var $container = $('div#task_content');
|
|
$.ajax({
|
|
type: $form.attr('method'),
|
|
url: 'ajax.php/'+$form.attr('action').substr(1),
|
|
data: $form.serialize(),
|
|
cache: false,
|
|
success: function(resp, status, xhr) {
|
|
$container.html(resp);
|
|
$('#msg_notice, #msg_error',$container)
|
|
.delay(5000)
|
|
.slideUp();
|
|
}
|
|
})
|
|
.done(function() {
|
|
$('#loading').hide();
|
|
$.toggleOverlay(false);
|
|
})
|
|
.fail(function() { });
|
|
});
|
|
|
|
<?php
|
|
if ($ticket) { ?>
|
|
$('#ticket-tasks-count').html(<?php echo $ticket->getNumTasks(); ?>);
|
|
<?php
|
|
} ?>
|
|
});
|
|
</script>
|