diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php index 68c47315c220d0a022c7e999aa41ac3f81f308db..989c44b5d5847ce141f35c39d8e7b875ebad0563 100644 --- a/include/ajax.tickets.php +++ b/include/ajax.tickets.php @@ -1304,7 +1304,7 @@ function refer($tid, $target=null) { include STAFFINC_DIR . 'ticket-tasks.inc.php'; } - function addTask($tid, $thread_id=NULL) { + function addTask($tid, $vars=array()) { global $thisstaff; if (!($ticket=Ticket::lookup($tid))) @@ -1313,9 +1313,6 @@ function refer($tid, $target=null) { if (!$ticket->checkStaffPerm($thisstaff, Task::PERM_CREATE)) Http::response(403, 'Permission denied'); - if ($thread_id && !($thread_entry=ThreadEntry::lookup($thread_id))) - Http::response(404, 'Unknown ticket thread'); - $info=$errors=array(); if ($_POST) { @@ -1361,9 +1358,6 @@ function refer($tid, $target=null) { __('Add New Task') ); - if ($thread_entry) - $vars['description'] = Format::htmlchars($thread_entry->getBody()); - include STAFFINC_DIR . 'templates/task.tmpl.php'; } diff --git a/include/class.thread.php b/include/class.thread.php index 069b87c33ed7ec74584d7f1821d3e8120cba6b5c..cb5912922eb9f5b3a2c95b075241e3bacc499c72 100644 --- a/include/class.thread.php +++ b/include/class.thread.php @@ -2994,6 +2994,10 @@ abstract class ThreadEntryAction { static::getId() ); } + + function getTicketsAPI() { + return new TicketsAjaxAPI(); + } } interface Threadable { diff --git a/include/class.thread_actions.php b/include/class.thread_actions.php index ed0ae57646dbcbaabb38eb7bf86ca9da13cadfe3..497eb92197242a3dd181a637a0e423b29f4793b6 100644 --- a/include/class.thread_actions.php +++ b/include/class.thread_actions.php @@ -447,12 +447,13 @@ var url = '%s'; var redirect = $(this).data('redirect'); $.dialog(url, [201], function(xhr, resp) { if (!!redirect) - $.pjax({url: redirect, container:'#pjax-container'}); + $.pjax({url: redirect, container: '#pjax-container'}); else - $.pjax({url: 'ajax.php/tickets/378/tasks', container: '#tasks_content', push: false}); + $.pjax({url: 'tickets.php?id=%d#tasks', container: '#pjax-container'}); }); JS - , $this->getAjaxUrl() + , $this->getAjaxUrl(), + $this->entry->getThread()->getObjectId() ); } @@ -460,11 +461,23 @@ JS switch ($_SERVER['REQUEST_METHOD']) { case 'GET': return $this->trigger__get(); + case 'POST': + return $this->trigger__post(); } } private function trigger__get() { - include STAFFINC_DIR . 'templates/task.tmpl.php'; + + $vars = array( + 'description' => Format::htmlchars($this->entry->getBody()) + ); + return $this->getTicketsAPI()->addTask($this->entry->getThread()->getObjectId(), + $vars); } + + private function trigger__post() { + return $this->getTicketsAPI()->addTask($this->entry->getThread()->getObjectId()); + } + } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_CreateTask'); diff --git a/scp/ajax.php b/scp/ajax.php index b08f547670be3503f4b862d43ee0ded6ad093b98..039af6b3e48d838eeabd2506dffbfc67c3055ed7 100644 --- a/scp/ajax.php +++ b/scp/ajax.php @@ -154,7 +154,6 @@ $dispatcher = patterns('', url_get('^(?P<tid>\d+)/canned-resp/(?P<cid>\w+).(?P<format>json|txt)', 'cannedResponse'), url_get('^(?P<tid>\d+)/status/(?P<status>\w+)(?:/(?P<sid>\d+))?$', 'changeTicketStatus'), url_post('^(?P<tid>\d+)/status$', 'setTicketStatus'), - url('^(?P<tid>\d+)/thread/(?P<thread_id>\d+)/create_task$', 'addTask'), url('^(?P<tid>\d+)/thread/(?P<thread_id>\d+)/(?P<action>\w+)$', 'triggerThreadAction'), url_get('^status/(?P<status>\w+)(?:/(?P<sid>\d+))?$', 'changeSelectedTicketsStatus'), url_post('^status/(?P<state>\w+)$', 'setSelectedTicketsStatus'),