diff options
author | Steve Beaver <sbeaver@netgate.com> | 2017-03-21 13:43:30 -0400 |
---|---|---|
committer | Steve Beaver <sbeaver@netgate.com> | 2017-03-21 13:43:30 -0400 |
commit | 6a0e66bbefc947e31a0903f31ba23d57aab5632b (patch) | |
tree | 22cda0d59a10a331e0b8a46cc5f6c36a35b845ee | |
parent | 0d40b2cb3402458335d4191a9f5a0e46f21871bf (diff) | |
parent | 57a015f92d451d14950760a6cdfd8bdb449b2652 (diff) | |
download | pfsense-6a0e66bbefc947e31a0903f31ba23d57aab5632b.zip pfsense-6a0e66bbefc947e31a0903f31ba23d57aab5632b.tar.gz |
Merge pull request #3664 from phil-davis/gw-widget-RELENG_2_3_3
-rw-r--r-- | src/usr/local/www/widgets/widgets/gateways.widget.php | 166 |
1 files changed, 120 insertions, 46 deletions
diff --git a/src/usr/local/www/widgets/widgets/gateways.widget.php b/src/usr/local/www/widgets/widgets/gateways.widget.php index 3c0f546..5c9c836 100644 --- a/src/usr/local/www/widgets/widgets/gateways.widget.php +++ b/src/usr/local/www/widgets/widgets/gateways.widget.php @@ -70,12 +70,29 @@ if ($_REQUEST && $_REQUEST['ajax']) { } if ($_POST) { + + if (!is_array($user_settings["widgets"]["gateways_widget"])) { $user_settings["widgets"]["gateways_widget"] = array(); } + if (isset($_POST["display_type"])) { $user_settings["widgets"]["gateways_widget"]["display_type"] = $_POST["display_type"]; } + + if (is_array($_POST['show'])) { + $validNames = array(); + $a_gateways = return_gateways_array(); + + foreach ($a_gateways as $gname => $gateway) { + array_push($validNames, $gname); + } + + $user_settings["widgets"]["gateways_widget"]["gatewaysfilter"] = implode(',', array_diff($validNames, $_POST['show'])); + } else { + $user_settings["widgets"]["gateways_widget"]["gatewaysfilter"] = ""; + } + save_widget_settings($_SESSION['Username'], $user_settings["widgets"], gettext("Updated gateways widget settings via dashboard.")); header("Location: /"); exit(0); @@ -103,55 +120,86 @@ $widgetperiod = isset($config['widgets']['period']) ? $config['widgets']['period </table> </div> <!-- close the body we're wrapped in and add a configuration-panel --> -</div> - -<div id="widget-<?=$widgetname?>_panel-footer" class="panel-footer collapse"> -<input type="hidden" id="gateways-config" name="gateways-config" value="" /> - -<div id="gateways-settings" class="widgetconfigdiv" > - <form action="/widgets/widgets/gateways.widget.php" method="post" name="gateways_widget_iform" id="gateways_widget_iform"> - Display: - <?php - $display_type_gw_ip = "checked"; - $display_type_monitor_ip = ""; - $display_type_both_ip = ""; - if (isset($user_settings["widgets"]["gateways_widget"]["display_type"])) { - $selected_radio = $user_settings["widgets"]["gateways_widget"]["display_type"]; - if ($selected_radio == "gw_ip") { - $display_type_gw_ip = "checked"; - $display_type_monitor_ip = ""; - $display_type_both_ip = ""; - } else if ($selected_radio == "monitor_ip") { - $display_type_gw_ip = ""; - $display_type_monitor_ip = "checked"; - $display_type_both_ip = ""; - } else if ($selected_radio == "both_ip") { - $display_type_gw_ip = ""; - $display_type_monitor_ip = ""; - $display_type_both_ip = "checked"; - } +</div><div id="widget-<?=$widgetname?>_panel-footer" class="panel-footer collapse"> +<form action="/widgets/widgets/gateways.widget.php" method="post" class="form-horizontal"> + <div class="form-group"> + <label class="col-sm-3 control-label"><?=gettext('Display')?></label> + <?php + $display_type_gw_ip = "checked"; + $display_type_monitor_ip = ""; + $display_type_both_ip = ""; + if (isset($user_settings["widgets"]["gateways_widget"]["display_type"])) { + $selected_radio = $user_settings["widgets"]["gateways_widget"]["display_type"]; + if ($selected_radio == "gw_ip") { + $display_type_gw_ip = "checked"; + $display_type_monitor_ip = ""; + $display_type_both_ip = ""; + } else if ($selected_radio == "monitor_ip") { + $display_type_gw_ip = ""; + $display_type_monitor_ip = "checked"; + $display_type_both_ip = ""; + } else if ($selected_radio == "both_ip") { + $display_type_gw_ip = ""; + $display_type_monitor_ip = ""; + $display_type_both_ip = "checked"; } - ?> - - <div class="radio"> - <label><input name="display_type" type="radio" id="display_type_gw_ip" value="gw_ip" <?=$display_type_gw_ip;?> onchange="updateGatewayDisplays();" /> <?=gettext('Gateway IP')?></label> - </div> - <div class="radio"> - <label><input name="display_type" type="radio" id="display_type_monitor_ip" value="monitor_ip" <?=$display_type_monitor_ip;?> onchange="updateGatewayDisplays();" /><?=gettext('Monitor IP')?></label> + } +?> + <div class="col-sm-6"> + <div class="radio"> + <label><input name="display_type" type="radio" id="display_type_gw_ip" value="gw_ip" <?=$display_type_gw_ip;?> onchange="updateGatewayDisplays();" /> <?=gettext('Gateway IP')?></label> + </div> + <div class="radio"> + <label><input name="display_type" type="radio" id="display_type_monitor_ip" value="monitor_ip" <?=$display_type_monitor_ip;?> onchange="updateGatewayDisplays();" /><?=gettext('Monitor IP')?></label> + </div> + <div class="radio"> + <label><input name="display_type" type="radio" id="display_type_both_ip" value="both_ip" <?=$display_type_both_ip;?> onchange="updateGatewayDisplays();" /><?=gettext('Both')?></label> + </div> </div> - <div class="radio"> - <label><input name="display_type" type="radio" id="display_type_both_ip" value="both_ip" <?=$display_type_both_ip;?> onchange="updateGatewayDisplays();" /><?=gettext('Both')?></label> + </div> + + <br /> + + <div class="panel panel-default col-sm-10"> + <div class="panel-body"> + <div class="table responsive"> + <table class="table table-striped table-hover table-condensed"> + <thead> + <tr> + <th><?=gettext("Gateway")?></th> + <th><?=gettext("Show")?></th> + </tr> + </thead> + <tbody> +<?php + $a_gateways = return_gateways_array(); + $hiddengateways = explode(",", $user_settings["widgets"]["gateways_widget"]["gatewaysfilter"]); + $idx = 0; + + foreach ($a_gateways as $gname => $gateway): +?> + <tr> + <td><?=$gname?></td> + <td class="col-sm-2"><input id="show[]" name ="show[]" value="<?=$gname?>" type="checkbox" <?=(!in_array($gname, $hiddengateways) ? 'checked':'')?>></td> + </tr> +<?php + endforeach; +?> + </tbody> + </table> + </div> </div> - <br /> - <button id="submit_settings" name="submit_settings" type="submit" onclick="return updatePref();" class="btn btn-primary btn-sm" value="<?=gettext('Save Settings')?>"> - <i class="fa fa-save icon-embed-btn"></i> - <?=gettext('Save Settings')?> - </button> + </div> - </form> -</div> + <div class="form-group"> + <div class="col-sm-offset-3 col-sm-6"> + <button type="submit" class="btn btn-primary"><i class="fa fa-save icon-embed-btn"></i><?=gettext('Save')?></button> + <button id="showallgateways" type="button" class="btn btn-info"><i class="fa fa-undo icon-embed-btn"></i><?=gettext('All')?></button> + </div> + </div> +</form> -<script type="text/javascript"> +<script> //<![CDATA[ function get_gw_stats() { @@ -172,6 +220,12 @@ $widgetperiod = isset($config['widgets']['period']) ? $config['widgets']['period } events.push(function(){ + $("#showallgateways").click(function() { + $("#widget-<?=$widgetname?>_panel-footer [id^=show]").each(function() { + $(this).prop("checked", true); + }); + }); + // Start polling for updates some small random number of seconds from now (so that all the widgets don't // hit the server at exactly the same time) setTimeout(get_gw_stats, Math.floor((Math.random() * 10000) + 1000)); @@ -195,7 +249,15 @@ function compose_table_body_contents() { $display_type = "gw_ip"; } + $hiddengateways = explode(",", $user_settings["widgets"]["gateways_widget"]["gatewaysfilter"]); + $gw_displayed = false; + foreach ($a_gateways as $gname => $gateway) { + if (in_array($gname, $hiddengateways)) { + continue; + } + + $gw_displayed = true; $rtnstr .= "<tr>\n"; $rtnstr .= "<td>\n"; $rtnstr .= htmlspecialchars($gateway['name']) . "<br />"; @@ -280,12 +342,24 @@ function compose_table_body_contents() { $bgcolor = "info"; // lightblue } - $rtnstr .= "<td>" . ($gateways_status[$gname] ? htmlspecialchars($gateways_status[$gname]['delay']) : gettext("Pending")) . "</td>\n"; - $rtnstr .= "<td>" . ($gateways_status[$gname] ? htmlspecialchars($gateways_status[$gname]['stddev']) : gettext("Pending")) . "</td>\n"; + $rtnstr .= "<td>" . ($gateways_status[$gname] ? ($gateways_status[$gname]['delay'] ? htmlspecialchars(number_format((float)rtrim($gateways_status[$gname]['delay'], "ms"), 1)) . "ms" : '') : gettext("Pending")) . "</td>\n"; + $rtnstr .= "<td>" . ($gateways_status[$gname] ? ($gateways_status[$gname]['stddev'] ? htmlspecialchars(number_format((float)rtrim($gateways_status[$gname]['stddev'], "ms"), 1)) . "ms" : '') : gettext("Pending")) . "</td>\n"; $rtnstr .= "<td>" . ($gateways_status[$gname] ? htmlspecialchars($gateways_status[$gname]['loss']) : gettext("Pending")) . "</td>\n"; $rtnstr .= '<td class="bg-' . $bgcolor . '">' . $online . "</td>\n"; $rtnstr .= "</tr>\n"; } + + if (!$gw_displayed) { + $rtnstr .= '<tr>'; + $rtnstr .= '<td colspan="5">'; + if (count($a_gateways)) { + $rtnstr .= gettext('All gateways are hidden.'); + } else { + $rtnstr .= gettext('No gateways found.'); + } + $rtnstr .= '</td>'; + $rtnstr .= '</tr>'; + } return($rtnstr); } ?> |