1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22/** 23 * @var CView $this 24 */ 25 26$form = (new CForm()) 27 ->cleanItems() 28 ->setId('acknowledge_form') 29 ->addVar('action', 'popup.acknowledge.create') 30 ->addVar('eventids', $data['eventids']); 31 32$form_list = (new CFormList()) 33 ->addRow(new CLabel(_('Problem')), (new CDiv($data['problem_name']))->addClass(ZBX_STYLE_WORDBREAK)) 34 ->addRow( 35 new CLabel(_('Message'), 'message'), 36 (new CTextArea('message', $data['message'])) 37 ->setWidth(ZBX_TEXTAREA_BIG_WIDTH) 38 ->setAttribute('maxlength', DB::getFieldLength('acknowledges', 'message')) 39 ->setEnabled($data['allowed_add_comments']) 40 ); 41 42if (array_key_exists('history', $data)) { 43 $form_list->addRow(_('History'), 44 (new CDiv(makeEventHistoryTable($data['history'], $data['users']))) 45 ->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR) 46 ->setAttribute('style', 'min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;') 47 ); 48} 49 50$selected_events = count($data['eventids']); 51 52$form_list 53 ->addRow(_x('Scope', 'selected problems'), 54 (new CDiv( 55 (new CRadioButtonList('scope', $data['scope'])) 56 ->makeVertical() 57 ->addValue([ 58 _n('Only selected problem', 'Only selected problems', $selected_events), 59 ($selected_events > 1) ? (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN) : null, 60 ($selected_events > 1) ? new CSup(_n('%1$s event', '%1$s events', $selected_events)) : null 61 ], ZBX_ACKNOWLEDGE_SELECTED) 62 ->addValue([ 63 _('Selected and all other problems of related triggers'), 64 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 65 new CSup(_n('%1$s event', '%1$s events', $data['related_problems_count'])) 66 ], ZBX_ACKNOWLEDGE_PROBLEM) 67 )) 68 ->setAttribute('style', 'min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;') 69 ->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR) 70 ) 71 ->addRow(_('Change severity'), 72 (new CList([ 73 (new CCheckBox('change_severity', ZBX_PROBLEM_UPDATE_SEVERITY)) 74 ->onClick('javascript: jQuery("#severity input").attr("disabled", this.checked ? false : true)') 75 ->setChecked($data['change_severity']) 76 ->setEnabled($data['allowed_change_severity'] && $data['problem_severity_can_be_changed']), 77 (new CSeverity(['name' => 'severity', 'value' => $data['severity']], $data['change_severity'])) 78 ])) 79 ->addClass(ZBX_STYLE_HOR_LIST) 80 ); 81 82if ($data['has_unack_events']) { 83 $form_list->addRow(_('Acknowledge'), 84 (new CCheckBox('acknowledge_problem', ZBX_PROBLEM_UPDATE_ACKNOWLEDGE)) 85 ->onChange("$('#unacknowledge_problem').prop('disabled', this.checked)") 86 ->setEnabled($data['allowed_acknowledge']) 87 ); 88} 89 90if ($data['has_ack_events']) { 91 $form_list->addRow(_('Unacknowledge'), 92 (new CCheckBox('unacknowledge_problem', ZBX_PROBLEM_UPDATE_UNACKNOWLEDGE)) 93 ->onChange("$('#acknowledge_problem').prop('disabled', this.checked)") 94 ->setEnabled($data['allowed_acknowledge']) 95 ); 96} 97 98$form_list 99 ->addRow(_('Close problem'), 100 (new CCheckBox('close_problem', ZBX_PROBLEM_UPDATE_CLOSE)) 101 ->setChecked($data['close_problem']) 102 ->setEnabled($data['allowed_close'] && $data['problem_can_be_closed']) 103 ) 104 ->addRow('', 105 (new CDiv((new CLabel(_('At least one update operation or message must exist.')))->setAsteriskMark())) 106 ); 107 108$form->addItem($form_list); 109 110$output = [ 111 'header' => $data['title'], 112 'body' => (new CDiv([$data['errors'], $form]))->toString(), 113 'buttons' => [ 114 [ 115 'title' => _('Update'), 116 'class' => '', 117 'keepOpen' => true, 118 'isSubmit' => true, 119 'action' => 'return submitAcknowledge(overlay);' 120 ] 121 ], 122 'script_inline' => $this->readJsFile('popup.acknowledge.edit.js.php') 123]; 124 125if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) { 126 CProfiler::getInstance()->stop(); 127 $output['debug'] = CProfiler::getInstance()->make()->toString(); 128} 129 130echo json_encode($output); 131