summaryrefslogtreecommitdiff
path: root/app/Model/Action.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/Action.php')
-rw-r--r--app/Model/Action.php26
1 files changed, 25 insertions, 1 deletions
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
@@ -31,6 +31,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
*
* @access public
@@ -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);
}