summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Controller/BoardPopover.php1
-rw-r--r--app/Controller/Subtask.php1
-rw-r--r--app/Controller/SubtaskStatus.php47
-rw-r--r--app/Controller/Timer.php34
-rw-r--r--app/Helper/Subtask.php8
-rw-r--r--app/ServiceProvider/AuthenticationProvider.php1
-rw-r--r--app/Template/subtask/table.php6
7 files changed, 53 insertions, 45 deletions
diff --git a/app/Controller/BoardPopover.php b/app/Controller/BoardPopover.php
index a214439a..f2b39d8d 100644
--- a/app/Controller/BoardPopover.php
+++ b/app/Controller/BoardPopover.php
@@ -95,7 +95,6 @@ class BoardPopover extends Base
$this->response->html($this->template->render('file/screenshot', array(
'task' => $task,
- 'redirect' => 'board',
)));
}
diff --git a/app/Controller/Subtask.php b/app/Controller/Subtask.php
index f8798906..57d1987d 100644
--- a/app/Controller/Subtask.php
+++ b/app/Controller/Subtask.php
@@ -23,7 +23,6 @@ class Subtask extends Base
'project' => $this->getProject(),
'subtasks' => $this->subtask->getAll($task['id']),
'editable' => true,
- 'redirect' => 'subtask',
)));
}
diff --git a/app/Controller/SubtaskStatus.php b/app/Controller/SubtaskStatus.php
index efe8a974..ef0ec081 100644
--- a/app/Controller/SubtaskStatus.php
+++ b/app/Controller/SubtaskStatus.php
@@ -21,8 +21,51 @@ class SubtaskStatus extends Base
$subtask = $this->getSubtask();
$status = $this->subtask->toggleStatus($subtask['id']);
- $subtask['status'] = $status;
- $this->response->html($this->helper->subtask->toggleStatus($subtask, $task['project_id']));
+ if ($this->request->getIntegerParam('refresh-table') === 0) {
+ $subtask['status'] = $status;
+ $html = $this->helper->subtask->toggleStatus($subtask, $task['project_id']);
+ } else {
+ $html = $this->renderTable($task);
+ }
+
+ $this->response->html($html);
+ }
+
+ /**
+ * Start/stop timer for subtasks
+ *
+ * @access public
+ */
+ public function timer()
+ {
+ $task = $this->getTask();
+ $subtask_id = $this->request->getIntegerParam('subtask_id');
+ $timer = $this->request->getStringParam('timer');
+
+ if ($timer === 'start') {
+ $this->subtaskTimeTracking->logStartTime($subtask_id, $this->userSession->getId());
+ } elseif ($timer === 'stop') {
+ $this->subtaskTimeTracking->logEndTime($subtask_id, $this->userSession->getId());
+ $this->subtaskTimeTracking->updateTaskTimeTracking($task['id']);
+ }
+
+ $this->response->html($this->renderTable($task));
+ }
+
+ /**
+ * Render table
+ *
+ * @access private
+ * @param array $task
+ * @return string
+ */
+ private function renderTable(array $task)
+ {
+ return $this->template->render('subtask/table', array(
+ 'task' => $task,
+ 'subtasks' => $this->subtask->getAll($task['id']),
+ 'editable' => true,
+ ));
}
}
diff --git a/app/Controller/Timer.php b/app/Controller/Timer.php
deleted file mode 100644
index 0267fcdd..00000000
--- a/app/Controller/Timer.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Kanboard\Controller;
-
-/**
- * Time Tracking controller
- *
- * @package controller
- * @author Frederic Guillot
- */
-class Timer extends Base
-{
- /**
- * Start/stop timer for subtasks
- *
- * @access public
- */
- public function subtask()
- {
- $project_id = $this->request->getIntegerParam('project_id');
- $task_id = $this->request->getIntegerParam('task_id');
- $subtask_id = $this->request->getIntegerParam('subtask_id');
- $timer = $this->request->getStringParam('timer');
-
- if ($timer === 'start') {
- $this->subtaskTimeTracking->logStartTime($subtask_id, $this->userSession->getId());
- } elseif ($timer === 'stop') {
- $this->subtaskTimeTracking->logEndTime($subtask_id, $this->userSession->getId());
- $this->subtaskTimeTracking->updateTaskTimeTracking($task_id);
- }
-
- $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $project_id, 'task_id' => $task_id)).'#subtasks');
- }
-}
diff --git a/app/Helper/Subtask.php b/app/Helper/Subtask.php
index 38074b78..1784a2bf 100644
--- a/app/Helper/Subtask.php
+++ b/app/Helper/Subtask.php
@@ -29,21 +29,23 @@ class Subtask extends \Kanboard\Core\Base
* @access public
* @param array $subtask
* @param integer $project_id
+ * @param boolean $refresh_table
* @return string
*/
- public function toggleStatus(array $subtask, $project_id)
+ public function toggleStatus(array $subtask, $project_id, $refresh_table = false)
{
if (! $this->helper->user->hasProjectAccess('subtask', 'edit', $project_id)) {
return $this->getTitle($subtask);
}
- $params = array('task_id' => $subtask['task_id'], 'subtask_id' => $subtask['id']);
+ $params = array('task_id' => $subtask['task_id'], 'subtask_id' => $subtask['id'], 'refresh-table' => (int) $refresh_table);
if ($subtask['status'] == 0 && isset($this->sessionStorage->hasSubtaskInProgress) && $this->sessionStorage->hasSubtaskInProgress) {
return $this->helper->url->link($this->getTitle($subtask), 'SubtaskRestriction', 'popover', $params, false, 'popover');
}
- return $this->helper->url->link($this->getTitle($subtask), 'SubtaskStatus', 'change', $params, false, 'ajax-replace');
+ $class = 'subtask-toggle-status '.($refresh_table ? 'subtask-refresh-table' : '');
+ return $this->helper->url->link($this->getTitle($subtask), 'SubtaskStatus', 'change', $params, false, $class);
}
public function selectTitle(array $values, array $errors = array(), array $attributes = array())
diff --git a/app/ServiceProvider/AuthenticationProvider.php b/app/ServiceProvider/AuthenticationProvider.php
index 4196a470..9b5cdbe9 100644
--- a/app/ServiceProvider/AuthenticationProvider.php
+++ b/app/ServiceProvider/AuthenticationProvider.php
@@ -97,7 +97,6 @@ class AuthenticationProvider implements ServiceProviderInterface
$acl->add('TaskExternalLink', array('show'), Role::PROJECT_VIEWER);
$acl->add('Taskmodification', '*', Role::PROJECT_MEMBER);
$acl->add('Taskstatus', '*', Role::PROJECT_MEMBER);
- $acl->add('Timer', '*', Role::PROJECT_MEMBER);
$acl->add('UserHelper', array('mention'), Role::PROJECT_MEMBER);
return $acl;
diff --git a/app/Template/subtask/table.php b/app/Template/subtask/table.php
index 13f7ada6..fea3ae2b 100644
--- a/app/Template/subtask/table.php
+++ b/app/Template/subtask/table.php
@@ -16,7 +16,7 @@
<tr>
<td>
<?php if ($editable): ?>
- <?= $this->subtask->toggleStatus($subtask, $task['project_id']) ?>
+ <?= $this->subtask->toggleStatus($subtask, $task['project_id'], true) ?>
<?php else: ?>
<?= $this->subtask->getTitle($subtask) ?>
<?php endif ?>
@@ -41,11 +41,11 @@
<li>
<?php if ($subtask['is_timer_started']): ?>
<i class="fa fa-pause"></i>
- <?= $this->url->link(t('Stop timer'), 'timer', 'subtask', array('timer' => 'stop', 'project_id' => $task['project_id'], 'task_id' => $subtask['task_id'], 'subtask_id' => $subtask['id'])) ?>
+ <?= $this->url->link(t('Stop timer'), 'SubtaskStatus', 'timer', array('timer' => 'stop', 'project_id' => $task['project_id'], 'task_id' => $subtask['task_id'], 'subtask_id' => $subtask['id']), false, 'subtask-toggle-timer') ?>
(<?= $this->dt->age($subtask['timer_start_date']) ?>)
<?php else: ?>
<i class="fa fa-play-circle-o"></i>
- <?= $this->url->link(t('Start timer'), 'timer', 'subtask', array('timer' => 'start', 'project_id' => $task['project_id'], 'task_id' => $subtask['task_id'], 'subtask_id' => $subtask['id'])) ?>
+ <?= $this->url->link(t('Start timer'), 'SubtaskStatus', 'timer', array('timer' => 'start', 'project_id' => $task['project_id'], 'task_id' => $subtask['task_id'], 'subtask_id' => $subtask['id']), false, 'subtask-toggle-timer') ?>
<?php endif ?>
</li>
<?php endif ?>