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())
23	->setTitle(_('Screens'))
24	->addItem((new CList())
25	->addClass(ZBX_STYLE_OBJECT_GROUP)
26	->addItem([
27		(new CSpan())->addItem(new CLink(_('All screens'), 'screenconf.php')),
28		'/',
29		(new CSpan())
30			->addClass(ZBX_STYLE_SELECTED)
31			->addItem(
32				new CLink($data['screen']['name'], 'screens.php?elementid='.$data['screen']['screenid'].
33					'&fullscreen='.$data['fullscreen']
34				)
35			)
36	]))
37	->addItem((new CFilter('web.screens.filter.state'))->addNavigator());
38
39$controls = (new CList())->addItem(
40	new CComboBox('config', 'screens.php', 'redirect(this.options[this.selectedIndex].value);', [
41		'screens.php' => _('Screens'),
42		'slides.php' => _('Slide shows')
43	])
44);
45
46// Append screens combobox to page header.
47$form = (new CForm())
48	->setName('headerForm')
49	->addVar('fullscreen', $data['fullscreen']);
50
51if (check_dynamic_items($data['screen']['screenid'], 0)) {
52	$pageFilter = new CPageFilter([
53		'groups' => [
54			'monitored_hosts' => true,
55			'with_items' => true
56		],
57		'hosts' => [
58			'monitored_hosts' => true,
59			'with_items' => true,
60			'DDFirstLabel' => _('not selected')
61		],
62		'hostid' => getRequest('hostid'),
63		'groupid' => getRequest('groupid')
64	]);
65	$_REQUEST['groupid'] = $pageFilter->groupid;
66	$_REQUEST['hostid'] = $pageFilter->hostid;
67
68	$controls
69		->addItem([
70			new CLabel(_('Group'), 'groupid'),
71			(new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
72			$pageFilter->getGroupsCB()
73		])
74		->addItem([
75			new CLabel(_('Host'), 'hostid'),
76			(new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
77			$pageFilter->getHostsCB()
78		]);
79}
80
81// page header
82$controls
83	->addItem($data['screen']['editable']
84		? (new CButton('edit', _('Edit screen')))
85			->onClick('redirect("screenedit.php?screenid='.$data['screen']['screenid'].'", "get", "", false, false)')
86		: null
87	)
88	->addItem(get_icon('favourite',
89		[
90			'fav' => 'web.favorite.screenids',
91			'elname' => 'screenid',
92			'elid' => $data['screen']['screenid']
93		]
94	))
95	->addItem(get_icon('fullscreen', ['fullscreen' => $data['fullscreen']]));
96
97$form->addItem($controls);
98
99$widget->setControls($form);
100
101// Append screens to widget.
102$screenBuilder = new CScreenBuilder([
103	'screenid' => $data['screen']['screenid'],
104	'mode' => SCREEN_MODE_PREVIEW,
105	'profileIdx' => 'web.screens',
106	'profileIdx2' => $data['screen']['screenid'],
107	'groupid' => getRequest('groupid'),
108	'hostid' => getRequest('hostid'),
109	'period' => $data['period'],
110	'stime' => $data['stime']
111]);
112$widget->addItem(
113	(new CDiv($screenBuilder->show()))->addClass(ZBX_STYLE_TABLE_FORMS_CONTAINER)
114);
115
116CScreenBuilder::insertScreenStandardJs([
117	'timeline' => $screenBuilder->timeline,
118	'profileIdx' => $screenBuilder->profileIdx
119]);
120
121return $widget;
122