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.

113 lines
3.3 KiB

1 year ago
<?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
*/
$form = (new CForm())
->setName('services_form');
// Enable form submitting on Enter.
$form->addItem((new CSubmitButton())->addClass(ZBX_STYLE_FORM_SUBMIT_HIDDEN));
$controls = (new CForm())
->setName('services_filter_form')
->addVar('title', $data['title'])
->addVar('exclude_serviceids', $data['exclude_serviceids'])
->addVar('multiple', $data['is_multiple'] ? null : 0)
->addItem(
(new CList())
->addClass(ZBX_STYLE_INLINE_FILTER)
->addItem(new CLabel(_('Name'), 'services-filter-name'), ZBX_STYLE_INLINE_FILTER_LABEL)
->addItem(
(new CTextBox('filter_name', $data['filter']['name']))
->setId('services-filter-name')
->setAttribute('autofocus', 'autofocus')
->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH)
)
->addItem(new CSubmitButton(_('Filter')))
->addItem(
(new CSimpleButton(_('Reset')))
->setAttribute('type', 'reset')
->addClass(ZBX_STYLE_BTN_ALT)
)
);
$services = (new CTableInfo())
->setHeader([
$data['is_multiple'] ? (new CColHeader(new CCheckBox('serviceid_all')))->addClass(ZBX_STYLE_CELL_WIDTH) : null,
_('Name'),
_('Tags'),
_('Problem tags')
]);
foreach ($data['services'] as $service) {
$services->addRow([
$data['is_multiple'] ? (new CCheckBox('serviceid', $service['serviceid']))->removeId() : null,
(new CCol([
$data['is_multiple'] ? null : (new CVar('serviceid', $service['serviceid']))->removeId(),
(new CVar('name', $service['name']))->removeId(),
(new CVar('problem_tags_html', $data['problem_tags_html'][$service['serviceid']]))->removeId(),
(new CLink($service['name']))->addClass('js-name')
]))->addClass(ZBX_STYLE_WORDBREAK),
new CCol($data['tags'][$service['serviceid']]),
new CCol($data['problem_tags'][$service['serviceid']])
]);
}
$form
->addItem($services)
->addItem(
(new CScriptTag('
services_popup.init('.json_encode([
'is_multiple' => $data['is_multiple']
]).');
'))->setOnDocumentReady()
);
$buttons = [];
if ($data['is_multiple']) {
$buttons[] = [
'title' => _('Select'),
'keepOpen' => true,
'isSubmit' => true,
'action' => 'services_popup.submit();'
];
}
$output = [
'header' => $data['title'],
'controls' => $controls->toString(),
'body' => $form->toString(),
'buttons' => $buttons,
'script_inline' => $this->readJsFile('popup.services.js.php')
];
if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
CProfiler::getInstance()->stop();
$output['debug'] = CProfiler::getInstance()->make()->toString();
}
echo json_encode($output);