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 Уникальный идентификатор модуля.
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

Идентификатор модуля.
Должен быть уникальным.
Чтобы избежать конфликтов имен в будущем, рекомендуется использовать префикс для модулей (имя автора или компании либо любой другой).
Например, если модуль является примером для учебных занятий и называется «Мой модуль», его идентификатором будет example_my_module.

Тип: String

Пример:

"id": "example_my_module"

name

Имя модуля, которое будет отображаться в секторе Администрирование.

Тип: String

Пример

"name": "My module"

namespace

Пространство имён PHP для классов модулей

Тип: String

Пример:

"namespace": "ClockWidget"

версия

Версия модуля. Версия будет отображаться в разделе «Администрирование».

Тип: строка

Пример:

"version": "1.0"

type

Тип модуля. Обязателен для виджетов и должен иметь значение "widget".

Тип: String

Значение по умолчанию: "module"

Пример:

"type": "widget"

действия

Действия, регистрируемые в модуле.
Для каждого действия необходимо определить ключ объекта 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) — имя файла и класса для представления виджета.
    Замените {id} значением id виджета (например, widget.example_clock.view).
    Поддерживаемые ключи:
    • class (string; required) — имя класса действия для режима представления виджета, расширяющего класс CControllerDashboardWidgetView по умолчанию.
      Исходный файл класса должен находиться в каталоге actions.
    • view (string) — представление виджета.
      Должно находиться в каталоге views.
      Если файл представления называется widget.view.php, как ожидается по умолчанию, этот параметр можно не указывать.
      При использовании другого имени укажите его здесь.
  • widget.{id}.edit (object) — имя файла для представления настройки виджета.
    Замените {id} значением id виджета (например, widget.example_clock.edit).
    Поддерживаемые ключи:
    • class (string; required) — имя класса действия для режима представления настройки виджета.
      Исходный файл класса должен находиться в каталоге actions.
    • view (string) — представление настройки виджета.
      Должно находиться в каталоге views.
      Если файл представления называется widget.edit.php, как ожидается по умолчанию, этот параметр можно не указывать.
      При использовании другого имени укажите его здесь.

Пример:

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

ресурсы

CSS-стили и файлы JavaScript для подключения.

Тип: Object

Поддерживаемые ключи объекта:

  • css (array) - CSS-файлы для подключения. Файлы должны находиться в каталоге assets/css.
  • js (array) - файлы 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"
}

description

Описание модуля.

Тип: String

Пример:

"description": "Это виджет часов."

виджет

Конфигурация виджета.
Используется, если для type задано значение widget.

Тип: Object

Поддерживаемые ключи объекта:

  • name (string) — используется в списке виджетов и в качестве заголовка по умолчанию.
    Если значение пустое, будет использоваться параметр "name" из модуля.

  • size (object) — размеры виджета по умолчанию.
    Поддерживаемые ключи:

    • width (integer) — ширина виджета по умолчанию.
    • height (integer) — высота виджета по умолчанию.
  • form_class (string) — класс формы с полями виджета.
    Должен находиться в каталоге includes.
    Если класс называется WidgetForm.php, как предусмотрено по умолчанию, этот параметр можно не указывать.
    При использовании другого имени укажите его здесь.

  • js_class (string) — имя класса JavaScript, который расширяет класс CWidget по умолчанию для режима просмотра виджета.
    Класс будет загружен вместе с панелью мониторинга.
    Исходный файл класса должен находиться в каталоге assets/js.
    См. также: assets.

  • use_time_selector (boolean) — определяет, требуется ли виджету селектор времени панели мониторинга.
    Поддерживаемые значения: true, false (по умолчанию).

  • refresh_rate (integer) — интервал обновления виджета в секундах (по умолчанию: 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"