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