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$widget = (new CWidget())->setTitle(_('Dashboard'));
23
24// create form
25$form = (new CForm())
26	->setName('dashconf')
27	->setId('dashform')
28	->addVar('filterEnable', $this->data['isFilterEnable']);
29
30// create form list
31$form_list = new CFormList('dashconfFormList');
32
33// append filter status to form list
34if ($this->data['isFilterEnable']) {
35	$filterStatusSpan = (new CSpan(_('Enabled')))
36		->addClass(ZBX_STYLE_LINK_ACTION)
37		->addClass(ZBX_STYLE_GREEN)
38		->onClick("create_var('".$form->getName()."', 'filterEnable', 0, true);")
39		->setAttribute('tabindex', 0);
40}
41else {
42	$filterStatusSpan = (new CSpan(_('Disabled')))
43		->addClass(ZBX_STYLE_LINK_ACTION)
44		->addClass(ZBX_STYLE_RED)
45		->onClick("$('dashform').enable(); create_var('".$form->getName()."', 'filterEnable', 1, true);")
46		->setAttribute('tabindex', 0);
47}
48$form_list->addRow(_('Dashboard filter'), $filterStatusSpan);
49
50// append host groups to form list
51$hostGroupsComboBox = new CComboBox('grpswitch', $this->data['grpswitch'], 'submit()', [
52	0 => _('All'),
53	1 => _('Selected')
54]);
55if (!$this->data['isFilterEnable']) {
56	$hostGroupsComboBox->setAttribute('disabled', 'disabled');
57}
58$form_list->addRow(_('Host groups'), $hostGroupsComboBox);
59
60if ($this->data['grpswitch']) {
61	$form_list->addRow(_('Show selected groups'), (new CMultiSelect([
62		'name' => 'groupids[]',
63		'objectName' => 'hostGroup',
64		'data' => $this->data['groups'],
65		'disabled' => !$this->data['isFilterEnable'],
66		'popup' => [
67			'parameters' => 'srctbl=host_groups&dstfrm='.$form->getName().'&dstfld1=groupids_'.
68				'&srcfld1=groupid&multiselect=1'
69		]
70	]))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH));
71	$form_list->addRow(_('Hide selected groups'), (new CMultiSelect([
72		'name' => 'hidegroupids[]',
73		'objectName' => 'hostGroup',
74		'data' => $this->data['hideGroups'],
75		'disabled' => !$this->data['isFilterEnable'],
76		'popup' => [
77			'parameters' => 'srctbl=host_groups&dstfrm='.$form->getName().'&dstfld1=hidegroupids_'.
78				'&srcfld1=groupid&multiselect=1'
79		]
80	]))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH));
81}
82
83// append host in maintenance checkbox to form list
84$maintenanceCheckBox = (new CCheckBox('maintenance'))->setChecked($this->data['maintenance'] == 1);
85if (!$this->data['isFilterEnable']) {
86	$maintenanceCheckBox->setAttribute('disabled', 'disabled');
87}
88$form_list->addRow(_('Hosts'),
89	new CLabel([$maintenanceCheckBox, _('Show hosts in maintenance')], 'maintenance')
90);
91
92// append trigger severities to form list
93$severities = [];
94foreach ($this->data['severities'] as $severity) {
95	$serverityCheckBox = (new CCheckBox('trgSeverity['.$severity.']'))
96		->setChecked(isset($this->data['severity'][$severity]))
97		->setEnabled($this->data['isFilterEnable']);
98	$severities[] = new CLabel([$serverityCheckBox, getSeverityName($severity, $this->data['config'])],
99		'trgSeverity['.$severity.']'
100	);
101	$severities[] = BR();
102}
103array_pop($severities);
104
105$form_list->addRow(_('Triggers with severity'), $severities);
106
107$form_list->addRow(_('Trigger name like'),
108	(new CTextBox('trigger_name', $data['trigger_name']))
109		->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
110		->setEnabled($data['isFilterEnable'])
111);
112
113if ($data['config']['event_ack_enable']) {
114	// append problem display to form list
115	$ext_ack_combobox = new CComboBox('extAck', $data['extAck'], null, [
116		EXTACK_OPTION_ALL => _('All'),
117		EXTACK_OPTION_BOTH => _('Separated'),
118		EXTACK_OPTION_UNACK => _('Unacknowledged only')
119	]);
120	$ext_ack_combobox->setEnabled($data['isFilterEnable']);
121	$form_list->addRow(_('Problem display'), $ext_ack_combobox);
122}
123
124// create tab
125$tab = new CTabView();
126$tab->addTab('dashconfTab', _('Filter'), $form_list);
127
128$tab->setFooter(makeFormFooter(
129	new CSubmit('update', _('Update')),
130	[new CButtonCancel()]
131));
132
133$form->addItem($tab);
134$widget->addItem($form);
135
136return $widget;
137