Files
Kanboard-Prod/app/Controller/ExternalTaskCreationController.php
Julian Maurice 318b5414d2 Allow 'No assignee' for external task on single user public boards
'No assignee' option is already available in modification but not in
creation.
This patch fixes that by allowing the 'No assignee' option on external
task creation.
2018-08-12 10:28:59 -07:00

98 lines
4.0 KiB
PHP

<?php
namespace Kanboard\Controller;
use Kanboard\Core\ExternalTask\ExternalTaskException;
/**
* External Task Creation Controller
*
* @package Kanboard\Controller
* @author Frederic Guillot
*/
class ExternalTaskCreationController extends BaseController
{
public function step1(array $values = array(), $errorMessage = '')
{
$project = $this->getProject();
$providerName = $this->request->getStringParam('provider_name');
$taskProvider = $this->externalTaskManager->getProvider($providerName);
if (empty($values)) {
$values = array(
'swimlane_id' => $this->request->getIntegerParam('swimlane_id'),
'column_id' => $this->request->getIntegerParam('column_id'),
);
}
$this->response->html($this->template->render('external_task_creation/step1', array(
'project' => $project,
'values' => $values,
'error_message' => $errorMessage,
'provider_name' => $providerName,
'template' => $taskProvider->getImportFormTemplate(),
)));
}
public function step2(array $values = array(), array $errors = array())
{
$project = $this->getProject();
$providerName = $this->request->getStringParam('provider_name');
try {
$taskProvider = $this->externalTaskManager->getProvider($providerName);
if (empty($values)) {
$values = $this->request->getValues();
$externalTask = $taskProvider->fetch($taskProvider->buildTaskUri($values));
$values = $externalTask->getFormValues() + array(
'external_uri' => $externalTask->getUri(),
'external_provider' => $providerName,
'project_id' => $project['id'],
'swimlane_id' => $values['swimlane_id'],
'column_id' => $values['column_id'],
'color_id' => $this->colorModel->getDefaultColor(),
'owner_id' => $this->userSession->getId(),
);
} else {
$externalTask = $taskProvider->fetch($values['external_uri']);
}
$this->response->html($this->template->render('external_task_creation/step2', array(
'project' => $project,
'external_task' => $externalTask,
'provider_name' => $providerName,
'values' => $values,
'errors' => $errors,
'template' => $taskProvider->getCreationFormTemplate(),
'columns_list' => $this->columnModel->getList($project['id']),
'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id'], true, false, $project['is_private'] == 1),
'categories_list' => $this->categoryModel->getList($project['id']),
'swimlanes_list' => $this->swimlaneModel->getList($project['id'], false, true),
)));
} catch (ExternalTaskException $e) {
$this->step1($values, $e->getMessage());
}
}
public function step3()
{
$project = $this->getProject();
$values = $this->request->getValues();
list($valid, $errors) = $this->taskValidator->validateCreation($values);
if (! $valid) {
$this->step2($values, $errors);
} else if (! $this->helper->projectRole->canCreateTaskInColumn($project['id'], $values['column_id'])) {
$this->flash->failure(t('You cannot create tasks in this column.'));
$this->response->redirect($this->helper->url->to('BoardViewController', 'show', array('project_id' => $project['id'])), true);
} else {
$taskId = $this->taskCreationModel->create($values);
$this->flash->success(t('Task created successfully.'));
$this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('project_id' => $project['id'], 'task_id' => $taskId)), true);
}
}
}