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
Идентификатор модуля. Должен быть уникальным. Чтобы избежать конфликта имён в будущем, рекомендуется использовать для модулей префикс (имя автора или название компании, или любой другой). Например, если модуль является примером для уроков и имя модуля «My module», то идентификатор будет «example_my_module».
Тип: String
Пример:
"id": "example_my_module"
name
Имя модуля, которое будет отображаться в секторе Администрирование.
Тип: String
Пример
"name": "My module"
namespace
Пространство имён PHP для классов модулей
Тип: String
Пример:
"namespace": "ClockWidget"
version
Версия модуля. Версия будет отображаться в секторе Администрирование.
Тип: String
Пример:
"version": "1.0"
type
Тип модуля. Требуется для виджетов и должен быть равен "widget".
Тип: String
По умолчанию: "module"
Пример:
"type": "widget"
действия
Действия по регистрации в модуле. Определение ключа объекта class для каждого действия является обязательным, остальные ключи действий не являются обязательными.
Тип: Объект
Поддерживаемые ключи объекта, если type равно module:
- write.your.action.name (объект) – название действия, пишется строчными буквами [a-z], разделяя слова точками.
Поддерживает ключи:
- class (строка; обязательный) — имя класса действия.
- layout (строка) – макет действия. Поддерживаемые значения: layout.json, layout.htmlpage (по умолчанию), null.
- view (строка) - просмотр действия.
Пример:
"actions": {
"module.example.list": {
"class": "ExampleList",
"view": "example.list",
"layout": "layout.htmlpage"
}
}
Поддерживаемые ключи объектов, если type равно widget:
- widget.{id}.view (объект) — имя файла и класса для просмотра виджета. Замените {id} значением id виджета (например, widget.example_clock.view).
Поддерживает ключи:
- class (строка; обязательный) — имя класса действия для режима просмотра виджета для расширения класса CControllerDashboardWidgetView по умолчанию. Исходный файл класса должен находиться в каталоге actions.
- view (строка) - вид виджета. Должен находиться в каталоге views. Если файлом представления является widget.view.php, который ожидается по умолчанию, этот параметр можно опустить. Если вы используете другое имя, укажите его здесь.
- widget.{id}.edit (объект) - имя файла для просмотра конфигурации виджета. Замените {id} значением id виджета (например, widget.example_clock.edit).
Поддерживает ключи:
- class (строка; обязательный) — имя класса действия для режима просмотра конфигурации виджета. Исходный файл класса должен находиться в каталоге actions.
- view (строка) - представление конфигурации виджета. Должен находиться в каталоге 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
Автор модуля. Автор будет отображаться в разделе Администрирование.
Тип: String
Пример:
"author": "John Smith"
config
Значения по умолчанию для опций модуля. Объект может содержать любые пользовательские ключи. Если указано, эти значения будут записаны в базу данных во время регистрации модуля. Новые переменные, добавленные позже, будут записаны при первом вызове. В дальнейшем значения переменных можно будет изменить только непосредственно в базе данных.
Тип: Object
Пример:
"config": {
"username": "Admin",
"password": "",
"auth_url": "https://example.com/auth"
}
description
Описание модуля.
Тип: String
Пример:
"description": "This is a clock widget."
widget
Настройка виджета. Используется, если для type установлено значение widget.
Тип: Объект
Поддерживаемые ключи объектов:
-
имя (строка) — используется в списке виджетов и в качестве заголовка по умолчанию. Если пусто, будет использоваться параметр «имя» из модуля.
-
template_support (логическое значение) — определяет, должен ли виджет быть доступен в шаблонах панелей мониторинга. Поддерживаемые значения: true, false (по умолчанию).
-
size (объект) – размеры виджета по умолчанию. Поддерживает ключи:
- width (целое число) — ширина виджета по умолчанию.
- height (целое число) — высота виджета по умолчанию.
-
form_class (строка) - класс с формой полей виджета. Должен находиться в каталоге includes. Если класс WidgetForm.php, который ожидается по умолчанию, этот параметр можно опустить. Если вы используете другое имя, укажите его здесь.
-
js_class (строка) — имя класса JavaScript для режима просмотра виджета для расширения класса CWidget по умолчанию. Класс будет загружен с информационной панелью. Исходный файл класса должен находиться в каталоге assets/js. См. также: активы.
-
use_time_selector (логическое значение) — определяет, требует ли виджет селектор времени на панели управления. Поддерживаемые значения: true, false (по умолчанию).
-
refresh_rate (целое число) — частота обновления виджета в секундах (по умолчанию: 60).
Пример:
"widget": {
"name": "",
"template_support": true,
"size": {
"width": 12,
"height": 5
},
"form_class": "WidgetForm",
"js_class": "CWidget",
"use_time_selector": false,
"refresh_rate": 60
}
url
Ссылка на описание модуля.
Тип: Строка
Пример:
"url": "http://example.com"