Skip to content
Snippets Groups Projects
ajax.tickets.php 41.1 KiB
Newer Older
    function addTask($tid) {
        global $thisstaff;

        if (!($ticket=Ticket::lookup($tid)))
            Http::response(404, 'Unknown ticket');

        if (!$ticket->checkStaffPerm($thisstaff, Task::PERM_CREATE))
            Http::response(403, 'Permission denied');

        $info=$errors=array();

        if ($_POST) {
            Draft::deleteForNamespace(
                    sprintf('ticket.%d.task', $ticket->getId()),
                    $thisstaff->getId());
            // Default form
Peter Rotich's avatar
Peter Rotich committed
            $form = TaskForm::getInstance();
            $form->setSource($_POST);
            // Internal form
            $iform = TaskForm::getInternalForm($_POST);
            $isvalid = true;
            if (!$iform->isValid())
                $isvalid = false;
            if (!$form->isValid())
                $isvalid = false;

            if ($isvalid) {
                $vars = $_POST;
                $vars['object_id'] = $ticket->getId();
                $vars['object_type'] = ObjectModel::OBJECT_TYPE_TICKET;
                $vars['default_formdata'] = $form->getClean();
                $vars['internal_formdata'] = $iform->getClean();
                $desc = $form->getField('description');
                if ($desc
                        && $desc->isAttachmentsEnabled()
                        && ($attachments=$desc->getWidget()->getAttachments()))
                    $vars['cannedattachments'] = $attachments->getClean();
                $vars['staffId'] = $thisstaff->getId();
                $vars['poster'] = $thisstaff;
                $vars['ip_address'] = $_SERVER['REMOTE_ADDR'];
                if (($task=Task::create($vars, $errors)))
                    Http::response(201, $task->getId());
            }

            $info['error'] = __('Error adding task - try again!');
        }

        $info['action'] = sprintf('#tickets/%d/add-task', $ticket->getId());
        $info['title'] = sprintf(
                __( 'Ticket #%1$s: %2$s'),
                $ticket->getNumber(),
                _('Add New Task')
                );

         include STAFFINC_DIR . 'templates/task.tmpl.php';
    }
Peter Rotich's avatar
Peter Rotich committed

    function task($tid, $id) {
        global $thisstaff;

        if (!($ticket=Ticket::lookup($tid))
                || !$ticket->checkStaffPerm($thisstaff))
            Http::response(404, 'Unknown ticket');

        // Lookup task and check access
        if (!($task=Task::lookup($id))
                || !$task->checkStaffPerm($thisstaff))
            Http::response(404, 'Unknown task');

Peter Rotich's avatar
Peter Rotich committed
        $info = $errors = array();
        $note_attachments_form = new SimpleForm(array(
Peter Rotich's avatar
Peter Rotich committed
            'attachments' => new FileUploadField(array('id'=>'attach',
Peter Rotich's avatar
Peter Rotich committed
                'name'=>'attach:note',
                'configuration' => array('extensions'=>'')))
        ));

        $reply_attachments_form = new SimpleForm(array(
            'attachments' => new FileUploadField(array('id'=>'attach',
                'name'=>'attach:reply',
                'configuration' => array('extensions'=>'')))
        ));
Peter Rotich's avatar
Peter Rotich committed

        if ($_POST) {
Peter Rotich's avatar
Peter Rotich committed
            $vars = $_POST;
Peter Rotich's avatar
Peter Rotich committed
            switch ($_POST['a']) {
            case 'postnote':
Peter Rotich's avatar
Peter Rotich committed
                $attachments = $note_attachments_form->getField('attachments')->getClean();
Peter Rotich's avatar
Peter Rotich committed
                $vars['cannedattachments'] = array_merge(
                    $vars['cannedattachments'] ?: array(), $attachments);
Peter Rotich's avatar
Peter Rotich committed
                if (($note=$task->postNote($vars, $errors, $thisstaff))) {
Peter Rotich's avatar
Peter Rotich committed
                    $msg=__('Note posted successfully');
                    // Clear attachment list
Peter Rotich's avatar
Peter Rotich committed
                    $note_attachments_form->setSource(array());
                    $note_attachments_form->getField('attachments')->reset();
Peter Rotich's avatar
Peter Rotich committed
                    Draft::deleteForNamespace('task.note.'.$task->getId(),
                            $thisstaff->getId());
                } else {
Peter Rotich's avatar
Peter Rotich committed
                    if (!$errors['err'])
Peter Rotich's avatar
Peter Rotich committed
                        $errors['err'] = __('Unable to post the note - missing or invalid data.');
                }
                break;
Peter Rotich's avatar
Peter Rotich committed
            case 'postreply':
                $attachments = $reply_attachments_form->getField('attachments')->getClean();
                $vars['cannedattachments'] = array_merge(
                    $vars['cannedattachments'] ?: array(), $attachments);
                if (($response=$task->postReply($vars, $errors))) {
                    $msg=__('Update posted successfully');
                    // Clear attachment list
                    $reply_attachments_form->setSource(array());
                    $reply_attachments_form->getField('attachments')->reset();
                    Draft::deleteForNamespace('task.reply.'.$task->getId(),
                            $thisstaff->getId());
                } else {
                    if (!$errors['err'])
                        $errors['err'] = __('Unable to post the reply - missing or invalid data.');
                }
                break;
Peter Rotich's avatar
Peter Rotich committed
            default:
                $errors['err'] = __('Unknown action');
            }
        }

        include STAFFINC_DIR . 'templates/task-view.tmpl.php';
    }