Add two automatic actions for subtasks
- Action to create a subtask assigned to the creator and start the timer - Action to stop the timer of subtasks
This commit is contained in:
102
app/Action/StopSubtaskTimerMoveTaskColumn.php
Normal file
102
app/Action/StopSubtaskTimerMoveTaskColumn.php
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kanboard\Action;
|
||||||
|
|
||||||
|
use Kanboard\Model\TaskModel;
|
||||||
|
use Kanboard\Model\SubtaskModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the timer of all subtasks when moving a task to another column.
|
||||||
|
*
|
||||||
|
* @package Kanboard\Action
|
||||||
|
* @author Frederic Guillot
|
||||||
|
*/
|
||||||
|
class StopSubtaskTimerMoveTaskColumn extends Base
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get automatic action description
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDescription()
|
||||||
|
{
|
||||||
|
return t('Stop the timer of all subtasks when moving a task to another 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(
|
||||||
|
'column_id' => t('Column'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the required parameter for the event
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getEventRequiredParameters()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'task_id',
|
||||||
|
'task' => array(
|
||||||
|
'id',
|
||||||
|
'column_id',
|
||||||
|
'project_id',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the action (append to the task description).
|
||||||
|
*
|
||||||
|
* @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)
|
||||||
|
{
|
||||||
|
$subtasks = $this->subtaskModel->getAll($data['task']['id']);
|
||||||
|
$results = array();
|
||||||
|
|
||||||
|
foreach ($subtasks as $subtask) {
|
||||||
|
$results[] = $this->subtaskModel->update(array('id' => $subtask['id'], 'status' => SubtaskModel::STATUS_DONE));
|
||||||
|
$results[] = $this->subtaskTimeTrackingModel->logEndTime($subtask['id'], $subtask['user_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return !in_array(false, $results, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 $data['task']['column_id'] == $this->getParam('column_id');
|
||||||
|
}
|
||||||
|
}
|
||||||
107
app/Action/SubtaskTimerMoveTaskColumn.php
Normal file
107
app/Action/SubtaskTimerMoveTaskColumn.php
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kanboard\Action;
|
||||||
|
|
||||||
|
use Kanboard\Model\TaskModel;
|
||||||
|
use Kanboard\Model\SubtaskModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a subtask and activate the timer when moving a task to another column.
|
||||||
|
*
|
||||||
|
* @package Kanboard\Action
|
||||||
|
* @author Frederic Guillot
|
||||||
|
*/
|
||||||
|
class SubtaskTimerMoveTaskColumn extends Base
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get automatic action description
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDescription()
|
||||||
|
{
|
||||||
|
return t('Add a subtask and activate the timer when moving a task to another 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(
|
||||||
|
'column_id' => t('Column'),
|
||||||
|
'subtask' => t('Subtask Title'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the required parameter for the event
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getEventRequiredParameters()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'task_id',
|
||||||
|
'task' => array(
|
||||||
|
'id',
|
||||||
|
'column_id',
|
||||||
|
'project_id',
|
||||||
|
'creator_id',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the action (append to the task description).
|
||||||
|
*
|
||||||
|
* @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)
|
||||||
|
{
|
||||||
|
$subtaskID = $this->subtaskModel->create(array(
|
||||||
|
'title' => $this->getParam('subtask'),
|
||||||
|
'user_id' => $data['task']['creator_id'],
|
||||||
|
'task_id' => $data['task']['id'],
|
||||||
|
'status' => SubtaskModel::STATUS_INPROGRESS,
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($subtaskID !== false) {
|
||||||
|
return $this->subtaskTimeTrackingModel->toggleTimer($subtaskID, $data['task']['creator_id'], SubtaskModel::STATUS_INPROGRESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 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 $data['task']['column_id'] == $this->getParam('column_id');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
'Time Spent' => 'Zeitaufwand',
|
'Time Spent' => 'Zeitaufwand',
|
||||||
'External Link' => 'externer Link',
|
'External Link' => 'externer Link',
|
||||||
'This feature enable the iCal feed, RSS feed and the public board view.' => 'Diese Funktion aktiviert den iCal Feed, RSS Feed und die öffentliche Board-Ansicht',
|
'This feature enable the iCal feed, RSS feed and the public board view.' => 'Diese Funktion aktiviert den iCal Feed, RSS Feed und die öffentliche Board-Ansicht',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
'Time Spent' => 'Temps passé',
|
'Time Spent' => 'Temps passé',
|
||||||
'External Link' => 'Lien externe',
|
'External Link' => 'Lien externe',
|
||||||
'This feature enable the iCal feed, RSS feed and the public board view.' => 'Cette fonctionalité active l\'abonnement iCal, le flux RSS et la vue publique du tableau.',
|
'This feature enable the iCal feed, RSS feed and the public board view.' => 'Cette fonctionalité active l\'abonnement iCal, le flux RSS et la vue publique du tableau.',
|
||||||
|
'Stop the timer of all subtasks when moving a task to another column' => 'Arrêter le minuteur de toutes les sous-tâches lorsque la tâche est déplaçée dans une autre colonne',
|
||||||
|
'Subtask Title' => 'Titre de la sous-tâche',
|
||||||
|
'Add a subtask and activate the timer when moving a task to another column' => 'Ajouter une sous-tâche et activer le minuteur lorsque la tâche est déplaçé dans une autre colonne',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1015,12 +1015,6 @@ return array(
|
|||||||
'Add a new action' => 'Thêm một hành động mới',
|
'Add a new action' => 'Thêm một hành động mới',
|
||||||
'Import from another project' => 'Nhập khẩu từ một dự án khác',
|
'Import from another project' => 'Nhập khẩu từ một dự án khác',
|
||||||
'There is no action at the moment.' => 'Hiện tại không có hành động nào.',
|
'There is no action at the moment.' => 'Hiện tại không có hành động nào.',
|
||||||
// 'Example: https://example.kanboard.org/ (used to generate absolute URLs)' => '',
|
|
||||||
// 'Actions duplicated successfully.' => '',
|
|
||||||
// 'Unable to duplicate actions.' => '',
|
|
||||||
// 'Add a new action' => '',
|
|
||||||
// 'Import from another project' => '',
|
|
||||||
// 'There is no action at the moment.' => '',
|
|
||||||
'Import actions from another project' => 'Nhập khẩu các hành động từ một dự án khác',
|
'Import actions from another project' => 'Nhập khẩu các hành động từ một dự án khác',
|
||||||
'There is no available project.' => 'Không có dự án sẵn có.',
|
'There is no available project.' => 'Không có dự án sẵn có.',
|
||||||
'Local File' => 'Local File',
|
'Local File' => 'Local File',
|
||||||
@@ -1373,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1367,4 +1367,7 @@ return array(
|
|||||||
// 'Time Spent' => '',
|
// 'Time Spent' => '',
|
||||||
// 'External Link' => '',
|
// 'External Link' => '',
|
||||||
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
// 'This feature enable the iCal feed, RSS feed and the public board view.' => '',
|
||||||
|
// 'Stop the timer of all subtasks when moving a task to another column' => '',
|
||||||
|
// 'Subtask Title' => '',
|
||||||
|
// 'Add a subtask and activate the timer when moving a task to another column' => '',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ use Kanboard\Action\TaskCloseNoActivityColumn;
|
|||||||
use Kanboard\Action\TaskCloseNotMovedColumn;
|
use Kanboard\Action\TaskCloseNotMovedColumn;
|
||||||
use Kanboard\Action\TaskAssignColorSwimlane;
|
use Kanboard\Action\TaskAssignColorSwimlane;
|
||||||
use Kanboard\Action\TaskAssignPrioritySwimlane;
|
use Kanboard\Action\TaskAssignPrioritySwimlane;
|
||||||
|
use Kanboard\Action\SubtaskTimerMoveTaskColumn;
|
||||||
|
use Kanboard\Action\StopSubtaskTimerMoveTaskColumn;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action Provider
|
* Action Provider
|
||||||
@@ -96,6 +98,8 @@ class ActionProvider implements ServiceProviderInterface
|
|||||||
$container['actionManager']->register(new TaskAssignColorSwimlane($container));
|
$container['actionManager']->register(new TaskAssignColorSwimlane($container));
|
||||||
$container['actionManager']->register(new TaskAssignPrioritySwimlane($container));
|
$container['actionManager']->register(new TaskAssignPrioritySwimlane($container));
|
||||||
$container['actionManager']->register(new TaskAssignColorOnDueDate($container));
|
$container['actionManager']->register(new TaskAssignColorOnDueDate($container));
|
||||||
|
$container['actionManager']->register(new SubtaskTimerMoveTaskColumn($container));
|
||||||
|
$container['actionManager']->register(new StopSubtaskTimerMoveTaskColumn($container));
|
||||||
|
|
||||||
return $container;
|
return $container;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user