From 46eef4412c23e1263d713a7922653ad5131e0431 Mon Sep 17 00:00:00 2001 From: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com> Date: Fri, 13 Jul 2018 22:20:22 +0200 Subject: [PATCH] Fix broken navigation on VRFs Page (#8889) Hello The VRFs page has navigation issue right now, that bring the user back to BGP page when most links are clicked (graphs, VRF). This change does some cleanup based on the "device/vrf" page, to recreate a "consistant" navigation. Graphs are fixed, and clicking the "VRF" says "Not implemented". Bye PipoCanaja DO NOT DELETE THIS TEXT #### Please note > Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting. - [X] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/) #### Testers If you would like to test this pull request then please run: `./scripts/github-apply `, i.e `./scripts/github-apply 5926` --- html/pages/routing/vrf.inc.php | 187 +++++++++++---------------------- 1 file changed, 62 insertions(+), 125 deletions(-) diff --git a/html/pages/routing/vrf.inc.php b/html/pages/routing/vrf.inc.php index bf1f17f0ff..d65b0c5793 100644 --- a/html/pages/routing/vrf.inc.php +++ b/html/pages/routing/vrf.inc.php @@ -1,94 +1,70 @@ hasGlobalRead()) { - if (!isset($_GET['optb'])) { - $_GET['optb'] = 'all'; - } - - if (!isset($_GET['optc'])) { - $_GET['optc'] = 'basic'; - } +if (!Auth::user()->hasGlobalRead()) { + include 'includes/error-no-perm.inc.php'; +} else { + $link_array = array( + 'page' => 'routing', + 'protocol' => 'vrf', + ); print_optionbar_start(); - echo 'VRF » '; + echo "VRFs » "; - if ($_GET['opta'] == 'vrf' && $_GET['optb'] == 'all') { - echo ""; + $menu_options = array('basic' => 'Basic', + ); + + if (!$vars['view']) { + $vars['view'] = 'basic'; } - echo 'All'; - if ($_GET['opta'] == 'vrf' && $_GET['optb'] == 'all') { - echo ''; + $sep = ''; + foreach ($menu_options as $option => $text) { + if ($vars['view'] == $option) { + echo ""; + } + + echo generate_link($text, $link_array, array('view' => $option)); + if ($vars['view'] == $option) { + echo ''; + } + + echo ' | '; } - echo ' | '; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'basic') { - echo ""; - } + unset($sep); - echo 'Basic'; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'basic') { - echo ''; - } + echo ' Graphs: '; - echo ' | '; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'details') { - echo ""; - } + $graph_types = array( + 'bits' => 'Bits', + 'upkts' => 'Unicast Packets', + 'nupkts' => 'Non-Unicast Packets', + 'errors' => 'Errors', + 'etherlike' => 'Etherlike', + ); - echo 'Details'; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'details') { - echo ''; + foreach ($graph_types as $type => $descr) { + echo "$type_sep"; + if ($vars['graph'] == $type) { + echo ""; + } + + echo generate_link($descr, $link_array, array('view' => 'graphs', 'graph' => $type)); + if ($vars['graph'] == $type) { + echo ''; + } + + $type_sep = ' | '; } - echo ' | Graphs: ( '; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'bits') { - echo ""; - } - - echo 'Bits'; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'bits') { - echo ''; - } - - echo ' | '; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'upkts') { - echo ""; - } - - echo 'Packets'; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'upkts') { - echo ''; - } - - echo ' | '; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'nupkts') { - echo ""; - } - - echo 'NU Packets'; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'nupkts') { - echo ''; - } - - echo ' | '; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'errors') { - echo ""; - } - - echo 'Errors'; - if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'errors') { - echo ''; - } - - echo ' )'; - print_optionbar_end(); - if ($_GET['optb'] == 'all') { + if ($vars['view'] == 'basic' || $vars['view'] == 'graphs') { // Pre-Cache in arrays // That's heavier on RAM, but much faster on CPU (1:40) // Specifying the fields reduces a lot the RAM used (1:4) . @@ -123,7 +99,10 @@ if (Auth::user()->hasGlobalRead()) { } echo ""; - echo "".$vrf['vrf_name'].'
'.$vrf['mplsVpnVrfDescription'].''; + echo ""; + echo ""; + echo $vrf['vrf_name'].'
'; + echo "".$vrf['mplsVpnVrfDescription'].''; echo ''.$vrf['mplsVpnVrfRouteDistinguisher'].''; echo ''; $x = 1; @@ -142,7 +121,12 @@ if (Auth::user()->hasGlobalRead()) { } } - echo "
".generate_device_link($device, shorthost($device['hostname'])); + echo "
'device'), + array('tab' => 'routing', 'view' => 'basic', 'proto' => 'vrf', 'device' => $device['device_id']) + ); + echo "'>".$device['hostname']." "; if ($device['vrf_name'] != $vrf['vrf_name']) { echo "Configured : '.$device['vrf_name']."', CAPTION, 'VRF Inconsistency' ,FGCOLOR,'#e5e5e5', BGCOLOR, '#c0c0c0', BORDER, 5, CELLPAD, 4, CAPCOLOR, '#050505');\" onmouseout=\"return nd();\"> "; @@ -155,7 +139,7 @@ if (Auth::user()->hasGlobalRead()) { $port = cleanPort($port); $port = array_merge($device, $port); - switch ($_GET['optc']) { + switch ($vars['graph']) { case 'bits': case 'upkts': case 'nupkts': @@ -165,7 +149,7 @@ if (Auth::user()->hasGlobalRead()) { $port['from'] = $config['time']['day']; $port['to'] = $config['time']['now']; $port['bg'] = '#'.$bg; - $port['graph_type'] = 'port_'.$_GET['optc']; + $port['graph_type'] = 'port_'.$vars['graph']; echo "
".makeshortif($port['ifDescr']).'
'; @@ -188,55 +172,8 @@ if (Auth::user()->hasGlobalRead()) { echo '
'; $i++; }//end foreach - echo ''; - } else { - echo "
"; - $vrf = dbFetchRow('SELECT * FROM `vrfs` WHERE mplsVpnVrfRouteDistinguisher = ?', array($_GET['optb'])); - echo ""; - echo "'; - echo ''; - echo ''; - echo '
".$vrf['vrf_name'].''.$vrf['mplsVpnVrfRouteDistinguisher'].''.$vrf['mplsVpnVrfDescription'].'
'; - - $x = 0; - - $devices = dbFetchRows('SELECT * FROM `vrfs` AS V, `devices` AS D WHERE `mplsVpnVrfRouteDistinguisher` = ? AND D.device_id = V.device_id', array($vrf['mplsVpnVrfRouteDistinguisher'])); - foreach ($devices as $device) { - $hostname = $device['hostname']; - - echo '
'; - include 'includes/device-header.inc.php'; - echo '
'; - - unset($seperator); - echo '
'; - $i = 1; - foreach (dbFetchRows('SELECT * FROM `ports` WHERE `ifVrf` = ? AND `device_id` = ?', array($device['vrf_id'], $device['device_id'])) as $interface) { - if (($x % 2)) { - if (($i % 2) === 0) { - $int_colour = $config['list_colour']['even_alt2']; - } else { - $int_colour = $config['list_colour']['even_alt']; - } - } else { - if (($i % 2) === 0) { - $int_colour = $config['list_colour']['odd_alt']; - } else { - $int_colour = $config['list_colour']['odd_alt2']; - } - } - - include 'includes/print-interface.inc.php'; - - $i++; - }//end foreach - - $x++; - echo '
'; - echo "
"; - }//end foreach + } elseif ($vars['view'] == 'detail') { + echo "Not Implemented"; }//end if -} else { - include 'includes/error-no-perm.inc.php'; } //end if