From 9523ff44c04bf915e8b819ba8502ea5d20127d17 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Tue, 22 Sep 2015 21:17:50 -0400 Subject: Allow to extend automatic actions from plugins --- app/Model/Action.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'app/Model/Action.php') diff --git a/app/Model/Action.php b/app/Model/Action.php index 87058cce..57bd5b0d 100644 --- a/app/Model/Action.php +++ b/app/Model/Action.php @@ -30,6 +30,28 @@ class Action extends Base */ const TABLE_PARAMS = 'action_has_params'; + /** + * Extended actions + * + * @access private + * @var array + */ + private $actions = array(); + + /** + * Extend the list of default actions + * + * @access public + * @param string $className + * @param string $description + * @return Action + */ + public function extendActions($className, $description) + { + $this->actions[$className] = $description; + return $this; + } + /** * Return the name and description of available actions * @@ -62,6 +84,8 @@ class Action extends Base 'TaskAssignColorLink' => t('Change task color when using a specific task link'), ); + $values = array_merge($values, $this->actions); + asort($values); return $values; @@ -296,7 +320,7 @@ class Action extends Base */ public function load($name, $project_id, $event) { - $className = '\Action\\'.$name; + $className = $name{0} !== '\\' ? '\Action\\'.$name : $name; return new $className($this->container, $project_id, $event); } -- cgit v1.2.3