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