232
239
'default_page_id' => 1,
233
240
'forse_disable_subnodes'=> true,
235
ZBX_DISTRIBUTED ? array('url'=>'nodes.php' ,'label'=>S_NODES) : null ,
242
ZBX_DISTRIBUTED?array('url'=>'nodes.php','label'=>S_NODES):null,
236
243
array('url'=>'authentication.php' ,'label'=>S_AUTHENTICATION),
237
array('url'=>'users.php' ,'label'=>S_USERS ,
244
array('url'=>'users.php',
238
246
'sub_pages'=>array('popup_media.php','popup_usrgrp.php','popup_right.php','popup_users.php')
240
array('url'=>'media_types.php' ,'label'=>S_MEDIA_TYPES ),
248
array('url'=>'media_types.php' ,'label'=>S_MEDIA_TYPES),
241
249
array('url'=>'scripts.php' ,'label'=>S_SCRIPTS),
242
array('url'=>'audit.php' ,'label'=>S_AUDIT ),
243
array('url'=>'queue.php' ,'label'=>S_QUEUE ),
244
array('url'=>'report4.php' ,'label'=>S_NOTIFICATIONS ),
250
array('url'=>'audit.php' ,'label'=>S_AUDIT),
251
array('url'=>'queue.php' ,'label'=>S_QUEUE),
252
array('url'=>'report4.php' ,'label'=>S_NOTIFICATIONS),
245
253
array('url'=>'locales.php' ,'label'=>S_LOCALES ),
246
array('url'=>'instal.php' ,'label'=>S_INSTALLATION ,
254
array('url'=>'instal.php' ,'label'=>S_INSTALLATION,
247
255
'sub_pages'=>array('setup.php','warning.php'))
251
259
'label' => S_LOGIN,
252
261
'default_page_id' => 0,
253
262
'forse_disable_subnodes'=> true,
255
array('url'=>'index.php',
256
'sub_pages'=>array('profile.php')
264
array('url'=>'index.php','sub_pages'=>array('profile.php'))
262
$main_menu_row = array();
263
$sub_menu_row = array();
265
foreach($ZBX_MENU as $label=>$sub){
266
// Check permissions for main menu
268
if(!defined('ZBX_PAGE_NO_AUTHERIZATION')){
269
if(isset($sub['user_type'])){
270
if($USER_DETAILS['type'] < $sub['user_type']){
275
if(isset($sub['node_perm'])){
276
if(0 == count(get_accessible_nodes_by_user($USER_DETAILS,$sub['node_perm']))){
283
/* if(isset($USER_DETAILS['sessionid']))
284
$sub['label'] = S_LOGOUT;
291
// End of main menu permissions checking
294
foreach($sub['pages'] as $id => $sub_pages){
296
if(!defined('ZBX_PAGE_NO_AUTHERIZATION')){
297
if(isset($sub_pages['user_type'])){
298
if($USER_DETAILS['type'] < $sub_pages['user_type']){
299
unset($sub['pages'][$id]);
304
if(isset($sub_pages['node_perm'])){
305
if ( 0 == count(get_accessible_nodes_by_user($USER_DETAILS,$sub_pages['node_perm']))){
306
unset($sub['pages'][$id]);
312
if(isset($page_exist)) continue;
314
if($page['file'] == $sub_pages['url']){
315
if(isset($sub_pages['label'])){
316
$menu_url = $sub_pages['url'];
320
$sub['pages'][$id]['active'] = true; /* mark as active */
322
else if(isset($sub_pages['sub_pages'])){
323
if(str_in_array($page['file'], $sub_pages['sub_pages'])){
324
if(isset($sub_pages['label'])){
325
$menu_url = $sub_pages['url'];
328
$sub['pages'][$id]['active'] = true; /* mark as active */
332
if (isset($page_exist) &&
333
( isset($sub['forse_disable_subnodes']) || isset($sub_pages['forse_disable_subnodes']) ) &&
334
!defined('ZBX_DISABLE_SUBNODES'))
336
define('ZBX_DISABLE_SUBNODES', 1);
340
if(isset($menu_url)){ /* active menu */
343
update_profile('web.menu.'.$label.'.last', $menu_url, PROFILE_TYPE_STR);
346
$denyed_page_requested = true;
350
foreach($sub['pages'] as $sub_pages){
351
if(!isset($sub_pages['label'])) continue;
353
$label = new CLink($sub_pages['label'], $sub_pages['url'],'highlight');
354
if(isset($sub_pages['active'])) $label = new CSpan($label, 'active');
356
array_push($sub_menu_row,
358
new CSpan(SPACE.SPACE.'|'.SPACE.SPACE, 'divider')
363
if(isset($deny)) continue;
365
$class = 'horizontal_menu_n';
367
$menu_url = get_profile('web.menu.'.$label.'.last',false);
370
$menu_url = $sub['pages'][$sub['default_page_id']]['url'];
373
array_push($main_menu_row, new CCol(new CLink($sub['label'], $menu_url, 'highlight'),$class));
374
unset($menu_url, $class);
268
//SDI($USER_DETAILS);
269
$deny = !defined('ZBX_PAGE_NO_AUTHERIZATION');
270
$main_menu = array();
271
$sub_menus = array();
272
foreach($ZBX_MENU as $label => $menu){
273
// Check to show menu or not
276
if(isset($menu['user_type'])){
277
$show_menu &= ($menu['user_type'] <= $USER_DETAILS['type']);
280
if(isset($menu['node_perm']) && isset($DB['DB']) && !is_null($DB['DB'])){
281
$available_nodes = get_accessible_nodes_by_user($USER_DETAILS,$menu['node_perm']);
282
$show_menu &= (0 < count($available_nodes));
285
if($label == 'login'){
290
$menu_class = 'horizontal_menu_n';
292
$page_exists = false;
293
$sub_menus[$label] = array();
294
foreach($menu['pages'] as $id => $sub_page){
295
$show_sub_menu = true;
297
if(!isset($sub_page['label'])) $show_sub_menu = false;
299
if(isset($sub_page['user_type']) && ($USER_DETAILS['type'] < $sub_page['user_type'])){
300
$show_sub_menu = false;
303
if(isset($sub_pages['node_perm']) && isset($DB['DB']) && !is_null($DB['DB'])){
304
$available_nodes = get_accessible_nodes_by_user($USER_DETAILS,$sub_page['node_perm']);
305
if(0 == count($available_nodes)){
306
$show_sub_menu = false;
310
$row = array('menu_text' => isset($sub_page['label'])?$sub_page['label']:'',
311
'menu_url'=> $sub_page['url'],
312
'class'=> 'highlight',
315
$sub_menu_active = ($page['file'] == $sub_page['url']);
316
$sub_menu_active |= (isset($sub_page['sub_pages']) && str_in_array($page['file'], $sub_page['sub_pages']));
318
if($sub_menu_active){
320
$deny &= ($USER_DETAILS['type'] < $menu['user_type']);
321
// END OF PERMISSION CHECK
322
$menu_class = 'active';
324
$page['menu'] = $label;
325
$row['selected'] = true;
327
if(!defined('ZBX_PAGE_NO_MENU'))
328
update_profile('web.menu.'.$label.'.last', $sub_page['url'], PROFILE_TYPE_STR);
331
if($show_sub_menu) $sub_menus[$label][] = $row;
334
if($page_exists && !defined('ZBX_DISABLE_SUBNODES') &&
335
(isset($menu['forse_disable_subnodes']) || isset($sub_page['forse_disable_subnodes'])))
337
define('ZBX_DISABLE_SUBNODES', 1);
339
//SDI($label.' : '.$show_menu.' : '.$deny);
340
if($page_exists && $deny){
341
$denyed_page_requested = true;
345
unset($sub_menus[$label]);
349
$menu_url = get_profile('web.menu.'.$label.'.last',false);
350
// if(ZBX_DISABLE_MENU_CACHE == 1) $menu_url = $menu['pages'][$sub_menus['default_page_id']]['url'];
352
$mmenu_entry = new CCol($menu['label'], $menu_class);
353
$mmenu_entry->addOption('id', $label);
354
$mmenu_entry->addAction('onclick', "javascript: location.href = '$menu_url';");
355
$mmenu_entry->addAction('onmouseover', 'javascript: MMenu.mouseOver("'.$label.'");');
356
$mmenu_entry->addAction('onmouseout', 'javascript: MMenu.mouseOut();');
358
array_push($main_menu, $mmenu_entry);
377
if((!isset($page_exist) && $page['type']!=PAGE_TYPE_XML)){
361
if(!isset($page_exists) && ($page['type']!=PAGE_TYPE_XML)){
378
362
$denyed_page_requested = true;
381
365
zbx_flush_post_cookies(isset($denyed_page_requested));
383
if($page['type'] == PAGE_TYPE_HTML)
367
if($page['type'] == PAGE_TYPE_HTML){
386
369
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
387
370
<html xmlns="http://www.w3.org/1999/xhtml">
467
450
if(!defined('ZBX_PAGE_NO_MENU')){
468
451
COpt::compare_files_with_menu($ZBX_MENU);
470
$help = new CLink(S_HELP, "http://www.zabbix.com/manual/v1.4", "small_font");
471
$help->SetTarget('_blank');
472
$support = new CLink(S_GET_SUPPORT, "http://www.zabbix.com/support.php", "small_font");
473
$support->SetTarget('_blank');
453
$help = new CLink(S_HELP, 'http://www.zabbix.com/documentation.php', 'small_font', null, true);
454
$help->setTarget('_blank');
455
$support = new CLink(S_GET_SUPPORT, 'http://www.zabbix.com/support.php', 'small_font', null, true);
456
$support->setTarget('_blank');
474
457
$printview = new CLink(S_PRINT, $_SERVER['REQUEST_URI'].(empty($_GET)?'?':'&').'print=1', 'small_font');
476
459
$page_header_r_col = array($help,'|',$support,'|',$printview);
478
if($USER_DETAILS["alias"]!=ZBX_GUEST_USER){
479
$page_header_r_col[] = array("|",
480
new CLink(S_PROFILE, "profile.php", "small_font"),"|",
481
new CLink(S_LOGOUT, "index.php?reconnect=1", "small_font"));
461
if($USER_DETAILS['alias']!=ZBX_GUEST_USER){
462
$page_header_r_col[] = array('|',
463
new CLink(S_PROFILE, 'profile.php', 'small_font'),'|',
464
new CLink(S_LOGOUT, 'index.php?reconnect=1', 'small_font'));
484
$page_header_r_col[] = array("|", new CLink(S_LOGIN, "index.php?reconnect=1", "small_font"));
467
$page_header_r_col[] = array('|', new CLink(S_LOGIN, 'index.php?reconnect=1', 'small_font'));
487
$logo = new CLink(new CDiv(SPACE,'zabbix_logo'),"http://www.zabbix.com");
488
$logo->SetTarget('_blank');
489
// $logo = new CDiv(SPACE,'zabbix_logo');
490
// $logo->AddAction('onclick',"javascript: document.location = 'http://www.zabbix.com';");
470
$logo = new CLink(new CDiv(SPACE,'zabbix_logo'),'http://www.zabbix.com/', null, null, true);
471
$logo->setTarget('_blank');
492
$td_r = new CCol($page_header_r_col, "page_header_r");
493
$td_r->AddOption('width','100%');
473
$td_r = new CCol($page_header_r_col, 'page_header_r');
474
$td_r->addOption('width','100%');
495
$top_page_row = array(new CCol($logo, "page_header_l"), $td_r);
476
$top_page_row = array(new CCol($logo, 'page_header_l'), $td_r);
496
477
unset($logo, $page_header_r_col, $help, $support);
498
$table = new CTable(NULL,"page_header");
499
$table->SetCellSpacing(0);
500
$table->SetCellPadding(5);
501
$table->AddRow($top_page_row);
479
$table = new CTable(NULL,'page_header');
480
$table->setCellSpacing(0);
481
$table->setCellPadding(5);
482
$table->addRow($top_page_row);
504
485
$menu_table = new CTable(NULL,'menu');
505
$menu_table->SetCellSpacing(0);
506
$menu_table->SetCellPadding(5);
507
$menu_table->AddRow($main_menu_row);
486
$menu_table->setCellSpacing(0);
487
$menu_table->setCellPadding(5);
488
$menu_table->addRow($main_menu);
509
490
$node_form = null;
511
491
if(ZBX_DISTRIBUTED){
512
$lst_nodes = new CComboBox('switch_node', get_current_nodeid(false), "submit()");
492
$lst_nodes = new CComboBox('switch_node', get_current_nodeid(false), 'submit()');
513
493
$available_nodes = get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST);
514
495
$db_nodes = DBselect('SELECT * '.
516
497
' WHERE '.DBcondition('nodeid',$available_nodes).
517
498
' ORDER BY name ');
518
499
while($node_data = DBfetch($db_nodes)){
519
$lst_nodes->AddItem($node_data['nodeid'],$node_data['name']);
500
$lst_nodes->addItem($node_data['nodeid'],$node_data['name']);
522
if($lst_nodes->ItemsCount() > 1){
503
if($lst_nodes->ItemsCount() > 0){
523
504
$node_form = new CForm();
524
$node_form->AddItem(array(new CSpan(S_CURRENT_NODE,'textcolorstyles'),$lst_nodes));
505
$node_form->addItem(array(new CSpan(S_CURRENT_NODE,'textcolorstyles'),$lst_nodes));
525
506
unset($lst_nodes);
527
508
if(!defined('ZBX_DISABLE_SUBNODES')){
528
509
global $ZBX_WITH_SUBNODES;
530
$cmd_show_subnodes = new CComboBox('show_subnodes', !empty($ZBX_WITH_SUBNODES) ? 1 : 0, "submit()");
531
$cmd_show_subnodes->AddItem(0, S_CURRENT_NODE_ONLY);
532
$cmd_show_subnodes->AddItem(1, S_WITH_SUBNODES);
511
$cmd_show_subnodes = new CComboBox('show_subnodes', !empty($ZBX_WITH_SUBNODES) ? 1 : 0, 'submit()');
512
$cmd_show_subnodes->addItem(0, S_CURRENT_NODE_ONLY);
513
$cmd_show_subnodes->addItem(1, S_WITH_SUBNODES);
534
$node_form->AddItem(array(SPACE, new CSpan(S_SHOW,'textcolorstyles'), $cmd_show_subnodes));
515
$node_form->addItem(array(SPACE, new CSpan(S_SHOW,'textcolorstyles'), $cmd_show_subnodes));
537
// No need for the button anymore
538
// $node_form->AddItem(new CButton('submit',S_SWITCH_NODE));
542
520
$table = new CTable();
543
$table->SetCellSpacing(0);
544
$table->SetCellPadding(0);
545
$table->AddOption('style','width: 100%;');
521
$table->setCellSpacing(0);
522
$table->setCellPadding(0);
523
$table->addOption('style','width: 100%;');
547
525
$r_col = new CCol($node_form);
548
$r_col->AddOption('style','text-align: right;');
550
$table->AddRow(array($menu_table,$r_col));
526
$r_col->addOption('style','text-align: right;');
528
$table->addRow(array($menu_table,$r_col));
530
$page_menu = new CDiv();
531
$page_menu->addoption('id','mmenu');
532
$page_menu->addItem($table);
534
$menu_selected = false;
535
foreach($sub_menus as $label => $sub_menu){
536
$sub_menu_table = new CTable(NULL,'sub_menu');
537
$sub_menu_table->setCellSpacing(0);
538
$sub_menu_table->setCellPadding(5);
540
$sub_menu_row = array();
541
foreach($sub_menu as $id => $sub_page){
542
if(empty($sub_page['menu_text'])) $sub_page['menu_text'] = SPACE;
544
$sub_menu_item = new CLink($sub_page['menu_text'], $sub_page['menu_url'], $sub_page['class']);
545
if($sub_page['selected']) $sub_menu_item = new CSpan($sub_menu_item, 'active');
546
$sub_menu_row[] = $sub_menu_item;
547
$sub_menu_row[] = new CSpan(SPACE.SPACE.'|'.SPACE.SPACE, 'divider');
549
$sub_menu_table->addRow(new CCol($sub_menu_row));
551
$sub_menu_div = new CDiv($sub_menu_table);
552
$sub_menu_div->addOption('id', 'sub_'.$label);
553
$sub_menu_div->addAction('onmouseover','javascript: MMenu.submenu_mouseOver();');
554
$sub_menu_div->addAction('onmouseout','javascript: MMenu.mouseOut();');
556
if(isset($page['menu']) && ($page['menu'] == $label)){
557
$menu_selected = true;
558
$sub_menu_div->addOption('style','display: block;');
559
insert_js('MMenu.def_label = '.zbx_jsvalue($label));
562
$sub_menu_div->addOption('style','display: none;');
565
$page_menu->addItem($sub_menu_div);
553
568
$sub_menu_table = new CTable(NULL,'sub_menu');
554
$sub_menu_table->SetCellSpacing(0);
555
$sub_menu_table->SetCellPadding(5);
557
(empty($sub_menu_row))?($sub_menu_row = ' '):('');
558
$sub_menu_table->AddRow(new CCol($sub_menu_row));
559
$sub_menu_table->Show();
569
$sub_menu_table->setCellSpacing(0);
570
$sub_menu_table->setCellPadding(5);
571
$sub_menu_table->addRow(SPACE);
573
$sub_menu_div = new CDiv($sub_menu_table);
574
$sub_menu_div->addOption('id', 'sub_empty');
575
$sub_menu_div->addOption('style','display: '.($menu_selected?'none;':'block;'));
576
$page_menu->addItem($sub_menu_div);
561
580
//------------------------------------- <HISTORY> ---------------------------------------
562
if(isset($page['hist_arg']) && ($USER_DETAILS["alias"] != ZBX_GUEST_USER) && ($page["type"] == PAGE_TYPE_HTML) && !defined('ZBX_PAGE_NO_MENU')){
581
if(isset($page['hist_arg']) && ($USER_DETAILS['alias'] != ZBX_GUEST_USER) && ($page['type'] == PAGE_TYPE_HTML) && !defined('ZBX_PAGE_NO_MENU')){
563
582
$table = new CTable();
564
$table->SetClass('history');
583
$table->setClass('history');
566
$table->SetCellSpacing(0);
567
$table->SetCellPadding(0);
585
$table->setCellSpacing(0);
586
$table->setCellPadding(0);
569
588
$history = get_user_history();
571
590
$tr = new CRow(new CCol('History:','caption'));
572
$tr->AddItem($history);
591
$tr->addItem($history);
577
else if(($page["type"] == PAGE_TYPE_HTML) && !defined('ZBX_PAGE_NO_MENU')) {
596
else if(($page['type'] == PAGE_TYPE_HTML) && !defined('ZBX_PAGE_NO_MENU')) {
580
599
//------------------------------------ </HISTORY> ---------------------------------------