diff --git a/pandora_console/operation/visual_console/view.php b/pandora_console/operation/visual_console/view.php index 3cea102421..9853e75c63 100644 --- a/pandora_console/operation/visual_console/view.php +++ b/pandora_console/operation/visual_console/view.php @@ -133,35 +133,7 @@ if (!is_metaconsole()) { html_print_input_hidden('metaconsole', 1); } -// TODO: Extract to a function. -$baseUrl = ui_get_full_url(false, false, false, false); -$vcClientPath = 'include/visual-console-client'; -$dir = $config['homedir'].'/'.$vcClientPath; -if (is_dir($dir)) { - $dh = opendir($dir); - if ($dh) { - while (($file = readdir($dh)) !== false) { - if ($file === '.' || $file === '..') { - continue; - } - preg_match('/.*.js$/', $file, $match, PREG_OFFSET_CAPTURE); - if (empty($match) === false) { - $url = $baseUrl.$vcClientPath.'/'.$match[0][0]; - echo '<script type="text/javascript" src="'.$url.'"></script>'; - continue; - } - - preg_match('/.*.css$/', $file, $match, PREG_OFFSET_CAPTURE); - if (empty($match) === false) { - $url = $baseUrl.$vcClientPath.'/'.$match[0][0]; - echo '<link type="text/css" rel="stylesheet" href="'.$url.'" />'; - } - } - - closedir($dh); - } -} echo '<div id="visual-console-container"></div>'; @@ -174,7 +146,8 @@ if ($pure === true) { // Quit fullscreen. echo '<li class="nomn">'; - echo '<a href="index.php?sec=network&sec2=operation/visual_console/render_view&id='.$visualConsoleId.'">'; + $urlNoFull = 'index.php?sec=network&sec2=operation/visual_console/render_view&id='.$visualConsoleId; + echo '<a class="vc-btn-no-fullscreen" href="'.$urlNoFull.'">'; echo html_print_image('images/normal_screen.png', true, ['title' => __('Back to normal mode')]); echo '</a>'; echo '</li>'; @@ -212,6 +185,7 @@ if ($pure === true) { $visualConsoleItems = VisualConsole::getItemsFromDB($visualConsoleId); ui_require_javascript_file('pandora_visual_console'); +visual_map_load_client_resources(); ?> <script type="text/javascript"> @@ -220,7 +194,66 @@ ui_require_javascript_file('pandora_visual_console'); var items = <?php echo '['.implode($visualConsoleItems, ',').']'; ?>; var baseUrl = "<?php echo $config['homeurl']; ?>"; var handleUpdate = function (prevProps, newProps) { - // TODO: Change the view header and links to display id or name changes. + if (!newProps) return; + + // Change the background color when the fullscreen mode is enabled. + if (prevProps + && prevProps.backgroundColor != newProps.backgroundColor + && <?php echo json_encode($pure); ?> + ) { + var pureBody = document.querySelector("body.pure"); + var pureContainer = document.querySelector("div#main_pure"); + + if (pureBody !== null) { + pureBody.style.backgroundColor = newProps.backgroundColor + } + if (pureContainer !== null) { + pureContainer.style.backgroundColor = newProps.backgroundColor + } + } + + // Change the title. + if (prevProps && prevProps.name != newProps.name) { + // View title. + var title = document.querySelector( + "div#menu_tab_frame_view > div#menu_tab_left span" + ); + if (title !== null) { + title.textContent = newProps.name; + } + // Fullscreen view title. + var fullscreenTitle = document.querySelector("div.vc-title"); + if (fullscreenTitle !== null) { + fullscreenTitle.textContent = newProps.name; + } + // TODO: Change the metaconsole title. + } + + // Change the links. + if (prevProps && prevProps.id !== newProps.id) { + var regex = /(id=|id_visual_console=|id_layout=)\d+(&?)/gi; + var replacement = '$1' + newProps.id + '$2'; + + // Tab links. + var menuLinks = document.querySelectorAll("div#menu_tab a"); + if (menuLinks !== null) { + menuLinks.forEach(function (menuLink) { + menuLink.href = menuLink.href.replace(regex, replacement); + }); + } + + // Go back from fullscreen button. + var btnNoFull = document.querySelector("a.vc-btn-no-fullscreen"); + if (btnNoFull !== null) { + btnNoFull.href = btnNoFull.href.replace(regex, replacement); + } + + // Change the URL (if the browser has support). + if ("history" in window) { + var href = window.location.href.replace(regex, replacement); + window.history.replaceState({}, document.title, href); + } + } } var visualConsole = createVisualConsole( container,