From 248c160534a524c059f8bc541bfc1ac7ed8238cf Mon Sep 17 00:00:00 2001
From: Manish Lad <manish@lad.eu.com>
Date: Fri, 3 Apr 2015 22:43:02 +0100
Subject: Ability to assign a task color based on an event.

Initially supported event: task moved to a column
---
 app/Action/TaskAssignColor.php | 83 ++++++++++++++++++++++++++++++++++++++++++
 app/Model/Action.php           |  1 +
 2 files changed, 84 insertions(+)
 create mode 100644 app/Action/TaskAssignColor.php

(limited to 'app')

diff --git a/app/Action/TaskAssignColor.php b/app/Action/TaskAssignColor.php
new file mode 100644
index 00000000..b1da17e9
--- /dev/null
+++ b/app/Action/TaskAssignColor.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Action;
+
+use Model\Task;
+
+/**
+ * Assign a color to a task
+ *
+ * @package action
+ */
+class TaskAssignColor extends Base
+{
+    /**
+     * Get the list of compatible events
+     *
+     * @access public
+     * @return array
+     */
+    public function getCompatibleEvents()
+    {
+        return array(
+            Task::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'),
+            'color_id' => t('Color'),
+        );
+    }
+
+    /**
+     * Get the required parameter for the event
+     *
+     * @access public
+     * @return string[]
+     */
+    public function getEventRequiredParameters()
+    {
+        return array(
+            'task_id',
+            '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'],
+            'color_id' => $this->getParam('color_id'),
+        );
+
+        return $this->taskModification->update($values);
+    }
+
+    /**
+     * 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['column_id'] == $this->getParam('column_id');
+    }
+}
diff --git a/app/Model/Action.php b/app/Model/Action.php
index 0e132d73..b30d89fa 100644
--- a/app/Model/Action.php
+++ b/app/Model/Action.php
@@ -41,6 +41,7 @@ class Action extends Base
         $values = array(
             'TaskClose' => t('Close a task'),
             'TaskOpen' => t('Open a task'),
+            'TaskAssignColor' => t('Assign a color to a task'),
             'TaskAssignSpecificUser' => t('Assign the task to a specific user'),
             'TaskAssignCurrentUser' => t('Assign the task to the person who does the action'),
             'TaskDuplicateAnotherProject' => t('Duplicate the task to another project'),
-- 
cgit v1.2.3