Plugin Registration Options

There are various plugin options you can change through the registration options. Some of the options only make sense for a particular plugin type, like full page or inline.

The following is a full set of possible options for a full page and settings plugin type.

/**
 * Plugin Registration
 */
.register('myPlugin', {
    route: '/myplugin',
    title: 'My Plugin',
    icon: 'icon-puzzle',
    interfaces: [
        {
            controller: 'myPluginCntl',
            template: 'my-plugin-main-main',
            type: 'fullPage',
            order: 300,
            topNav: true,
            // Define additional routes
            routes: [
                '/:page'
            ]
        },
        {
            controller: 'myPluginSettingsCntl',
            template: 'my-plugin-main-settings',
            type: 'settings',
            routes: [
                '/:config'
            ]
        }
    ]
});

This is a full set of options for an inline and settings plugin type:

/**
 * Plugin Registration
 */
.register('myPlugin', {
    route: '/myplugin',
    title: 'My Plugin',
    icon: 'icon-puzzle',
    interfaces: [
        {
            controller: 'myPluginCntl',
            template: 'my-plugin-main',
            type: 'inline',
            location: 'zn-plugin-data-subheader'
        },
        {
            controller: 'myPluginSettingsCntl',
            template: 'my-plugin-settings',
            type: 'settings',
            routes: [
                '/:config'
            ]
        }
    ]

The following table presents the registration options and their purpose.

Param Details
route The URI path to run the settings and/or full page interfaces of your plugin. If your route is /myplugin, then the full URI to your full page interface would be https://platform.zenginehq.com/workspaces/123/plugin/myplugin. The URI to your settings interface would be https://platform.zenginehq.com/workspaces/123/admin/plugin/myplugin.
title The tooltip text to appear on hover of your plugin icon.
pageTitle Heading text to appear below the app header and above your plugin template. If not provided, will use value of title. If false, won't prepend the header at all.
icon Icon to represent your plugin in the various places in the app. Icon will appear in the top nav if there's a full page interface, the right side nav of the record overlay if there's a record overlay interface, and in the workspace settings and tools section if there's a settings interface. The icon will be used in the marketplace, if the plugin is public. Must be an icon name seen here: https://platform.zenginehq.com/patterns/icons
interfaces A plugin can have one or more interfaces that allows you to build one plugin with different types, each interface object has a set of options, check out the table below for a complete list of inteface options

The following table presents the interfaces options and their purpose.

Param Details
routes Specify additional routes to sub pages of your plugin. Only applicable to full page and settings interfaces. Will appear under your main route param. Value should be defined as a JSON array. Ex: routes: ['/:id'] translates to https://platform.zenginehq.com/workspaces/123/plugin/myplugin/456, where 456 will be available as a $routeParam named id.
controller You can have multiple controllers in your plugin JavaScript. This param represents the main controller name. Note that all controller names are prefixed with your namepsace, like myPluginCntl.
template Similar to controller, your plugin HTML can have multiple templates. The template parameter corresponds to the template associated with the main controller. This value represents a template ID in the plugin HTML. The template ID must be prefixed with a dash-delimited version of your namespace, like my-plugin-main. This is in keeping with the AngularJS HTML attribute style.
type The type of your plugin, can be one of: fullPage, inline, settings, or recordOverlay. Checkout plugin types for details of each plugin type option.
topNav Whether to display your plugin icon in the app header.
order The order to display the plugin icon in the top nav (for full page interfaces) or the record overlay side nav (for record overlay interfaces), in relation to the other icons. A higher number moves the icon towards the left and a lower number towards the right.
location Location to load plugin if it's type is "inline". See plugin locations.

Plugin Locations

Location Details
zn-top-nav In the nav bar at the top of the app, next to the Notifications bell.
zn-plugin-data-subheader Above the data grid. Only available when there are records to display in the grid.
zn-plugin-panel-header Above the data panel.
zn-plugin-panel-footer Below the data panel.
zn-plugin-form-top Above the form in the data panel.
zn-plugin-form-bottom Below the form in the data panel.