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