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 支持的参数(点击参数名称可查看详细说明):

参数 描述 必需
manifest_version 模块的清单版本。 是
id 唯一的模块 ID。
name 将在“管理”部分中显示的模块名称。
namespace 模块类的 PHP 命名空间。
version 模块版本。
type 模块类型。对于小组件,必须设置为 widget。 小组件必需,否则不需要
widget 小组件配置。仅用于小组件。
actions 要向模块注册的操作。
assets 要包含的 CSS 样式和 JavaScript 文件。 否
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"

名称

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

类型: string

示例:

"name": "My module"

命名空间

模块类的 PHP 命名空间。

类型:string

示例:

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

类型:对象

支持的对象键:

  • css(数组)- 要包含的 CSS 文件。
    这些文件必须位于 assets/css 目录中。
  • js(数组)- 要包含的 JavaScript 文件。
    这些文件必须位于 assets/js 目录中。

示例:

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

作者

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

类型: String

示例:

"author": "John Smith"

config

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

类型:Object

示例:

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

描述

模块描述。

类型: string

示例:

"description": "This is a clock widget."

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"