Add automatic action to set the due date when the task is moved away from a specific column

This commit is contained in:
colttt 2022-01-29 06:22:24 +01:00 committed by GitHub
parent d0347fa30e
commit a70cf9ab71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 101 additions and 1 deletions

View File

@ -0,0 +1,97 @@
<?php
namespace Kanboard\Action;
use Kanboard\Model\TaskModel;
/**
* Set the due date when task move away from certain column
*
* @package Kanboard\Action
* @author Stefan Krüger
*/
class TaskAssignDueDateOnMoveColumn extends Base
{
/**
* Get automatic action description
*
* @access public
* @return string
*/
public function getDescription()
{
return t('Automatically set the due date when the task is moved away from a specific column');
}
/**
* Get the list of compatible events
*
* @access public
* @return array
*/
public function getCompatibleEvents()
{
return array(
TaskModel::EVENT_MOVE_COLUMN,
);
}
/**
* Get the required parameter for the action (defined by the user)
*
* @access public
* @return array
*/
public function getActionRequiredParameters()
{
return array(
'duration' => t('Duration in days'),
'column_id' => t('Column'),
);
}
/**
* Get the required parameter for the event
*
* @access public
* @return string[]
*/
public function getEventRequiredParameters()
{
return array(
'task_id',
'task' => array(
'project_id',
),
'src_column_id',
);
}
/**
* Execute the action (set the task color)
*
* @access public
* @param array $data Event data dictionary
* @return bool True if the action was executed or false when not executed
*/
public function doAction(array $data)
{
$values = array(
'id' => $data['task_id'],
'date_due' => strtotime('+'.$this->getParam('duration').'days'),
);
return $this->taskModificationModel->update($values, false);
}
/**
* Check if the event data meet the action condition
*
* @access public
* @param array $data Event data dictionary
* @return bool
*/
public function hasRequiredCondition(array $data)
{
return true;
}
}

View File

@ -51,6 +51,8 @@ use Kanboard\Action\TaskAssignPrioritySwimlane;
use Kanboard\Action\SubtaskTimerMoveTaskColumn;
use Kanboard\Action\StopSubtaskTimerMoveTaskColumn;
use Kanboard\Action\TaskMoveColumnOnStartDate;
use Kanboard\Action\TaskAssignDueDateOnMoveColumn;
/**
* Action Provider
@ -116,7 +118,8 @@ class ActionProvider implements ServiceProviderInterface
$container['actionManager']->register(new StopSubtaskTimerMoveTaskColumn($container));
$container['actionManager']->register(new TaskMoveColumnOnStartDate($container));
$container['actionManager']->register(new TaskAssignColorOnStartDate($container));
$container['actionManager']->register(new TaskAssignDueDateOnMoveColumn($container));
return $container;
}
}