summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-05-07 18:15:32 -0400
committerFrederic Guillot <fred@kanboard.net>2016-05-07 18:15:32 -0400
commit714bdb0d024c952cafd7924212b862ae31d7f1d4 (patch)
treeea92eeed3741db65d8117e0fb427763b94f1416d
parent55ee906ba36cf66c3a390c98dde75e241de26e65 (diff)
Added method onStartup() for plugins
-rw-r--r--app/Core/Plugin/Base.php12
-rw-r--r--app/Core/Plugin/Loader.php5
-rw-r--r--doc/plugin-registration.markdown8
3 files changed, 16 insertions, 9 deletions
diff --git a/app/Core/Plugin/Base.php b/app/Core/Plugin/Base.php
index 381b8bb3..ba95e3de 100644
--- a/app/Core/Plugin/Base.php
+++ b/app/Core/Plugin/Base.php
@@ -62,7 +62,7 @@ abstract class Base extends \Kanboard\Core\Base
{
$container = $this->container;
- $this->container['dispatcher']->addListener($event, function () use ($container, $callback) {
+ $this->dispatcher->addListener($event, function () use ($container, $callback) {
call_user_func($callback, $container);
});
}
@@ -70,7 +70,7 @@ abstract class Base extends \Kanboard\Core\Base
/**
* Get plugin name
*
- * This method should be overrided by your Plugin class
+ * This method should be overridden by your Plugin class
*
* @access public
* @return string
@@ -83,7 +83,7 @@ abstract class Base extends \Kanboard\Core\Base
/**
* Get plugin description
*
- * This method should be overrided by your Plugin class
+ * This method should be overridden by your Plugin class
*
* @access public
* @return string
@@ -96,7 +96,7 @@ abstract class Base extends \Kanboard\Core\Base
/**
* Get plugin author
*
- * This method should be overrided by your Plugin class
+ * This method should be overridden by your Plugin class
*
* @access public
* @return string
@@ -109,7 +109,7 @@ abstract class Base extends \Kanboard\Core\Base
/**
* Get plugin version
*
- * This method should be overrided by your Plugin class
+ * This method should be overridden by your Plugin class
*
* @access public
* @return string
@@ -122,7 +122,7 @@ abstract class Base extends \Kanboard\Core\Base
/**
* Get plugin homepage
*
- * This method should be overrided by your Plugin class
+ * This method should be overridden by your Plugin class
*
* @access public
* @return string
diff --git a/app/Core/Plugin/Loader.php b/app/Core/Plugin/Loader.php
index 799024ad..3482b7ee 100644
--- a/app/Core/Plugin/Loader.php
+++ b/app/Core/Plugin/Loader.php
@@ -77,6 +77,11 @@ class Loader extends \Kanboard\Core\Base
Tool::buildDICHelpers($this->container, $instance->getHelpers());
$instance->initialize();
+
+ if (method_exists($instance, 'onStartup')) {
+ $this->dispatcher->addListener('app.bootstrap', array($instance, 'onStartup'));
+ }
+
$this->plugins[] = $instance;
}
diff --git a/doc/plugin-registration.markdown b/doc/plugin-registration.markdown
index 03b3c841..4b6e85c0 100644
--- a/doc/plugin-registration.markdown
+++ b/doc/plugin-registration.markdown
@@ -70,6 +70,7 @@ Available methods from `Kanboard\Core\Plugin\Base`:
- `getPluginDescription()`: Should return plugin description
- `getPluginHomepage()`: Should return plugin Homepage (link)
- `setContentSecurityPolicy(array $rules)`: Override default HTTP CSP rules
+- `onStartup()`: If present, this method is executed automatically when the event "app.bootstrap" is triggered
Your plugin registration class can also inherit from Kanboard\Core\Base, that way you can access all classes and methods of Kanboard easily.
@@ -85,9 +86,10 @@ Plugin Translations
Plugin can be translated in the same way as the rest of the application. You must load the translations yourself when the session is created:
```php
-$this->on('app.bootstrap', function($container) {
- Translator::load($container['language']->getCurrentLanguage(), __DIR__.'/Locale');
-});
+public function onStartup()
+{
+ Translator::load($this->language->getCurrentLanguage(), __DIR__.'/Locale');
+}
```
The translations must be stored in the file `plugins/Myplugin/Locale/xx_XX/translations.php` (replace xx_XX by the language code fr_FR, en_US...).