Most plugins need to be displayed somewhere in the interface. Either through a link somewhere in the navigation, or as a widget on a certain page. This is accomplished by having the plugin register actions.
Registering Actions
Actions allow plugins to make themselves available throughout Blesta. In some areas Blesta will simply render a link to the provided URI. In other area Blesta will attempt to render a widget. Let's look at an example.
<?php class MyPluginPlugin extends Plugin { ... public function getActions() { return array( array( 'action' => "nav_primary_client", // The action to tie into 'uri' => "plugin/my_plugin/client_main/index/", // The URI to fetch when the action is needed 'name' => "Foo Bar", // The name used by Blesta to display for the action (e.g. The name of the link), 'options' => null // Options required for this action if any (e.g. array('key' => "value")) ) ); } } ?>
The above example would register the link "Foo Bar" in the client interface's primary navigation. The link would point to /plugin/my_plugin/client_main/index/. The URI resolves to the ClientMain controller and index method. Here's what that might look like:
<?php class ClientMain extends MyPluginController public function index() { // Set some variables to the view $this->set("var1", "value1"); // Set variables all at once $var2 = "hello"; $var3 = "world"; $this->set(compact("var2", "var3")); // Automatically renders the view in /plugins/my_plugin/views/default/client_main.pdt } } ?>
Query Parameters Not Allowed
The URI should be only the path (relative to the base URI) that does not include any query or fragments. See https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Examples
Query Parameters v4.2
As of version 4.2 query parameters are allowed, however widgets that use query parameters cannot be reordered on the page.
Naming Convention
All Client controllers must start with client_ in their file name. The same is true for admins as well. All Admin controllers must start with admin_ in their file name. This tells Blesta which portal to render. Generic controllers (those not associated with a particular portal don't need any prefix.
Registering an action is not necessary
All plugins are accessible via their URI directly (i.e. http://mydomain/installpath/plugin/my_plugin/controller/action/). So you don't have to register an action to make your plugin accessible.
Available Actions
Below is a list of all actions available.
Action | Type | Description | Options |
---|---|---|---|
nav_primary_client | Link | Renders a link in the primary nav of the client interface |
|
nav_primary_staff | Link | Renders a link in the primary nav of the admin interface |
|
nav_secondary_staff | Link | Renders a link in the secondary nav of the admin interface under the given parent |
|
widget_client_home | Widget | Renders a widget on the client home page | N/A |
widget_staff_home | Widget | Renders a widget on the staff home page | N/A |
widget_staff_client | Widget | Renders a widget on the staff client profile page | N/A |
widget_staff_billing | Widget | Renders a widget on the staff billing page | N/A |
action_staff_client | Link | Renders a link in the "Account Actions" section of the staff client profile page |
|