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$user_navigation = (new CList()) 23 ->addClass(ZBX_STYLE_TOP_NAV_ICONS) 24 ->addItem( 25 (new CForm('get', 'search.php')) 26 ->cleanItems() 27 ->addItem([ 28 (new CTextBox('search', getRequest('search', ''), false, 255)) 29 ->addClass(ZBX_STYLE_SEARCH) 30 ->setAttribute('aria-label', _('type here to search')) 31 ->disableAutocomplete(), 32 (new CSubmitButton(' ')) 33 ->addClass(ZBX_STYLE_BTN_SEARCH) 34 ->setTitle(_('Search')) 35 ]) 36 ->setAttribute('role', 'search') 37 ) 38 ->addItem( 39 (new CList()) 40 ->setAttribute('role', 'navigation') 41 ->setAttribute('aria-label', _('User menu')) 42 ->addItem(CBrandHelper::isRebranded() 43 ? null 44 : (new CListItem( 45 (new CLink(_('Support'), $data['support_url'])) 46 ->addClass(ZBX_STYLE_TOP_NAV_SUPPORT) 47 ->setAttribute('target', '_blank') 48 ->setTitle(_('Zabbix Technical Support')) 49 ))->addStyle('padding-left:0') 50 ) 51 ->addItem(CBrandHelper::isRebranded() 52 ? null 53 : (new CListItem( 54 (new CLink('Share', 'https://share.zabbix.com/')) 55 ->addClass(ZBX_STYLE_TOP_NAV_ZBBSHARE) 56 ->setAttribute('target', '_blank') 57 ->setTitle(_('Zabbix Share')) 58 )) 59 ) 60 ->addItem((new CLink(SPACE, CBrandHelper::getHelpUrl())) 61 ->addClass(ZBX_STYLE_TOP_NAV_HELP) 62 ->setAttribute('target', '_blank') 63 ->setTitle(_('Help')) 64 ) 65 ->addItem( 66 $data['user']['is_guest'] 67 ? (new CSpan()) 68 ->addClass(ZBX_STYLE_TOP_NAV_GUEST) 69 ->setTitle(getUserFullname($data['user'])) 70 : (new CLink(null, 'profile.php')) 71 ->addClass(ZBX_STYLE_TOP_NAV_PROFILE) 72 ->setTitle(getUserFullname($data['user'])) 73 ) 74 ->addItem( 75 (new CLink(SPACE, 'javascript:;')) 76 ->addClass(ZBX_STYLE_TOP_NAV_SIGNOUT) 77 ->setTitle(_('Sign out')) 78 ->onClick('ZABBIX.logout()') 79 ) 80 ); 81 82// 1st level menu 83$top_menu = (new CDiv()) 84 ->addItem( 85 (new CLink( 86 (new CDiv()) 87 ->addClass(ZBX_STYLE_LOGO) 88 ->addStyle(CBrandHelper::getLogoStyle()), 89 'zabbix.php?action=dashboard.view' 90 )) 91 ->addClass(ZBX_STYLE_HEADER_LOGO) 92 ) 93 ->addItem( 94 (new CTag('nav', true, (new CList($data['menu']['main_menu']))->addClass(ZBX_STYLE_TOP_NAV))) 95 ->setAttribute('aria-label', _('Main navigation')) 96 ) 97 ->addItem($user_navigation) 98 ->addClass(ZBX_STYLE_TOP_NAV_CONTAINER) 99 ->setId('mmenu'); 100 101$sub_menu_div = (new CTag('nav', true)) 102 ->setAttribute('aria-label', _('Sub navigation')) 103 ->addClass(ZBX_STYLE_TOP_SUBNAV_CONTAINER) 104 ->onMouseover('javascript: MMenu.submenu_mouseOver();') 105 ->onMouseout('javascript: MMenu.mouseOut();'); 106 107// 2nd level menu 108foreach ($data['menu']['sub_menus'] as $label => $sub_menu) { 109 $sub_menu_row = (new CList()) 110 ->addClass(ZBX_STYLE_TOP_SUBNAV) 111 ->setId('sub_'.$label); 112 113 foreach ($sub_menu as $id => $sub_page) { 114 $url = new CUrl($sub_page['menu_url']); 115 if ($sub_page['menu_action'] !== null) { 116 $url->setArgument('action', $sub_page['menu_action']); 117 } 118 119 $url 120 ->setArgument('ddreset', 1) 121 ->removeArgument('sid'); 122 123 $sub_menu_item = (new CLink($sub_page['menu_text'], $url->getUrl()))->setAttribute('tabindex', 0); 124 if ($sub_page['selected']) { 125 $sub_menu_item->addClass(ZBX_STYLE_SELECTED); 126 } 127 128 $sub_menu_row->addItem($sub_menu_item); 129 } 130 131 if ($data['menu']['selected'] === $label) { 132 $sub_menu_row->setAttribute('style', 'display: block;'); 133 insert_js('MMenu.def_label = '.zbx_jsvalue($label)); 134 } 135 else { 136 $sub_menu_row->setAttribute('style', 'display: none;'); 137 } 138 $sub_menu_div->addItem($sub_menu_row); 139} 140 141if ($data['server_name'] !== '') { 142 $sub_menu_div->addItem( 143 (new CDiv($data['server_name']))->addClass(ZBX_STYLE_SERVER_NAME) 144 ); 145} 146 147(new CTag('header', true)) 148 ->addItem( 149 (new CDiv()) 150 ->addItem($top_menu) 151 ->addItem($sub_menu_div) 152 ) 153 ->show(); 154