You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
576 lines
17 KiB
576 lines
17 KiB
<?php declare(strict_types = 0);
|
|
/*
|
|
** Zabbix
|
|
** Copyright (C) 2001-2023 Zabbix SIA
|
|
**
|
|
** This program is free software; you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation; either version 2 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; if not, write to the Free Software
|
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
**/
|
|
|
|
|
|
/**
|
|
* @var CView $this
|
|
* @var array $data
|
|
*/
|
|
|
|
$this->addJsFile('class.tagfilteritem.js');
|
|
$this->includeJsFile('configuration.host.list.js.php');
|
|
|
|
if ($data['uncheck']) {
|
|
uncheckTableRows('hosts');
|
|
}
|
|
|
|
$html_page = (new CHtmlPage())
|
|
->setTitle(_('Hosts'))
|
|
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOST_LIST))
|
|
->setControls((new CTag('nav', true, (new CList())
|
|
->addItem(
|
|
(new CSimpleButton(_('Create host')))
|
|
->onClick('view.createHost()')
|
|
)
|
|
->addItem(
|
|
(new CButton('form', _('Import')))
|
|
->onClick(
|
|
'return PopUp("popup.import", {
|
|
rules_preset: "host", '.
|
|
CCsrfTokenHelper::CSRF_TOKEN_NAME.': "'. CCsrfTokenHelper::get('import').
|
|
'"}, {
|
|
dialogueid: "popup_import",
|
|
dialogue_class: "modal-popup-generic"
|
|
});'
|
|
)
|
|
->removeId()
|
|
)
|
|
))->setAttribute('aria-label', _('Content controls'))
|
|
);
|
|
|
|
$action_url = (new CUrl('zabbix.php'))->setArgument('action', $data['action']);
|
|
|
|
$filter = (new CFilter())
|
|
->setResetUrl($action_url)
|
|
->setProfile($data['profileIdx'])
|
|
->setActiveTab($data['active_tab'])
|
|
->addVar('action', $data['action'], 'filter_action')
|
|
->addFilterTab(_('Filter'), [
|
|
(new CFormGrid())
|
|
->addClass(CFormGrid::ZBX_STYLE_FORM_GRID_LABEL_WIDTH_TRUE)
|
|
->addItem([
|
|
new CLabel(_('Host groups'), 'filter_groups__ms'),
|
|
new CFormField(
|
|
(new CMultiSelect([
|
|
'name' => 'filter_groups[]',
|
|
'object_name' => 'hostGroup',
|
|
'data' => $data['filter']['groups'],
|
|
'popup' => [
|
|
'parameters' => [
|
|
'srctbl' => 'host_groups',
|
|
'srcfld1' => 'groupid',
|
|
'dstfrm' => 'zbx_filter',
|
|
'dstfld1' => 'filter_groups_',
|
|
'with_hosts' => true,
|
|
'editable' => true,
|
|
'enrich_parent_groups' => true
|
|
]
|
|
]
|
|
]))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('Templates'), 'filter_templates__ms'),
|
|
new CFormField(
|
|
(new CMultiSelect([
|
|
'name' => 'filter_templates[]',
|
|
'object_name' => 'templates',
|
|
'data' => $data['filter']['templates'],
|
|
'popup' => [
|
|
'parameters' => [
|
|
'srctbl' => 'templates',
|
|
'srcfld1' => 'hostid',
|
|
'srcfld2' => 'host',
|
|
'dstfrm' => 'zbx_filter',
|
|
'dstfld1' => 'filter_templates_'
|
|
]
|
|
]
|
|
]))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('Name'), 'filter_host'),
|
|
new CFormField(
|
|
(new CTextBox('filter_host', $data['filter']['host']))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('DNS'), 'filter_dns'),
|
|
new CFormField(
|
|
(new CTextBox('filter_dns', $data['filter']['dns']))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('IP'), 'filter_ip'),
|
|
new CFormField(
|
|
(new CTextBox('filter_ip', $data['filter']['ip']))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('Port'), 'filter_port'),
|
|
new CFormField(
|
|
(new CTextBox('filter_port', $data['filter']['port']))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
]),
|
|
(new CFormGrid())
|
|
->addClass(CFormGrid::ZBX_STYLE_FORM_GRID_LABEL_WIDTH_TRUE)
|
|
->addItem([
|
|
new CLabel(_('Status'), 'filter_status'),
|
|
new CFormField(
|
|
(new CRadioButtonList('filter_status', (int) $data['filter']['status']))
|
|
->addValue(_('Any'), -1)
|
|
->addValue(_('Enabled'), HOST_STATUS_MONITORED)
|
|
->addValue(_('Disabled'), HOST_STATUS_NOT_MONITORED)
|
|
->setModern(true)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('Monitored by'), 'filter_monitored_by'),
|
|
new CFormField(
|
|
(new CRadioButtonList('filter_monitored_by', (int) $data['filter']['monitored_by']))
|
|
->addValue(_('Any'), ZBX_MONITORED_BY_ANY)
|
|
->addValue(_('Server'), ZBX_MONITORED_BY_SERVER)
|
|
->addValue(_('Proxy'), ZBX_MONITORED_BY_PROXY)
|
|
->setModern(true)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('Proxy'), 'filter_proxyids__ms'),
|
|
new CFormField(
|
|
(new CMultiSelect([
|
|
'name' => 'filter_proxyids[]',
|
|
'object_name' => 'proxies',
|
|
'data' => $data['proxies_ms'],
|
|
'disabled' => ($data['filter']['monitored_by'] != ZBX_MONITORED_BY_PROXY),
|
|
'popup' => [
|
|
'parameters' => [
|
|
'srctbl' => 'proxies',
|
|
'srcfld1' => 'proxyid',
|
|
'srcfld2' => 'name',
|
|
'dstfrm' => 'zbx_filter',
|
|
'dstfld1' => 'filter_proxyids_'
|
|
]
|
|
]
|
|
]))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
|
|
)
|
|
])
|
|
->addItem([
|
|
new CLabel(_('Tags')),
|
|
new CFormField(
|
|
CTagFilterFieldHelper::getTagFilterField([
|
|
'evaltype' => $data['filter']['evaltype'],
|
|
'tags' => $data['filter']['tags']
|
|
])
|
|
)
|
|
])
|
|
]);
|
|
|
|
$html_page->addItem($filter);
|
|
|
|
// table hosts
|
|
$form = (new CForm())->setName('hosts');
|
|
$header_checkbox = (new CCheckBox('all_hosts'))->onClick("checkAll('".$form->getName()."', 'all_hosts', 'hostids');");
|
|
$show_monitored_by = ($data['filter']['monitored_by'] == ZBX_MONITORED_BY_PROXY
|
|
|| $data['filter']['monitored_by'] == ZBX_MONITORED_BY_ANY);
|
|
$header_sortable_name = make_sorting_header(_('Name'), 'name', $data['sortField'], $data['sortOrder'],
|
|
$action_url->getUrl()
|
|
);
|
|
$header_sortable_status = make_sorting_header(_('Status'), 'status', $data['sortField'], $data['sortOrder'],
|
|
$action_url->getUrl()
|
|
);
|
|
|
|
$table = (new CTableInfo())
|
|
->setHeader([
|
|
(new CColHeader($header_checkbox))->addClass(ZBX_STYLE_CELL_WIDTH),
|
|
$header_sortable_name,
|
|
_('Items'),
|
|
_('Triggers'),
|
|
_('Graphs'),
|
|
_('Discovery'),
|
|
_('Web'),
|
|
_('Interface'),
|
|
$show_monitored_by ? _('Proxy') : null,
|
|
_('Templates'),
|
|
$header_sortable_status,
|
|
_('Availability'),
|
|
_('Agent encryption'),
|
|
_('Info'),
|
|
_('Tags')
|
|
]);
|
|
|
|
$current_time = time();
|
|
$csrf_token_massupdate = CCsrfTokenHelper::get('host');
|
|
|
|
foreach ($data['hosts'] as $host) {
|
|
// Select an interface from the list with highest priority.
|
|
$interface = null;
|
|
|
|
if ($host['interfaces']) {
|
|
foreach (CItem::INTERFACE_TYPES_BY_PRIORITY as $interface_type) {
|
|
$host_interfaces = array_filter($host['interfaces'], function(array $host_interface) use ($interface_type) {
|
|
return ($host_interface['type'] == $interface_type);
|
|
});
|
|
|
|
if ($host_interfaces) {
|
|
$interface = reset($host_interfaces);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
$description = [];
|
|
|
|
if ($host['flags'] == ZBX_FLAG_DISCOVERY_CREATED) {
|
|
if ($host['discoveryRule']) {
|
|
if ($host['is_discovery_rule_editable']) {
|
|
$description[] = (new CLink($host['discoveryRule']['name'],
|
|
(new CUrl('host_prototypes.php'))
|
|
->setArgument('form', 'update')
|
|
->setArgument('parent_discoveryid', $host['discoveryRule']['itemid'])
|
|
->setArgument('hostid', $host['hostDiscovery']['parent_hostid'])
|
|
->setArgument('context', 'host')
|
|
))
|
|
->addClass(ZBX_STYLE_LINK_ALT)
|
|
->addClass(ZBX_STYLE_ORANGE);
|
|
}
|
|
else {
|
|
$description[] = (new CSpan($host['discoveryRule']['name']))->addClass(ZBX_STYLE_ORANGE);
|
|
}
|
|
}
|
|
else {
|
|
$description[] = (new CSpan(_('Inaccessible discovery rule')))->addClass(ZBX_STYLE_ORANGE);
|
|
}
|
|
|
|
$description[] = NAME_DELIMITER;
|
|
}
|
|
|
|
$description[] = (new CLink($host['name'],
|
|
(new CUrl('zabbix.php'))
|
|
->setArgument('action', 'host.edit')
|
|
->setArgument('hostid', $host['hostid'])
|
|
))
|
|
->setAttribute('data-hostid', $host['hostid'])
|
|
->onClick('view.editHost(event, this.dataset.hostid);');
|
|
|
|
$maintenance_icon = false;
|
|
$status_toggle_url = (new CUrl('zabbix.php'))
|
|
->setArgument('action', 'popup.massupdate.host')
|
|
->setArgument('hostids', [$host['hostid']])
|
|
->setArgument('visible[status]', 1)
|
|
->setArgument('update', 1)
|
|
->setArgument('backurl',
|
|
(new CUrl('zabbix.php'))
|
|
->setArgument('action', 'host.list')
|
|
->setArgument('page', CPagerHelper::loadPage('host.list', null))
|
|
->getUrl()
|
|
);
|
|
|
|
if ($host['status'] == HOST_STATUS_MONITORED) {
|
|
if ($host['maintenance_status'] == HOST_MAINTENANCE_STATUS_ON) {
|
|
if (array_key_exists($host['maintenanceid'], $data['maintenances'])) {
|
|
$maintenance = $data['maintenances'][$host['maintenanceid']];
|
|
$maintenance_icon = makeMaintenanceIcon($host['maintenance_type'], $maintenance['name'],
|
|
$maintenance['description']
|
|
);
|
|
}
|
|
else {
|
|
$maintenance_icon = makeMaintenanceIcon($host['maintenance_type'], _('Inaccessible maintenance'), '');
|
|
}
|
|
}
|
|
|
|
$status_toggle_url->setArgument('status', HOST_STATUS_NOT_MONITORED);
|
|
$toggle_status_link = (new CLink(_('Enabled'), $status_toggle_url->getUrl()))
|
|
->addClass(ZBX_STYLE_LINK_ACTION)
|
|
->addClass(ZBX_STYLE_GREEN)
|
|
->addConfirmation(_('Disable host?'))
|
|
->addCsrfToken($csrf_token_massupdate);
|
|
}
|
|
else {
|
|
$status_toggle_url->setArgument('status', HOST_STATUS_MONITORED);
|
|
$toggle_status_link = (new CLink(_('Disabled'), $status_toggle_url->getUrl()))
|
|
->addClass(ZBX_STYLE_LINK_ACTION)
|
|
->addClass(ZBX_STYLE_RED)
|
|
->addConfirmation(_('Enable host?'))
|
|
->addCsrfToken($csrf_token_massupdate);
|
|
}
|
|
|
|
if ($maintenance_icon) {
|
|
$description[] = $maintenance_icon;
|
|
}
|
|
|
|
order_result($host['parentTemplates'], 'name');
|
|
|
|
$hostTemplates = [];
|
|
$i = 0;
|
|
|
|
foreach ($host['parentTemplates'] as $template) {
|
|
$i++;
|
|
|
|
if ($i > $data['config']['max_in_table']) {
|
|
$hostTemplates[] = [' ', HELLIP()];
|
|
|
|
break;
|
|
}
|
|
|
|
if (array_key_exists($template['templateid'], $data['writable_templates'])
|
|
&& $data['allowed_ui_conf_templates']) {
|
|
$caption = [
|
|
(new CLink($template['name']))
|
|
->addClass('js-edit-template')
|
|
->setAttribute('data-templateid', $template['templateid'])
|
|
->addClass(ZBX_STYLE_LINK_ALT)
|
|
->addClass(ZBX_STYLE_GREY)
|
|
];
|
|
}
|
|
else {
|
|
$caption = [
|
|
(new CSpan($template['name']))->addClass(ZBX_STYLE_GREY)
|
|
];
|
|
}
|
|
|
|
$parent_templates = $data['templates'][$template['templateid']]['parentTemplates'];
|
|
|
|
if ($parent_templates) {
|
|
order_result($parent_templates, 'name');
|
|
|
|
$caption[] = ' (';
|
|
|
|
foreach ($parent_templates as $parent_template) {
|
|
if (array_key_exists($parent_template['templateid'], $data['writable_templates'])
|
|
&& $data['allowed_ui_conf_templates']) {
|
|
$caption[] = (new CLink($parent_template['name']))
|
|
->addClass('js-edit-template')
|
|
->setAttribute('data-templateid', $parent_template['templateid'])
|
|
->addClass(ZBX_STYLE_LINK_ALT)
|
|
->addClass(ZBX_STYLE_GREY);
|
|
}
|
|
else {
|
|
$caption[] = (new CSpan($parent_template['name']))->addClass(ZBX_STYLE_GREY);
|
|
}
|
|
|
|
$caption[] = ', ';
|
|
}
|
|
|
|
array_pop($caption);
|
|
$caption[] = ')';
|
|
}
|
|
|
|
if ($hostTemplates) {
|
|
$hostTemplates[] = ', ';
|
|
}
|
|
|
|
$hostTemplates[] = $caption;
|
|
}
|
|
|
|
$info_icons = [];
|
|
|
|
if ($host['flags'] == ZBX_FLAG_DISCOVERY_CREATED && $host['hostDiscovery']['ts_delete'] != 0) {
|
|
$info_icons[] = getHostLifetimeIndicator($current_time, (int) $host['hostDiscovery']['ts_delete']);
|
|
}
|
|
|
|
if ($host['tls_connect'] == HOST_ENCRYPTION_NONE
|
|
&& ($host['tls_accept'] & HOST_ENCRYPTION_NONE) == HOST_ENCRYPTION_NONE
|
|
&& ($host['tls_accept'] & HOST_ENCRYPTION_PSK) != HOST_ENCRYPTION_PSK
|
|
&& ($host['tls_accept'] & HOST_ENCRYPTION_CERTIFICATE) != HOST_ENCRYPTION_CERTIFICATE) {
|
|
$encryption = (new CDiv((new CSpan(_('None')))->addClass(ZBX_STYLE_STATUS_GREEN)))
|
|
->addClass(ZBX_STYLE_STATUS_CONTAINER);
|
|
}
|
|
else {
|
|
// Incoming encryption.
|
|
if ($host['tls_connect'] == HOST_ENCRYPTION_NONE) {
|
|
$in_encryption = (new CSpan(_('None')))->addClass(ZBX_STYLE_STATUS_GREEN);
|
|
}
|
|
elseif ($host['tls_connect'] == HOST_ENCRYPTION_PSK) {
|
|
$in_encryption = (new CSpan(_('PSK')))->addClass(ZBX_STYLE_STATUS_GREEN);
|
|
}
|
|
else {
|
|
$in_encryption = (new CSpan(_('CERT')))->addClass(ZBX_STYLE_STATUS_GREEN);
|
|
}
|
|
|
|
// Outgoing encryption.
|
|
$out_encryption = [];
|
|
|
|
if (($host['tls_accept'] & HOST_ENCRYPTION_NONE) == HOST_ENCRYPTION_NONE) {
|
|
$out_encryption[] = (new CSpan(_('None')))->addClass(ZBX_STYLE_STATUS_GREEN);
|
|
}
|
|
else {
|
|
$out_encryption[] = (new CSpan(_('None')))->addClass(ZBX_STYLE_STATUS_GREY);
|
|
}
|
|
|
|
if (($host['tls_accept'] & HOST_ENCRYPTION_PSK) == HOST_ENCRYPTION_PSK) {
|
|
$out_encryption[] = (new CSpan(_('PSK')))->addClass(ZBX_STYLE_STATUS_GREEN);
|
|
}
|
|
else {
|
|
$out_encryption[] = (new CSpan(_('PSK')))->addClass(ZBX_STYLE_STATUS_GREY);
|
|
}
|
|
|
|
if (($host['tls_accept'] & HOST_ENCRYPTION_CERTIFICATE) == HOST_ENCRYPTION_CERTIFICATE) {
|
|
$out_encryption[] = (new CSpan(_('CERT')))->addClass(ZBX_STYLE_STATUS_GREEN);
|
|
}
|
|
else {
|
|
$out_encryption[] = (new CSpan(_('CERT')))->addClass(ZBX_STYLE_STATUS_GREY);
|
|
}
|
|
|
|
$encryption = (new CDiv([new CSpan($in_encryption), ' ', new CSpan($out_encryption)]))
|
|
->addClass(ZBX_STYLE_STATUS_CONTAINER)
|
|
->addClass(ZBX_STYLE_NOWRAP);
|
|
}
|
|
|
|
$monitored_by = null;
|
|
|
|
if ($show_monitored_by) {
|
|
$monitored_by = ($host['proxyid'] != 0)
|
|
? $data['proxies'][$host['proxyid']]['name']
|
|
: '';
|
|
}
|
|
|
|
$table->addRow([
|
|
new CCheckBox('hostids['.$host['hostid'].']', $host['hostid']),
|
|
(new CCol($description))->addClass(ZBX_STYLE_NOWRAP),
|
|
[
|
|
new CLink(_('Items'),
|
|
(new CUrl('items.php'))
|
|
->setArgument('filter_set', '1')
|
|
->setArgument('filter_hostids', [$host['hostid']])
|
|
->setArgument('context', 'host')
|
|
),
|
|
CViewHelper::showNum($host['items'])
|
|
],
|
|
[
|
|
new CLink(_('Triggers'),
|
|
(new CUrl('triggers.php'))
|
|
->setArgument('filter_set', '1')
|
|
->setArgument('filter_hostids', [$host['hostid']])
|
|
->setArgument('context', 'host')
|
|
),
|
|
CViewHelper::showNum($host['triggers'])
|
|
],
|
|
[
|
|
new CLink(_('Graphs'),
|
|
(new CUrl('graphs.php'))
|
|
->setArgument('filter_set', '1')
|
|
->setArgument('filter_hostids', [$host['hostid']])
|
|
->setArgument('context', 'host')
|
|
),
|
|
CViewHelper::showNum($host['graphs'])
|
|
],
|
|
[
|
|
new CLink(_('Discovery'),
|
|
(new CUrl('host_discovery.php'))
|
|
->setArgument('filter_set', '1')
|
|
->setArgument('filter_hostids', [$host['hostid']])
|
|
->setArgument('context', 'host')
|
|
),
|
|
CViewHelper::showNum($host['discoveries'])
|
|
],
|
|
[
|
|
new CLink(_('Web'),
|
|
(new CUrl('httpconf.php'))
|
|
->setArgument('filter_set', '1')
|
|
->setArgument('filter_hostids', [$host['hostid']])
|
|
->setArgument('context', 'host')
|
|
),
|
|
CViewHelper::showNum($host['httpTests'])
|
|
],
|
|
getHostInterface($interface),
|
|
$monitored_by,
|
|
$hostTemplates,
|
|
$toggle_status_link,
|
|
getHostAvailabilityTable($host['interfaces']),
|
|
$encryption,
|
|
makeInformationList($info_icons),
|
|
$data['tags'][$host['hostid']]
|
|
]);
|
|
}
|
|
|
|
$status_toggle_url = (new CUrl('zabbix.php'))
|
|
->setArgument('action', 'popup.massupdate.host')
|
|
->setArgument(CCsrfTokenHelper::CSRF_TOKEN_NAME, $csrf_token_massupdate)
|
|
->setArgument('visible[status]', 1)
|
|
->setArgument('update', 1)
|
|
->setArgument('backurl',
|
|
(new CUrl('zabbix.php'))
|
|
->setArgument('action', 'host.list')
|
|
->setArgument('page', CPagerHelper::loadPage('host.list', null))
|
|
->getUrl()
|
|
);
|
|
|
|
$form->addItem([
|
|
$table,
|
|
$data['paging'],
|
|
new CActionButtonList('action', 'hostids', [
|
|
'enable-hosts' => [
|
|
'name' => _('Enable'),
|
|
'confirm_singular' => _('Enable selected host?'),
|
|
'confirm_plural' => _('Enable selected hosts?'),
|
|
'redirect' => $status_toggle_url
|
|
->setArgument('status', HOST_STATUS_MONITORED)
|
|
->getUrl()
|
|
],
|
|
'disable-hosts' => [
|
|
'name' => _('Disable'),
|
|
'confirm_singular' => _('Disable selected host?'),
|
|
'confirm_plural' => _('Disable selected hosts?'),
|
|
'redirect' => $status_toggle_url
|
|
->setArgument('status', HOST_STATUS_NOT_MONITORED)
|
|
->getUrl()
|
|
],
|
|
'host.export' => [
|
|
'content' => new CButtonExport('export.hosts', $action_url
|
|
->setArgument('page', ($data['page'] == 1) ? null : $data['page'])
|
|
->getUrl()
|
|
)
|
|
],
|
|
'popup.massupdate.host' => [
|
|
'content' => (new CSimpleButton(_('Mass update')))
|
|
->addClass(ZBX_STYLE_BTN_ALT)
|
|
->addClass('js-no-chkbxrange')
|
|
->onClick(
|
|
"openMassupdatePopup('popup.massupdate.host', {".
|
|
CCsrfTokenHelper::CSRF_TOKEN_NAME.": '".$csrf_token_massupdate.
|
|
"'}, {
|
|
dialogue_class: 'modal-popup-static',
|
|
trigger_element: this
|
|
});"
|
|
)
|
|
],
|
|
'host.massdelete' => [
|
|
'content' => (new CSimpleButton(_('Delete')))
|
|
->onClick('view.massDeleteHosts(this);')
|
|
->addClass(ZBX_STYLE_BTN_ALT)
|
|
->addClass('js-no-chkbxrange')
|
|
->removeId()
|
|
]
|
|
], 'hosts')
|
|
]);
|
|
|
|
$html_page
|
|
->addItem($form)
|
|
->show();
|
|
|
|
(new CScriptTag('
|
|
view.init('.json_encode([
|
|
'applied_filter_groupids' => array_keys($data['filter']['groups'])
|
|
]).');
|
|
'))
|
|
->setOnDocumentReady()
|
|
->show();
|