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.
525 lines
18 KiB
525 lines
18 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
|
||
|
*/
|
||
|
|
||
|
// Create form.
|
||
|
$form = (new CForm())
|
||
|
->addItem((new CVar(CCsrfTokenHelper::CSRF_TOKEN_NAME, CCsrfTokenHelper::get(
|
||
|
$data['prototype'] ? 'itemprototype' : 'item'
|
||
|
)))->removeId())
|
||
|
->setId('massupdate-form')
|
||
|
->setName('massupdate-form')
|
||
|
->addVar('ids', $data['ids'])
|
||
|
->addVar('action', $data['action'])
|
||
|
->addVar('prototype', $data['prototype'])
|
||
|
->addVar('update', '1')
|
||
|
->addVar('location_url', $data['location_url'])
|
||
|
->addVar('context', $data['context'], uniqid('context_'))
|
||
|
->disablePasswordAutofill();
|
||
|
|
||
|
// Create item form list.
|
||
|
$item_form_list = (new CFormList('item-form-list'))
|
||
|
// Append type to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[type]', 'type', _('Original')))
|
||
|
->setLabel(_('Type'))
|
||
|
->setAttribute('autofocus', 'autofocus'),
|
||
|
(new CSelect('type'))
|
||
|
->setId('type')
|
||
|
->setValue(ITEM_TYPE_ZABBIX)
|
||
|
->addOptions(CSelect::createOptionsFromArray($data['item_types']))
|
||
|
);
|
||
|
|
||
|
// Append hosts interface select to form list.
|
||
|
if ($data['single_host_selected'] && $data['context'] === 'host') {
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[interfaceid]', 'interfaceDiv', _('Original')))
|
||
|
->setLabel(_('Host interface'))
|
||
|
->setAttribute('data-multiple-interface-types', $data['multiple_interface_types']),
|
||
|
(new CDiv([
|
||
|
getInterfaceSelect($data['interfaces'])
|
||
|
->setId('interface-select')
|
||
|
->setValue('0')
|
||
|
->addClass(ZBX_STYLE_ZSELECT_HOST_INTERFACE),
|
||
|
(new CSpan(_('No interface found')))
|
||
|
->addClass(ZBX_STYLE_RED)
|
||
|
->setId('interface_not_defined')
|
||
|
->addStyle('display: none;')
|
||
|
]))->setId('interfaceDiv'),
|
||
|
'interface_row'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
$item_form_list
|
||
|
// Append JMX endpoint to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[jmx_endpoint]', 'jmx_endpoint', _('Original')))->setLabel(_('JMX endpoint')),
|
||
|
(new CTextBox('jmx_endpoint', ZBX_DEFAULT_JMX_ENDPOINT))->setAdaptiveWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
)
|
||
|
// Append ITEM_TYPE_HTTPAGENT URL field.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[url]', 'url', _('Original')))->setLabel(_('URL')),
|
||
|
(new CTextBox('url', '', false, DB::getFieldLength('items', 'url')))
|
||
|
->setAdaptiveWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
)
|
||
|
// Append ITEM_TYPE_HTTPAGENT Request body type.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[post_type]', 'post_type_container', _('Original')))
|
||
|
->setLabel(_('Request body type')),
|
||
|
(new CRadioButtonList('post_type', (int) DB::getDefault('items', 'post_type')))
|
||
|
->addValue(_('Raw data'), ZBX_POSTTYPE_RAW)
|
||
|
->addValue(_('JSON data'), ZBX_POSTTYPE_JSON)
|
||
|
->addValue(_('XML data'), ZBX_POSTTYPE_XML)
|
||
|
->setId('post_type_container')
|
||
|
->setModern(true)
|
||
|
)
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[timeout]', 'timeout', _('Original')))->setLabel(_('Timeout')),
|
||
|
(new CTextBox('timeout', DB::getDefault('items', 'timeout')))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH)
|
||
|
)
|
||
|
// Append ITEM_TYPE_HTTPAGENT Request body.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[posts]', 'posts', _('Original')))->setLabel(_('Request body')),
|
||
|
(new CTextArea('posts', ''))
|
||
|
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
->disableSpellcheck()
|
||
|
);
|
||
|
|
||
|
// Append ITEM_TYPE_HTTPAGENT Headers fields.
|
||
|
$headers = (new CTag('script', true))->setAttribute('type', 'text/json');
|
||
|
$headers->items = [json_encode([['name' => '', 'value' => '']])];
|
||
|
|
||
|
$item_form_list
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[headers]', 'headers_pairs', _('Original')))->setLabel(_('Headers')),
|
||
|
(new CDiv([
|
||
|
(new CTable())
|
||
|
->addStyle('width: 100%;')
|
||
|
->setHeader(['', _('Name'), '', _('Value'), ''])
|
||
|
->addRow((new CRow)->setAttribute('data-insert-point', 'append'))
|
||
|
->setFooter(new CRow(
|
||
|
(new CCol(
|
||
|
(new CButtonLink(_('Add')))->setAttribute('data-row-action', 'add_row')
|
||
|
))->setColSpan(5)
|
||
|
)),
|
||
|
(new CTag('script', true))
|
||
|
->setAttribute('type', 'text/x-jquery-tmpl')
|
||
|
->addItem(new CRow([
|
||
|
(new CCol((new CDiv)->addClass(ZBX_STYLE_DRAG_ICON)))->addClass(ZBX_STYLE_TD_DRAG_ICON),
|
||
|
(new CTextBox('headers[name][#{index}]', '#{name}'))->setWidth(ZBX_TEXTAREA_HTTP_PAIR_NAME_WIDTH),
|
||
|
RARR(),
|
||
|
(new CTextBox('headers[value][#{index}]', '#{value}', false, 2000))
|
||
|
->setWidth(ZBX_TEXTAREA_HTTP_PAIR_VALUE_WIDTH),
|
||
|
(new CButtonLink(_('Remove')))->setAttribute('data-row-action', 'remove_row')
|
||
|
])),
|
||
|
$headers
|
||
|
]))
|
||
|
->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)
|
||
|
->setId('headers_pairs')
|
||
|
->setAttribute('data-sortable-pairs-table', '1')
|
||
|
->addStyle('min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;')
|
||
|
)
|
||
|
// Append value type to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[value_type]', 'value_type', _('Original')))
|
||
|
->setLabel(_('Type of information')),
|
||
|
(new CSelect('value_type'))
|
||
|
->setId('value_type')
|
||
|
->setValue(ITEM_VALUE_TYPE_UINT64)
|
||
|
->addOptions(CSelect::createOptionsFromArray([
|
||
|
ITEM_VALUE_TYPE_UINT64 => _('Numeric (unsigned)'),
|
||
|
ITEM_VALUE_TYPE_FLOAT => _('Numeric (float)'),
|
||
|
ITEM_VALUE_TYPE_STR => _('Character'),
|
||
|
ITEM_VALUE_TYPE_LOG => _('Log'),
|
||
|
ITEM_VALUE_TYPE_TEXT => _('Text'),
|
||
|
ITEM_VALUE_TYPE_BINARY => _('Binary')
|
||
|
]))
|
||
|
)
|
||
|
// Append units to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[units]', 'units', _('Original')))->setLabel(_('Units')),
|
||
|
(new CTextBox('units', ''))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
)
|
||
|
// Append authtype to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[authtype]', 'authtype', _('Original')))->setLabel(_('Authentication method')),
|
||
|
(new CSelect('authtype'))
|
||
|
->setId('authtype')
|
||
|
->setValue(ITEM_AUTHTYPE_PASSWORD)
|
||
|
->addOptions(CSelect::createOptionsFromArray([
|
||
|
ITEM_AUTHTYPE_PASSWORD => _('Password'),
|
||
|
ITEM_AUTHTYPE_PUBLICKEY => _('Public key')
|
||
|
]))
|
||
|
)
|
||
|
// Append username to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[username]', 'username', _('Original')))
|
||
|
->setLabel(_('User name')),
|
||
|
(new CTextBox('username', ''))
|
||
|
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
->disableAutocomplete()
|
||
|
)
|
||
|
// Append publickey to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[publickey]', 'publickey', _('Original')))->setLabel(_('Public key file')),
|
||
|
(new CTextBox('publickey', ''))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH)
|
||
|
)
|
||
|
// Append privatekey to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[privatekey]', 'privatekey', _('Original')))->setLabel(_('Private key file')),
|
||
|
(new CTextBox('privatekey', ''))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH)
|
||
|
)
|
||
|
// Append password to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[password]', 'password', _('Original')))->setLabel(_('Password')),
|
||
|
(new CTextBox('password', ''))
|
||
|
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
->disableAutocomplete()
|
||
|
);
|
||
|
|
||
|
// Create preprocessing form list.
|
||
|
$preprocessing_form_list = (new CFormList('preprocessing-form-list'))
|
||
|
// Append item pre-processing to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[preprocessing]', 'preprocessing_div', _('Original')))
|
||
|
->setLabel(_('Preprocessing steps')),
|
||
|
(new CDiv(getItemPreprocessing([], false, $data['preprocessing_types'])))
|
||
|
->setId('preprocessing_div')
|
||
|
);
|
||
|
|
||
|
$custom_intervals = (new CTable())
|
||
|
->setId('custom_intervals')
|
||
|
->setHeader([
|
||
|
new CColHeader(_('Type')),
|
||
|
new CColHeader(_('Interval')),
|
||
|
new CColHeader(_('Period')),
|
||
|
(new CColHeader(_('Action')))->setWidth(50)
|
||
|
])
|
||
|
->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR);
|
||
|
|
||
|
foreach ($data['delay_flex'] as $i => $delay_flex) {
|
||
|
$type_input = (new CRadioButtonList('delay_flex['.$i.'][type]', (int) $delay_flex['type']))
|
||
|
->addValue(_('Flexible'), ITEM_DELAY_FLEXIBLE)
|
||
|
->addValue(_('Scheduling'), ITEM_DELAY_SCHEDULING)
|
||
|
->setModern(true);
|
||
|
|
||
|
if ($delay_flex['type'] == ITEM_DELAY_FLEXIBLE) {
|
||
|
$delay_input = (new CTextBox('delay_flex['.$i.'][delay]', $delay_flex['delay']))
|
||
|
->setAdaptiveWidth(100)
|
||
|
->setAttribute('placeholder', ZBX_ITEM_FLEXIBLE_DELAY_DEFAULT);
|
||
|
$period_input = (new CTextBox('delay_flex['.$i.'][period]', $delay_flex['period']))
|
||
|
->setAdaptiveWidth(110)
|
||
|
->setAttribute('placeholder', ZBX_DEFAULT_INTERVAL);
|
||
|
$schedule_input = (new CTextBox('delay_flex['.$i.'][schedule]'))
|
||
|
->setAttribute('placeholder', ZBX_ITEM_SCHEDULING_DEFAULT)
|
||
|
->addStyle('max-width:100px;width:100%;display: none;');
|
||
|
}
|
||
|
else {
|
||
|
$delay_input = (new CTextBox('delay_flex['.$i.'][delay]'))
|
||
|
->setAdaptiveWidth(100)
|
||
|
->setAttribute('placeholder', ZBX_ITEM_FLEXIBLE_DELAY_DEFAULT)
|
||
|
->addStyle('display: none;');
|
||
|
$period_input = (new CTextBox('delay_flex['.$i.'][period]'))
|
||
|
->setAdaptiveWidth(110)
|
||
|
->setAttribute('placeholder', ZBX_DEFAULT_INTERVAL)
|
||
|
->addStyle('display: none;');
|
||
|
$schedule_input = (new CTextBox('delay_flex['.$i.'][schedule]', $delay_flex['schedule']))
|
||
|
->setAdaptiveWidth(100)
|
||
|
->setAttribute('placeholder', ZBX_ITEM_SCHEDULING_DEFAULT);
|
||
|
}
|
||
|
|
||
|
$button = (new CButton('delay_flex['.$i.'][remove]', _('Remove')))
|
||
|
->addClass(ZBX_STYLE_BTN_LINK)
|
||
|
->addClass('element-table-remove');
|
||
|
|
||
|
$custom_intervals->addRow([$type_input, [$delay_input, $schedule_input], $period_input, $button], 'form_row');
|
||
|
}
|
||
|
|
||
|
$custom_intervals->addRow([(new CButton('interval_add', _('Add')))
|
||
|
->addClass(ZBX_STYLE_BTN_LINK)
|
||
|
->addClass('element-table-add')]);
|
||
|
|
||
|
// Prepare Update interval for form list.
|
||
|
$update_interval = (new CTable())
|
||
|
->setId('update_interval')
|
||
|
->addRow([
|
||
|
_('Delay'),
|
||
|
new CDiv((new CTextBox('delay', ZBX_ITEM_DELAY_DEFAULT))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH))
|
||
|
])
|
||
|
->addRow(
|
||
|
(new CRow([
|
||
|
(new CCol(_('Custom intervals')))->addStyle('vertical-align: top;'),
|
||
|
new CCol($custom_intervals)
|
||
|
]))
|
||
|
);
|
||
|
|
||
|
// Append update interval to form list.
|
||
|
$item_form_list
|
||
|
// Append delay to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[delay]', 'update_interval', _('Original')))->setLabel(_('Update interval')),
|
||
|
$update_interval
|
||
|
)
|
||
|
// Append history to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[history]', 'history_div', _('Original')))
|
||
|
->setLabel(_('History storage period')),
|
||
|
(new CDiv([
|
||
|
(new CRadioButtonList('history_mode', ITEM_STORAGE_CUSTOM))
|
||
|
->addValue(_('Do not keep history'), ITEM_STORAGE_OFF)
|
||
|
->addValue(_('Storage period'), ITEM_STORAGE_CUSTOM)
|
||
|
->setModern(true),
|
||
|
(new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
|
||
|
(new CTextBox('history', DB::getDefault('items', 'history')))
|
||
|
->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
|
||
|
->setAriaRequired()
|
||
|
]))
|
||
|
->addClass('wrap-multiple-controls')
|
||
|
->setId('history_div')
|
||
|
)
|
||
|
// Append trends to form list.
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[trends]', 'trends_div', _('Original')))->setLabel(_('Trend storage period')),
|
||
|
(new CDiv([
|
||
|
(new CRadioButtonList('trends_mode', ITEM_STORAGE_CUSTOM))
|
||
|
->addValue(_('Do not keep trends'), ITEM_STORAGE_OFF)
|
||
|
->addValue(_('Storage period'), ITEM_STORAGE_CUSTOM)
|
||
|
->setModern(true),
|
||
|
(new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
|
||
|
(new CTextBox('trends', DB::getDefault('items', 'trends')))
|
||
|
->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
|
||
|
->setAriaRequired()
|
||
|
]))
|
||
|
->addClass('wrap-multiple-controls')
|
||
|
->setId('trends_div')
|
||
|
);
|
||
|
|
||
|
// Append status to form list.
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[status]', 'status', _('Original')))
|
||
|
->setLabel($data['prototype'] ? _('Create enabled') : _('Status')),
|
||
|
(new CRadioButtonList('status', ITEM_STATUS_ACTIVE))
|
||
|
->addValue($data['prototype'] ? _('Yes') : item_status2str(ITEM_STATUS_ACTIVE), ITEM_STATUS_ACTIVE)
|
||
|
->addValue($data['prototype'] ? _('No') : item_status2str(ITEM_STATUS_DISABLED), ITEM_STATUS_DISABLED)
|
||
|
->setModern(true)
|
||
|
);
|
||
|
|
||
|
if ($data['prototype']) {
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[discover]', 'discover', _('Original')))->setLabel(_('Discover')),
|
||
|
(new CRadioButtonList('discover', ZBX_PROTOTYPE_DISCOVER))
|
||
|
->addValue(_('Yes'), ZBX_PROTOTYPE_DISCOVER)
|
||
|
->addValue(_('No'), ZBX_PROTOTYPE_NO_DISCOVER)
|
||
|
->setModern(true)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// Append logtime to form list.
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[logtimefmt]', 'logtimefmt', _('Original')))->setLabel(_('Log time format')),
|
||
|
(new CTextBox('logtimefmt', ''))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
);
|
||
|
|
||
|
// Append value map select when only one host or template is selected.
|
||
|
if ($data['single_host_selected'] && ($data['context'] === 'template' || !$data['discovered_host'])) {
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[valuemapid]', 'valuemapid_div', _('Original')))->setLabel(_('Value mapping')),
|
||
|
(new CDiv([
|
||
|
(new CMultiSelect([
|
||
|
'name' => 'valuemapid',
|
||
|
'object_name' => $data['context'] === 'host' ? 'valuemaps' : 'template_valuemaps',
|
||
|
'multiple' => false,
|
||
|
'data' => [],
|
||
|
'popup' => [
|
||
|
'parameters' => [
|
||
|
'srctbl' => $data['context'] === 'host' ? 'valuemaps' : 'template_valuemaps',
|
||
|
'srcfld1' => 'valuemapid',
|
||
|
'dstfrm' => $form->getName(),
|
||
|
'dstfld1' => 'valuemapid',
|
||
|
'hostids' => [$data['hostid']],
|
||
|
'context' => $data['context'],
|
||
|
'editable' => true
|
||
|
]
|
||
|
]
|
||
|
]))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
]))->setId('valuemapid_div')
|
||
|
);
|
||
|
}
|
||
|
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[allow_traps]', 'allow_traps', _('Original')))->setLabel(_('Enable trapping')),
|
||
|
(new CRadioButtonList('allow_traps', HTTPCHECK_ALLOW_TRAPS_OFF))
|
||
|
->addValue(_('Yes'), HTTPCHECK_ALLOW_TRAPS_ON)
|
||
|
->addValue(_('No'), HTTPCHECK_ALLOW_TRAPS_OFF)
|
||
|
->setModern(true)
|
||
|
)
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[trapper_hosts]', 'trapper_hosts', _('Original')))->setLabel(_('Allowed hosts')),
|
||
|
(new CTextBox('trapper_hosts', ''))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
);
|
||
|
|
||
|
// Append master item select to form list.
|
||
|
if ($data['single_host_selected']) {
|
||
|
if (!$data['prototype']) {
|
||
|
$master_item = (new CDiv([
|
||
|
(new CMultiSelect([
|
||
|
'name' => 'master_itemid',
|
||
|
'object_name' => 'items',
|
||
|
'multiple' => false,
|
||
|
'data' => [],
|
||
|
'popup' => [
|
||
|
'parameters' => [
|
||
|
'srctbl' => 'items',
|
||
|
'srcfld1' => 'itemid',
|
||
|
'dstfrm' => $form->getName(),
|
||
|
'dstfld1' => 'master_itemid',
|
||
|
'hostid' => $data['hostid'],
|
||
|
'only_hostid' => $data['hostid']
|
||
|
]
|
||
|
]
|
||
|
]))
|
||
|
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
->setAriaRequired(true)
|
||
|
]))->setId('master_item');
|
||
|
}
|
||
|
else {
|
||
|
$master_item = [
|
||
|
(new CTextBox('master_itemname', '', true))
|
||
|
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
->setAriaRequired(),
|
||
|
(new CVar('master_itemid', '', 'master_itemid'))
|
||
|
];
|
||
|
|
||
|
$master_item[] = (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN);
|
||
|
$master_item[] = (new CButton('button', _('Select')))
|
||
|
->addClass(ZBX_STYLE_BTN_GREY)
|
||
|
->removeId()
|
||
|
->setAttribute('data-hostid', $data['hostid'])
|
||
|
->onClick('
|
||
|
PopUp("popup.generic", {
|
||
|
srctbl: "items",
|
||
|
srcfld1: "itemid",
|
||
|
srcfld2: "name",
|
||
|
dstfrm: "'.$form->getName().'",
|
||
|
dstfld1: "master_itemid",
|
||
|
dstfld2: "master_itemname",
|
||
|
only_hostid: this.dataset.hostid,
|
||
|
normal_only: 1
|
||
|
}, {dialogue_class: "modal-popup-generic"});
|
||
|
');
|
||
|
|
||
|
$master_item[] = (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN);
|
||
|
$master_item[] = (new CButton('button', _('Select prototype')))
|
||
|
->addClass(ZBX_STYLE_BTN_GREY)
|
||
|
->removeId()
|
||
|
->setAttribute('data-parent_discoveryid', $data['parent_discoveryid'])
|
||
|
->onClick('
|
||
|
PopUp("popup.generic", {
|
||
|
srctbl: "item_prototypes",
|
||
|
srcfld1: "itemid",
|
||
|
srcfld2: "name",
|
||
|
dstfrm: "'.$form->getName().'",
|
||
|
dstfld1: "master_itemid",
|
||
|
dstfld2: "master_itemname",
|
||
|
parent_discoveryid: this.dataset.parent_discoveryid
|
||
|
}, {dialogue_class: "modal-popup-generic"});
|
||
|
');
|
||
|
}
|
||
|
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[master_itemid]', 'master_item', _('Original')))->setLabel(_('Master item')),
|
||
|
(new CDiv([
|
||
|
(new CVar('master_itemname')),
|
||
|
$master_item
|
||
|
]))->setId('master_item')
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// Append description to form list.
|
||
|
$item_form_list->addRow(
|
||
|
(new CVisibilityBox('visible[description]', 'description', _('Original')))->setLabel(_('Description')),
|
||
|
(new CTextArea('description', ''))
|
||
|
->setAdaptiveWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
|
||
|
->setMaxlength(DB::getFieldLength('items', 'description'))
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
* Tags tab
|
||
|
*/
|
||
|
$tags_form_list = (new CFormList('tags-form-list'))
|
||
|
->addRow(
|
||
|
(new CVisibilityBox('visible[tags]', 'tags-div', _('Original')))->setLabel(_('Tags')),
|
||
|
(new CDiv([
|
||
|
(new CRadioButtonList('mass_update_tags', ZBX_ACTION_ADD))
|
||
|
->addValue(_('Add'), ZBX_ACTION_ADD)
|
||
|
->addValue(_('Replace'), ZBX_ACTION_REPLACE)
|
||
|
->addValue(_('Remove'), ZBX_ACTION_REMOVE)
|
||
|
->setModern(true)
|
||
|
->addStyle('margin-bottom: 10px;'),
|
||
|
renderTagTable([['tag' => '', 'value' => '']])
|
||
|
->setHeader([_('Name'), _('Value'), _('Action')])
|
||
|
->addClass('tags-table')
|
||
|
]))->setId('tags-div')
|
||
|
);
|
||
|
|
||
|
$tabs = (new CTabView())
|
||
|
->addTab('item_tab', $data['prototype'] ? _('Item prototype') : _('Item'), $item_form_list)
|
||
|
->addTab('tags_tab', _('Tags'), $tags_form_list)
|
||
|
->addTab('preprocessing_tab', _('Preprocessing'), $preprocessing_form_list)
|
||
|
->setSelected(0);
|
||
|
|
||
|
// Append tabs to form.
|
||
|
$form->addItem($tabs);
|
||
|
|
||
|
$form->addItem(new CJsScript($this->readJsFile('popup.massupdate.tmpl.js.php')));
|
||
|
$form->addItem(new CJsScript($this->readJsFile('popup.massupdate.item.js.php', $data)));
|
||
|
$form->addItem(new CJsScript($this->readJsFile('../../../include/views/js/item.preprocessing.js.php')));
|
||
|
$form->addItem(new CJsScript($this->readJsFile('../../../include/views/js/editabletable.js.php')));
|
||
|
$form->addItem(new CJsScript($this->readJsFile('../../../include/views/js/itemtest.js.php')));
|
||
|
|
||
|
$output = [
|
||
|
'header' => $data['title'],
|
||
|
'doc_url' => CDocHelper::getUrl(CDocHelper::POPUP_MASSUPDATE_ITEM),
|
||
|
'body' => $form->toString(),
|
||
|
'buttons' => [
|
||
|
[
|
||
|
'title' => _('Update'),
|
||
|
'class' => '',
|
||
|
'keepOpen' => true,
|
||
|
'isSubmit' => true,
|
||
|
'action' => 'return submitPopup(overlay);'
|
||
|
]
|
||
|
]
|
||
|
];
|
||
|
|
||
|
$output['script_inline'] = $this->readJsFile('popup.massupdate.js.php');
|
||
|
$output['script_inline'] .= getPagePostJs();
|
||
|
|
||
|
if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
|
||
|
CProfiler::getInstance()->stop();
|
||
|
$output['debug'] = CProfiler::getInstance()->make()->toString();
|
||
|
}
|
||
|
|
||
|
echo json_encode($output);
|