manifest.json

任何模块都需要 manifest.json 文件。
该文件必须位于模块的主目录中(例如,zabbix/ui/modules/module_name/manifest.json)。

manifest.json 至少应指定以下字段:

{
    "manifest_version": 2.0,
    "id": "my_ip_address",
    "name": "My IP Address",
    "namespace": "MyIPAddress",
    "version": "1.0"
}

manifest.json 支持的参数(点击参数名称查看详细说明):

Parameter Description Required
manifest_version 模块的清单版本。 Yes
id 唯一的模块 ID。
name 将在“管理”部分中显示的模块名称。
namespace 模块类的 PHP 命名空间。
version 模块版本。
type 模块类型。对于小组件,必须设置为 widget。 Yes for widgets, otherwise no
widget 小组件配置。仅用于小组件。
actions 要向模块注册的操作。
assets 要包含的 CSS 样式和 JavaScript 文件。 No
author 模块作者。
config 自定义模块选项的默认值。
description 模块描述。
url 指向模块描述的链接。

manifest_version

模块的清单版本。 目前支持的版本为 2.0。

类型: Double

示例:

"manifest_version": 2.0

id

模块 ID。
必须唯一。
为避免将来的命名冲突,建议为模块使用前缀(作者或公司名称,或其他名称)。
例如,如果模块是用于课程的示例,且模块名称为“My module”,则 ID 将为“example_my_module”。

类型:String

示例:

"id": "example_my_module"

name

将在管理部分中显示的模块名称。

类型:字符串

示例:

“name”:“我的模块”

命名空间

模块类的 PHP 命名空间。

类型:字符串

示例:

“ namespace”:“ClockWidget”

version

模块版本。 该版本将显示在“管理”部分。

类型:字符串

示例:

"version": "1.0"

type

模块的类型。 对于小组件是必需的,且必须等于 "widget"。

类型: String

默认值: "module"

示例:

"type": "widget"

actions

要向模块注册的操作。 必须为每个操作定义 class 对象键,其他操作键为可选项。

类型: Object

当 type 为 module 时支持的对象键:

  • write.your.action.name (object) - 操作名称,应使用小写字母 [a-z],并使用点号分隔单词。 支持以下键:
    • class (string; required) - 操作类名称。
    • layout (string) - 操作布局。 支持的值:layout.json、layout.htmlpage(默认)、null。
    • view (string) - 操作视图。

示例:

"actions": {
    "module.example.list": {
        "class": "ExampleList",
        "view": "example.list",
        "layout": "layout.htmlpage"
        }
    }

当 type 为 widget 时支持的对象键:

  • widget.{id}.view (object) - widget 视图的文件和类名称。 将 {id} 替换为 widget 的 id 值(例如,widget.example_clock.view)。 支持以下键:
    • class (string; required) - widget 视图模式的操作类名称,用于扩展默认的 CControllerDashboardWidgetView 类。 类源文件必须位于 actions 目录中。
    • view (string) - widget 视图。 必须位于 views 目录中。 如果视图文件为默认预期的 widget.view.php,则可以省略此参数。 如果使用其他名称,请在此处指定。
  • widget.{id}.edit (object) - widget 配置视图的文件名称。 将 {id} 替换为 widget 的 id 值(例如,widget.example_clock.edit)。 支持以下键:
    • class (string; required) - widget 配置视图模式的操作类名称。 类源文件必须位于 actions 目录中。
    • view (string) - widget 配置视图。 必须位于 views 目录中。 如果视图文件为默认预期的 widget.edit.php,则可以省略此参数。 如果使用其他名称,请在此处指定。

示例:

"actions": {
    "widget.tophosts.view": {
        "class": "WidgetView"
    },
    "widget.tophosts.column.edit": {
        "class": "ColumnEdit",
        "view": "column.edit",
        "layout": "layout.json"
    }
}

assets

要包含的 CSS 样式和 JavaScript 文件。

类型:Object

支持的对象键:

  • css(array)- 要包含的 CSS 文件。 文件必须位于 assets/css 中。
  • js(array)- 要包含的 JavaScript 文件。 文件必须位于 assets/js 中。

示例:

"assets": {
    "css": ["widget.css"],
    "js": ["class.widget.js"]
}

作者

模块作者。
作者将显示在“管理”部分。

类型:字符串

示例:

"author": "John Smith"

config

模块选项的默认值。 该对象可以包含任意自定义键。 如果指定了这些值,则会在模块注册期间将其写入数据库。 之后添加的新变量将在首次调用时写入。 此后,只能直接在数据库中更改变量值。

类型: Object

示例:

"config": {
    "username": "Admin",
    "password": "",
    "auth_url": "https://example.com/auth"
}

description

模块描述。

类型:字符串

示例:

“description”:“这是一个时钟小部件。”

widget

Widget 配置。 当 type 设置为 widget 时使用。

类型: Object

支持的对象键:

  • name (string) - 用于 widget 列表,并作为默认标题。 如果为空,将使用模块中的 "name" 参数。

  • size (object) - 默认 widget 尺寸。 支持以下键:

    • width (integer) - 默认 widget 宽度。
    • height (integer) - 默认 widget 高度。
  • form_class (string) - 包含 widget 字段表单的类。 必须位于 includes 目录中。 如果类为默认预期的 WidgetForm.php,则可以省略此参数。 如果使用其他名称,请在此处指定。

  • js_class (string) - 用于 widget 查看模式的 JavaScript 类名称,用于扩展默认的 CWidget 类。 该类将随仪表板一起加载。 该类的源文件必须位于 assets/js 目录中。 另请参阅:assets。

  • use_time_selector (boolean) - 确定 widget 是否需要仪表板时间选择器。 支持的值:true、false(默认)。

  • refresh_rate (integer) - widget 刷新间隔,单位为秒(默认值:60)。

示例:

"widget": {
    "name": "",
    "size": {
        "width": 12,
        "height": 5
    },
    "form_class": "WidgetForm",
    "js_class": "CWidget",
    "use_time_selector": false,
    "refresh_rate": 60
}

url

指向模块描述的链接。

对于小组件,点击 添加小组件 或 编辑小组件 窗口中的帮助图标 时,将打开此链接。 如果未指定 url,点击帮助图标将打开常规的 仪表板小组件 页面。

类型: String

示例:

"url": "http://example.com"