pandorafms/pandora_console/views/dashboard/header.php

319 lines
9.5 KiB
PHP

<?php
/**
* Dashboards View header dashboard Pandora FMS Console
*
* @category Console Class
* @package Pandora FMS
* @subpackage Dashboards
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2023 Pandora FMS
* Please see https://pandorafms.com/community/ for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Button for display full screen mode.
global $config;
$queryFull = [
'dashboardId' => $dashboardId,
'refr' => $refr,
'pure' => 1,
];
$urlFull = $url.'&'.http_build_query($queryFull);
$fullscreen['text'] = '<a id="full_screen_link" href="'.$urlFull.'">';
$fullscreen['text'] .= html_print_image(
'images/fullscreen@svg.svg',
true,
[
'title' => __('Full screen mode'),
'style' => 'margin-top: 5px',
'class' => 'main_menu_icon invert_filter',
]
);
$fullscreen['text'] .= '</a>';
// Button for display normal screen mode.
$queryNormal = ['dashboardId' => $dashboardId];
$urlNormal = $url.'&'.http_build_query($queryNormal);
$normalscreen['text'] = '<a href="'.$urlNormal.'">';
$normalscreen['text'] .= html_print_image(
'images/exit_fullscreen@svg.svg',
true,
[
'title' => __('Back to normal mode'),
'class' => 'main_menu_icon invert_filter',
]
);
$normalscreen['text'] .= '</a>';
// Button for display modal options dashboard.
$options['text'] = '<a href="#" onclick=\'';
$options['text'] .= 'show_option_dialog('.json_encode(
[
'title' => __('Update Dashboard'),
'btn_text' => __('Ok'),
'btn_cancel' => __('Cancel'),
'url' => $ajaxController,
'url_ajax' => ui_get_full_url('ajax.php'),
'dashboardId' => $dashboardId,
]
);
$options['text'] .= ')\'>';
$options['text'] .= html_print_image(
'images/configuration@svg.svg',
true,
[
'title' => __('Options'),
'style' => 'margin-top: 5px',
'class' => 'main_menu_icon invert_filter',
]
);
$options['text'] .= '</a>';
// Button for back to list dashboards.
$back_to_dashboard_list['text'] = '<a href="'.$url.'">';
$back_to_dashboard_list['text'] .= html_print_image(
'images/logs@svg.svg',
true,
[
'title' => __('Back to dashboards list'),
'style' => 'margin-top: 5px',
'class' => 'main_menu_icon invert_filter',
]
);
$back_to_dashboard_list['text'] .= '</a>';
$slides['text'] = '<a href="#" onclick=\'';
$slides['text'] .= 'formSlides('.json_encode(
[
'title' => __('Slides'),
'btn_text' => __('Ok'),
'btn_cancel' => __('Cancel'),
'url' => $ajaxController,
'url_ajax' => ui_get_full_url('ajax.php'),
'dashboardId' => $dashboardId,
]
);
$slides['text'] .= ')\'>';
$slides['text'] .= html_print_image(
'images/images.png',
true,
[
'title' => __('Slides mode'),
'style' => 'margin-top: 5px',
'class' => 'main_menu_icon invert_filter',
]
);
$slides['text'] .= '</a>';
// Public Url.
$queryPublic = [
'dashboardId' => $dashboardId,
'hash' => $hash,
'id_user' => $config['id_user'],
'pure' => 1,
];
$publicUrl = ui_get_full_url(
'operation/dashboard/public_dashboard.php?'.http_build_query($queryPublic)
);
$publiclink['text'] = '<a id="public_link" href="'.$publicUrl.'" target="_blank">';
$publiclink['text'] .= html_print_image(
'images/item-icon.svg',
true,
[
'title' => __('Show link to public dashboard'),
'style' => 'margin-top: 5px',
'class' => 'main_menu_icon invert_filter',
]
);
$publiclink['text'] .= '</a>';
// Check if it is a public dashboard.
$public_dashboard_hash = get_parameter('hash', false);
// Refresh selector time dashboards.
if ($public_dashboard_hash !== false) {
$urlRefresh = $publicUrl;
} else {
$queryRefresh = [
'dashboardId' => $dashboardId,
'pure' => 1,
];
$urlRefresh = $url.'&'.http_build_query($queryRefresh);
}
$comboRefreshCountdown['text'] = '<div class="dashboard-countdown display_in"></div>';
$comboRefresh['text'] = '<form id="refr-form" method="post" class="mrgn_top_13px" action="'.$urlRefresh.'">';
$comboRefresh['text'] .= __('Refresh').':';
$comboRefresh['text'] .= html_print_select(
\get_refresh_time_array(),
'refr',
$refr,
'',
'',
0,
true,
false,
false,
'',
false,
'margin-top: 3px;'
);
$comboRefresh['text'] .= '</form>';
// Select all dashboard view user.
$queryCombo = [
'pure' => $config['pure'],
];
$urlCombo = $url.'&'.http_build_query($queryCombo);
$combo_dashboard['text'] = '<form id="form-select-dashboard" name="query_sel" method="post" action="'.$urlCombo.'">';
$combo_dashboard['text'] .= html_print_select(
$dashboards,
'dashboardId',
$dashboardId,
'this.form.submit();',
'',
0,
true,
false,
true,
'select-dashboard-width',
false,
''
);
$combo_dashboard['text'] .= '</form>';
// Edit mode.
$enable_disable['text'] = html_print_div(
[
'style' => 'margin-top: 10px;',
'content' => html_print_checkbox_switch(
'edit-mode',
1,
false,
true
),
],
true
);
// New Widget.
$newWidget['text'] = '<a href="#" id="add-widget" class="invisible">';
$newWidget['text'] .= html_print_image(
'images/plus@svg.svg',
true,
[
'title' => __('Add Cell'),
'class' => 'main_menu_icon invert_filter',
'style' => 'margin-top:5px;',
]
);
$newWidget['text'] .= '</a>';
if (isset($config['public_dashboard']) === true
&& (bool) $config['public_dashboard'] === true
) {
$buttons = [
'combo_refresh_one_dashboard' => $comboRefresh,
'combo_refresh_countdown' => $comboRefreshCountdown,
];
} else if ($config['pure']) {
if (check_acl_restricted_all($config['id_user'], $dashboardGroup, 'RW') === 0) {
$buttons = [
'back_to_dashboard_list' => $back_to_dashboard_list,
'normalscreen' => $normalscreen,
'combo_refresh_one_dashboard' => $comboRefresh,
'slides' => $slides,
'combo_refresh_countdown' => $comboRefreshCountdown,
];
} else {
if ($publicLink === true) {
$buttons = [
'combo_refresh_one_dashboard' => $comboRefresh,
'combo_refresh_countdown' => $comboRefreshCountdown,
];
} else {
$buttons = [
'back_to_dashboard_list' => $back_to_dashboard_list,
'save_layout' => $save_layout_dashboard,
'normalscreen' => $normalscreen,
'combo_refresh_one_dashboard' => $comboRefresh,
'slides' => $slides,
'options' => $options,
'combo_refresh_countdown' => $comboRefreshCountdown,
];
}
}
} else {
if ($dashboardUser !== $config['id_user'] && check_acl_restricted_all($config['id_user'], $dashboardGroup, 'RW') === 0) {
$buttons = [
'back_to_dashboard_list' => $back_to_dashboard_list,
'fullscreen' => $fullscreen,
'slides' => $slides,
'public_link' => $publiclink,
'combo_dashboard' => $combo_dashboard,
'newWidget' => $newWidget,
];
} else {
$buttons = [
'enable_disable' => $enable_disable,
'back_to_dashboard_list' => $back_to_dashboard_list,
'fullscreen' => $fullscreen,
'slides' => $slides,
'public_link' => $publiclink,
'combo_dashboard' => $combo_dashboard,
'options' => $options,
'newWidget' => $newWidget,
];
}
}
if ($config['pure'] === false) {
ui_print_standard_header(
$dashboardName,
'',
false,
'',
true,
$buttons,
[
[
'link' => '',
'label' => __('Dashboard'),
],
],
[
'id_element' => $dashboardId,
'url' => 'operation/dashboard/dashboard&dashboardId='.$dashboardId,
'label' => $dashboardName,
'section' => 'Dashboard_',
]
);
} else {
$output = '<div id="dashboard-controls">';
foreach ($buttons as $key => $value) {
$output .= '<div>';
$output .= $value['text'];
$output .= '</div>';
}
$output .= '</div>';
echo $output;
}