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('&nbsp;'))
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