summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-09-22 21:17:50 -0400
committerFrederic Guillot <fred@kanboard.net>2015-09-22 21:17:50 -0400
commit9523ff44c04bf915e8b819ba8502ea5d20127d17 (patch)
treedc8da8d21c7b87236d929c1f6986351c1fad440b /doc
parentb4fe1cd526e0227b49a399e02052beb1d35abd7f (diff)
Allow to extend automatic actions from plugins
Diffstat (limited to 'doc')
-rw-r--r--doc/plugins.markdown44
1 files changed, 41 insertions, 3 deletions
diff --git a/doc/plugins.markdown b/doc/plugins.markdown
index 1f04374f..1127a636 100644
--- a/doc/plugins.markdown
+++ b/doc/plugins.markdown
@@ -251,10 +251,47 @@ $this->on('session.bootstrap', function($container) {
- The first argument is the event name
- The second argument is a PHP callable function (closure or class method)
+Extend Automatic Actions
+------------------------
+
+To define a new automatic action with a plugin, you just need to call the method `extendActions()` from the class `Model\Action`, here an example:
+
+```php
+<?php
+
+namespace Plugin\AutomaticAction;
+
+use Core\Plugin\Base;
+
+class Plugin extends Base
+{
+ public function initialize()
+ {
+ $this->action->extendActions(
+ '\Plugin\AutomaticAction\Action\SendSlackMessage', // Use absolute namespace
+ t('Send a message to Slack when the task color change')
+ );
+ }
+}
+```
+
+- The first argument of the method `extendActions()` is the action class with the complete namespace path. **The namespace path must starts with a backslash** otherwise Kanboard will not be able to load your class.
+- The second argument is the description of your automatic action.
+
+The automatic action class must inherits from the class `Action\Base` and implements all abstract methods:
+
+- `getCompatibleEvents()`
+- `getActionRequiredParameters()`
+- `getEventRequiredParameters()`
+- `doAction(array $data)`
+- `hasRequiredCondition(array $data)`
+
+For more details you should take a look to existing automatic actions or this [plugin example](https://github.com/kanboard/plugin-example-automatic-action).
+
Extend ACL
----------
-Kanboard use a custom access list for privilege separations. Your extension can add new rules:
+Kanboard use an access list for privilege separations. Your extension can add new rules:
```php
$this->acl->extend('project_manager_acl', array('mycontroller' => '*'));
@@ -365,5 +402,6 @@ Examples of plugins
- [Budget planning](https://github.com/kanboard/plugin-budget)
- [User timetable](https://github.com/kanboard/plugin-timetable)
- [Subtask Forecast](https://github.com/kanboard/plugin-subtask-forecast)
-- [Theme plugin sample](https://github.com/kanboard/plugin-example-theme)
-- [CSS plugin sample](https://github.com/kanboard/plugin-example-css)
+- [Automatic Action example](https://github.com/kanboard/plugin-example-automatic-action)
+- [Theme plugin example](https://github.com/kanboard/plugin-example-theme)
+- [CSS plugin example](https://github.com/kanboard/plugin-example-css)