diff --git a/include/class.forms.php b/include/class.forms.php index 46d9600ccd6e0506cdcc5906a6b4ac82d05097df..135916269df01fbd118dabdcabcde286ef1a9c50 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -2257,6 +2257,11 @@ class AssigneeField extends ChoiceField { $id = key($id); } + if ($id[0] == 's') + return Staff::lookup(substr($id, 1)); + elseif ($id[0] == 't') + return Team::lookup(substr($id, 1)); + return $id; } @@ -3941,13 +3946,8 @@ class AssignmentForm extends Form { function getAssignee() { - if (!isset($this->_assignee)) { - $value = $this->getField('assignee')->getClean(); - if ($value[0] == 's') - $this->_assignee = Staff::lookup(substr($value, 1)); - elseif ($value[0] == 't') - $this->_assignee = Team::lookup(substr($value, 1)); - } + if (!isset($this->_assignee)) + $this->_assignee = $this->getField('assignee')->getClean(); return $this->_assignee; } @@ -3958,6 +3958,7 @@ class AssignmentForm extends Form { return array('dept_id' =>$dept); }; } + } class TransferForm extends Form { diff --git a/include/class.task.php b/include/class.task.php index 5f9206e8069ced89007d7cace68f54d35ec2d4fb..348e693932f62acef199d42ab493035399e286af 100644 --- a/include/class.task.php +++ b/include/class.task.php @@ -1129,9 +1129,11 @@ class Task extends TaskModel implements RestrictedAccess, Threadable { } static function create($vars=false) { - global $cfg; + global $thisstaff, $cfg; - if (!is_array($vars)) + if (!is_array($vars) + || !$thisstaff + || !$thisstaff->hasPerm(Task::PERM_CREATE, false)) return null; $task = parent::create(array( @@ -1142,15 +1144,14 @@ class Task extends TaskModel implements RestrictedAccess, Threadable { 'created' => new SqlFunction('NOW'), 'updated' => new SqlFunction('NOW'), )); - // Save internal fields. - if ($vars['internal_formdata']['staff_id']) - $task->staff_id = $vars['internal_formdata']['staff_id']; + if ($vars['internal_formdata']['dept_id']) $task->dept_id = $vars['internal_formdata']['dept_id']; if ($vars['internal_formdata']['duedate']) $task->duedate = $vars['internal_formdata']['duedate']; - $task->save(true); + if (!$task->save(true)) + return false; // Add dynamic data $task->addDynamicData($vars['default_formdata']); @@ -1158,6 +1159,23 @@ class Task extends TaskModel implements RestrictedAccess, Threadable { // Create a thread + message. $thread = TaskThread::create($task); $thread->addDescription($vars); + + + $task->logEvent('created', null, $thisstaff); + + // Get role for the dept + $role = $thisstaff->getRole($task->dept_id); + + // Assignment + if ($vars['internal_formdata']['assignee'] + // skip assignment if the user doesn't have perm. + && $role->hasPerm(Task::PERM_ASSIGN)) { + $_errors = array(); + $form = AssignmentForm::instantiate(array( + 'assignee' => $vars['internal_formdata']['assignee'])); + $task->assign($form, $_errors); + } + Signal::send('task.created', $task); return $task; @@ -1348,7 +1366,7 @@ extends AbstractForm { 'required' => true, 'layout' => new GridFluidCell(6), )), - 'staff_id' => new AssigneeField(array( + 'assignee' => new AssigneeField(array( 'id'=>2, 'label' => __('Assignee'), 'required' => false, diff --git a/include/staff/tasks.inc.php b/include/staff/tasks.inc.php index d908312bda49ebf96e3f6b16174cebcd99332f66..49cdd5e22ac9ece74a17b58a9c7f6d3a8c1ecaa9 100644 --- a/include/staff/tasks.inc.php +++ b/include/staff/tasks.inc.php @@ -168,7 +168,8 @@ default: // Apply requested pagination $page=($_GET['p'] && is_numeric($_GET['p']))?$_GET['p']:1; -$pageNav=new Pagenate($tasks->count(), $page, PAGE_LIMIT); +$count = $tasks->count(); +$pageNav=new Pagenate($count, $page, PAGE_LIMIT); $pageNav->setURL('tasks.php', $args); $tasks = $pageNav->paginate($tasks); @@ -262,7 +263,8 @@ return false;"> </div> <div class="pull-right flush-right"> <?php - Task::getAgentActions($thisstaff, array('status' => $status)); + if ($count) + echo Task::getAgentActions($thisstaff, array('status' => $status)); ?> </div> </div> diff --git a/include/staff/templates/task-view.tmpl.php b/include/staff/templates/task-view.tmpl.php index 1ca83b30ec8e12c28f7d7a408310b0f4e67e71ec..f1efebc3a655efd5b49a168061134dfb3dab01c4 100644 --- a/include/staff/templates/task-view.tmpl.php +++ b/include/staff/templates/task-view.tmpl.php @@ -394,11 +394,11 @@ else <div><?php echo __('Status');?> <span class="faded"> - </span> <select name="task_status"> - <option value="1" <?php + <option value="open" <?php echo $task->isOpen() ? 'selected="selected"': ''; ?>> <?php echo _('Open'); ?></option> - <option value="0" <?php + <option value="closed" <?php echo $task->isClosed() ? 'selected="selected"': ''; ?>> <?php echo _('Closed'); ?></option> @@ -449,11 +449,11 @@ else <div><?php echo __('Status');?> <span class="faded"> - </span> <select name="task_status"> - <option value="1" <?php + <option value="open" <?php echo $task->isOpen() ? 'selected="selected"': ''; ?>> <?php echo _('Open'); ?></option> - <option value="0" <?php + <option value="closed" <?php echo $task->isClosed() ? 'selected="selected"': ''; ?>> <?php echo _('Closed'); ?></option> diff --git a/include/staff/ticket-tasks.inc.php b/include/staff/ticket-tasks.inc.php index 9085ab239b3bf51c72d6141558dd53eddf4a4041..a7a6d12abee2864d1ab49f5709081ea37be65f35 100644 --- a/include/staff/ticket-tasks.inc.php +++ b/include/staff/ticket-tasks.inc.php @@ -40,7 +40,8 @@ $showing = $pageNav->showing().' '._N('task', 'tasks', $count); print __('Add New Task'); ?></a> <?php } - Task::getAgentActions($thisstaff, array('morelabel' => __('Options'))); + if ($count) + Task::getAgentActions($thisstaff, array('morelabel' => __('Options'))); ?> </div> <div class="clear"></div> @@ -162,7 +163,8 @@ $(function() { $.dialog(url, [201], function (xhr) { var tid = parseInt(xhr.responseText); if (tid) { - var url = 'ajax.php/tasks/'+tid+'/view'; + var url = 'ajax.php/tickets/'+<?php echo $ticket->getId(); + ?>+'/tasks/'+tid+'/view'; var $container = $('div#task_content'); $container.load(url, function () { $('.tip_box').remove(); diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php index 270f1e287cb6d43a5d25d4fe74ea9a38464459b8..73554b33a5ef91d3fb7ac7153335adcc5c9796ac 100644 --- a/include/staff/tickets.inc.php +++ b/include/staff/tickets.inc.php @@ -187,7 +187,8 @@ if (!$view_all_tickets) { // Apply requested pagination $page=($_GET['p'] && is_numeric($_GET['p']))?$_GET['p']:1; -$pageNav = new Pagenate($tickets->count(), $page, PAGE_LIMIT); +$count = $tickets->count(); +$pageNav = new Pagenate($count, $page, PAGE_LIMIT); $pageNav->setURL('tickets.php', $args); $tickets = $pageNav->paginate($tickets); @@ -367,15 +368,17 @@ return false;"> </div> <div class="pull-right flush-right"> <?php - if ($thisstaff->canManageTickets()) { - echo TicketStatus::status_options(); - } - if ($thisstaff->hasPerm(TicketModel::PERM_DELETE, false)) { ?> - <a id="tickets-delete" class="red button action-button tickets-action" - href="#tickets/status/delete"><i - class="icon-trash"></i> <?php echo __('Delete'); ?></a> - <?php - } ?> + if ($count) { + if ($thisstaff->canManageTickets()) { + echo TicketStatus::status_options(); + } + if ($thisstaff->hasPerm(TicketModel::PERM_DELETE, false)) { ?> + <a id="tickets-delete" class="red button action-button tickets-action" + href="#tickets/status/delete"><i + class="icon-trash"></i> <?php echo __('Delete'); ?></a> + <?php + } + }?> </div> </div> </div>