<?php /* ** 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 */ if (array_key_exists('error', $data)) { $output['error'] = $data['error']; $output['error']['expression'] = $data['expression']; } else { $expression_table = (new CTable()) ->setHeader([ $data['readonly'] ? null : _('Target'), _('Expression'), $data['readonly'] ? null : _('Action'), _('Info') ]); $allowed_testing = true; if ($data['expression_tree']) { foreach ($data['expression_tree'] as $i => $e) { $info_icons = []; if (isset($e['expression']['levelErrors'])) { $allowed_testing = false; $errors = []; if (is_array($e['expression']['levelErrors'])) { foreach ($e['expression']['levelErrors'] as $expVal => $errTxt) { if ($errors) { $errors[] = BR(); } $errors[] = $expVal.': '.$errTxt; } } $info_icons[] = makeErrorIcon($errors); } foreach ($e['list'] as &$obj) { if ($obj instanceof CLinkAction && $obj->getAttribute('class') == ZBX_STYLE_LINK_ACTION) { // Templated or discovered trigger. if ($data['readonly']) { // Make all links inside inactive. $obj = new CSpan($obj->items); } else { $obj->addClass(($data['expression_type'] === TRIGGER_EXPRESSION) ? 'js-expression' : 'js-recovery-expression' ); } } } unset($obj); $expression_table->addRow( new CRow([ !$data['readonly'] ? (new CCheckBox(($data['expression_type'] === TRIGGER_EXPRESSION) ? 'expr_target_single' : 'recovery_expr_target_single', $e['id'] )) ->setChecked($i == 0) ->addClass(($data['expression_type'] === TRIGGER_EXPRESSION) ? 'js-check-target' : 'js-check-recovery-target' ) ->removeId() : null, (new CDiv($e['list']))->addClass(ZBX_STYLE_WORDWRAP), !$data['readonly'] ? (new CCol((new CButtonLink(_('Remove'))) ->addClass(($data['expression_type'] === TRIGGER_EXPRESSION) ? 'js_remove_expression' : 'js_remove_recovery_expression' ) ->setAttribute('data-id', $e['id'])) )->addClass(ZBX_STYLE_NOWRAP) : null, makeInformationList($info_icons) ]) ); } } else { $allowed_testing = false; $data['expression_formula'] = ''; } $testButton = (new CButton('test_expression', _('Test'))) ->setId(($data['expression_type'] === TRIGGER_EXPRESSION) ? 'test-expression' : 'test-recovery-expression') ->addClass(ZBX_STYLE_BTN_LINK); if (!$allowed_testing) { $testButton->setEnabled(false); } if ($data['expression_formula'] === '') { $testButton->setEnabled(false); } $expression_table->addItem( (new CTag('tfoot', true))->addItem( (new CCol($testButton))->setColSpan(4) ) ); $output = [ 'body' => implode('', [ $data['expression_formula'] ? new CDiv([$data['expression_formula']]) : '', (new CDiv($expression_table)) ->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR) ->setAttribute('style', 'min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;') ]), 'expression' => $data['expression'] ]; } echo json_encode($output);