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
26require_once dirname(__FILE__).'/js/configuration.trigger.massupdate.js.php';
27
28$widget = (new CWidget())->setTitle(_('Triggers'));
29
30// Append host summary to widget header.
31if ($data['hostid'] != 0) {
32	$widget->addItem(get_header_host_table('triggers', $data['hostid']));
33}
34
35// Create form.
36$form = (new CForm())
37	->setName('triggersForm')
38	->setAttribute('aria-labeledby', ZBX_STYLE_PAGE_TITLE)
39	->addVar('hostid', $data['hostid'])
40	->addVar('action', $data['action']);
41
42foreach ($data['g_triggerid'] as $triggerid) {
43	$form->addVar('g_triggerid['.$triggerid.']', $triggerid);
44}
45
46/*
47 * Trigger tab
48 */
49$trigger_form_list = (new CFormList('trigger-form-list'))
50	->addRow(
51		(new CVisibilityBox('visible[priority]', 'priority-div', _('Original')))
52			->setLabel(_('Severity'))
53			->setChecked(array_key_exists('priority', $data['visible']))
54			->setAttribute('autofocus', 'autofocus'),
55		(new CDiv(
56			new CSeverity([
57				'name' => 'priority',
58				'value' => (int) $data['priority']
59			])
60		))->setId('priority-div')
61	)
62	->addRow(
63		(new CVisibilityBox('visible[manual_close]', 'manual-close-div', _('Original')))
64			->setLabel(_('Allow manual close'))
65			->setChecked(array_key_exists('manual_close', $data['visible'])),
66		(new CDiv(
67			(new CRadioButtonList('manual_close', (int) $data['manual_close']))
68				->addValue(_('No'), ZBX_TRIGGER_MANUAL_CLOSE_NOT_ALLOWED)
69				->addValue(_('Yes'), ZBX_TRIGGER_MANUAL_CLOSE_ALLOWED)
70				->setModern(true)
71		))->setId('manual-close-div')
72	);
73
74/*
75 * Tags tab
76 */
77$tags_form_list = (new CFormList('tags-form-list'))
78	->addRow(
79		(new CVisibilityBox('visible[tags]', 'tags-div', _('Original')))
80			->setLabel(_('Tags'))
81			->setChecked(array_key_exists('tags', $data['visible'])),
82		(new CDiv([
83			(new CRadioButtonList('mass_update_tags', (int) $data['mass_update_tags']))
84				->addValue(_('Add'), ZBX_ACTION_ADD)
85				->addValue(_('Replace'), ZBX_ACTION_REPLACE)
86				->addValue(_('Remove'), ZBX_ACTION_REMOVE)
87				->setModern(true)
88				->addStyle('margin-bottom: 10px;'),
89			renderTagTable($data['tags'])
90				->setHeader([_('Name'), _('Value'), _('Action')])
91				->setId('tags-table')
92		]))->setId('tags-div')
93	);
94
95/*
96 * Dependencies tab
97 */
98$dependencies_form_list = new CFormList('dependencies-form-list');
99
100$dependencies_table = (new CTable())
101	->addStyle('width: 100%;')
102	->setHeader([_('Name'), _('Action')]);
103
104foreach ($data['dependencies'] as $dependency) {
105	$dependencies_form_list->addVar('dependencies[]', $dependency['triggerid'], 'dependencies_'.$dependency['triggerid']);
106
107	$dependency_description = CHtml::encode(
108		implode(', ', zbx_objectValues($dependency['hosts'], 'name')).NAME_DELIMITER.$dependency['description']
109	);
110
111	if ($dependency['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
112		$description = (new CLink($dependency_description,
113			'triggers.php?form=update&triggerid='.$dependency['triggerid']
114		))->setTarget('_blank');
115	}
116	else {
117		$description = $dependency_description;
118	}
119
120	$dependencies_table->addRow(
121		(new CRow([
122			$description,
123			(new CCol(
124				(new CButton('remove', _('Remove')))
125					->onClick('javascript: removeDependency(\''.$dependency['triggerid'].'\');')
126					->addClass(ZBX_STYLE_BTN_LINK)
127					->removeId()
128			))->addClass(ZBX_STYLE_NOWRAP)
129		]))->setId('dependency_'.$dependency['triggerid'])
130	);
131}
132
133$dependencies_form_list->addRow(
134	(new CVisibilityBox('visible[dependencies]', 'dependencies-div', _('Original')))
135		->setLabel(_('Replace dependencies'))
136		->setChecked(array_key_exists('dependencies', $data['visible'])),
137	(new CDiv([
138		$dependencies_table,
139		(new CButton('btn1', _('Add')))
140			->onClick('return PopUp("popup.generic",'.
141				json_encode([
142					'srctbl' => 'triggers',
143					'srcfld1' => 'triggerid',
144					'dstfrm' => 'massupdate',
145					'dstfld1' => 'new_dependency',
146					'dstact' => 'add_dependency',
147					'reference' => 'deptrigger',
148					'objname' => 'triggers',
149					'multiselect' => '1',
150					'with_triggers' => '1',
151					'noempty' => '1'
152				]).', null, this);'
153			)
154			->addClass(ZBX_STYLE_BTN_LINK)
155	]))
156		->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)
157		->addStyle('min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;')
158		->setId('dependencies-div')
159);
160
161// Append tabs to the form.
162$tabs = (new CTabView())
163	->addTab('trigger_tab', _('Trigger'), $trigger_form_list)
164	->addTab('tags_tab', _('Tags'), $tags_form_list)
165	->addTab('dependencies_tab', _('Dependencies'), $dependencies_form_list);
166
167if (!hasRequest('massupdate') && !hasRequest('add_dependency')) {
168	$tabs->setSelected(0);
169}
170
171// Append buttons to the form.
172$tabs->setFooter(makeFormFooter(
173	new CSubmit('massupdate', _('Update')),
174	[new CButtonCancel(url_param('hostid'))]
175));
176
177$form->addItem($tabs);
178
179$widget->addItem($form);
180
181$widget->show();
182