Added the possibility to convert a subtask to a task

This commit is contained in:
Frederic Guillot
2016-05-17 22:08:57 -04:00
parent d8472d17bd
commit 996997a12d
7 changed files with 126 additions and 5 deletions

View File

@@ -0,0 +1,39 @@
<?php
namespace Kanboard\Controller;
/**
* Class SubtaskConverterController
*
* @package Kanboard\Controller
* @author Frederic Guillot
*/
class SubtaskConverterController extends BaseController
{
public function show()
{
$task = $this->getTask();
$subtask = $this->getSubtask();
$this->response->html($this->template->render('subtask_converter/show', array(
'subtask' => $subtask,
'task' => $task,
)));
}
public function save()
{
$project = $this->getProject();
$subtask = $this->getSubtask();
$task_id = $this->subtask->convertToTask($project['id'], $subtask['id']);
if ($task_id !== false) {
$this->flash->success(t('Subtask converted to task successfully.'));
} else {
$this->flash->failure(t('Unable to convert the subtask.'));
}
$this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $project['id'], 'task_id' => $task_id)), true);
}
}

View File

@@ -397,4 +397,31 @@ class Subtask extends Base
}
});
}
/**
* Convert a subtask to a task
*
* @access public
* @param integer $project_id
* @param integer $subtask_id
* @return integer
*/
public function convertToTask($project_id, $subtask_id)
{
$subtask = $this->getById($subtask_id);
$task_id = $this->taskCreation->create(array(
'project_id' => $project_id,
'title' => $subtask['title'],
'time_estimated' => $subtask['time_estimated'],
'time_spent' => $subtask['time_spent'],
'owner_id' => $subtask['user_id'],
));
if ($task_id !== false) {
$this->remove($subtask_id);
}
return $task_id;
}
}

View File

@@ -2,10 +2,16 @@
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-cog fa-fw"></i><i class="fa fa-caret-down"></i></a>
<ul>
<li>
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
<?= $this->url->link(t('Edit'), 'subtask', 'edit', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), false, 'popover') ?>
</li>
<li>
<i class="fa fa-trash-o" aria-hidden="true"></i>
<?= $this->url->link(t('Remove'), 'subtask', 'confirm', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), false, 'popover') ?>
</li>
<li>
<i class="fa fa-clone" aria-hidden="true"></i>
<?= $this->url->link(t('Convert to task'), 'SubtaskConverterController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), false, 'popover') ?>
</li>
</ul>
</div>

View File

@@ -3,15 +3,18 @@
</div>
<div class="confirm">
<p class="alert alert-info">
<div class="alert alert-info">
<?= t('Do you really want to remove this sub-task?') ?>
</p>
<p><strong><?= $this->text->e($subtask['title']) ?></strong></p>
<ul>
<li>
<strong><?= $this->text->e($subtask['title']) ?></strong>
</li>
</ul>
</div>
<div class="form-actions">
<?= $this->url->link(t('Yes'), 'subtask', 'remove', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), true, 'btn btn-red') ?>
<?= t('or') ?>
<?= $this->url->link(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'close-popover') ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,20 @@
<div class="page-header">
<h2><?= t('Convert sub-task to task') ?></h2>
</div>
<div class="confirm">
<div class="alert alert-info">
<?= t('Do you really want to convert this sub-task to a task?') ?>
<ul>
<li>
<strong><?= $this->text->e($subtask['title']) ?></strong>
</li>
</ul>
</div>
<div class="form-actions">
<?= $this->url->link(t('Yes'), 'SubtaskConverterController', 'save', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), true, 'btn btn-red') ?>
<?= t('or') ?>
<?= $this->url->link(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'close-popover') ?>
</div>
</div>