From 1d3510cf6cc471b179d52e03f4cfe77e23b4b20b Mon Sep 17 00:00:00 2001 From: Phil Davis Date: Thu, 30 Mar 2017 10:01:23 +0545 Subject: Add user option to sort interface names --- src/etc/inc/auth.inc | 2 ++ src/etc/inc/pfsense-utils.inc | 20 ++++++++++++++++++++ src/etc/inc/util.inc | 9 ++++++--- src/usr/local/www/head.inc | 8 +++++++- src/usr/local/www/system.php | 5 +++++ src/usr/local/www/system_user_settings.php | 8 ++++++++ src/usr/local/www/system_usermanager.php | 8 ++++++++ 7 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/etc/inc/auth.inc b/src/etc/inc/auth.inc index 59114d6..168af38 100644 --- a/src/etc/inc/auth.inc +++ b/src/etc/inc/auth.inc @@ -1580,6 +1580,7 @@ function get_user_settings($username) { $settings['webgui']['dashboardcolumns'] = $config['system']['webgui']['dashboardcolumns']; $settings['webgui']['webguihostnamemenu'] = $config['system']['webgui']['webguihostnamemenu']; $settings['webgui']['webguicss'] = $config['system']['webgui']['webguicss']; + $settings['webgui']['interfacessort'] = isset($config['system']['webgui']['interfacessort']); $settings['webgui']['dashboardavailablewidgetspanel'] = isset($config['system']['webgui']['dashboardavailablewidgetspanel']); $settings['webgui']['webguifixedmenu'] = isset($config['system']['webgui']['webguifixedmenu']); $settings['webgui']['webguileftcolumnhyper'] = isset($config['system']['webgui']['webguileftcolumnhyper']); @@ -1604,6 +1605,7 @@ function get_user_settings($username) { if (isset($user['webguihostnamemenu'])) { $settings['webgui']['webguihostnamemenu'] = $user['webguihostnamemenu']; } + $settings['webgui']['interfacessort'] = isset($user['interfacessort']); $settings['webgui']['dashboardavailablewidgetspanel'] = isset($user['dashboardavailablewidgetspanel']); $settings['webgui']['webguifixedmenu'] = isset($user['webguifixedmenu']); $settings['webgui']['webguileftcolumnhyper'] = isset($user['webguileftcolumnhyper']); diff --git a/src/etc/inc/pfsense-utils.inc b/src/etc/inc/pfsense-utils.inc index 81a2ea3..ded6b3f 100644 --- a/src/etc/inc/pfsense-utils.inc +++ b/src/etc/inc/pfsense-utils.inc @@ -255,6 +255,25 @@ function gen_dashboardcolumns_field(&$section, $value) { )); } +/****f* pfsense-utils/gen_interfacessort_field + * NAME + * gen_interfacessort_field + * INPUTS + * Pointer to section object + * Initial value for the field + * RESULT + * no return value, section object is updated + ******/ +function gen_interfacessort_field(&$section, $value) { + + $section->addInput(new Form_Checkbox( + 'interfacessort', + 'Interfaces Sort', + 'Sort Alphabetically', + $value + ))->setHelp('If selected, lists of interfaces will be sorted by description, otherwise they are listed wan,lan,optn...'); +} + /****f* pfsense-utils/gen_associatedpanels_fields * NAME * gen_associatedpanels_fields @@ -375,6 +394,7 @@ function gen_user_settings_fields(&$section, $pconfig) { gen_webguifixedmenu_field($section, $pconfig['webguifixedmenu']); gen_webguihostnamemenu_field($section, $pconfig['webguihostnamemenu']); gen_dashboardcolumns_field($section, $pconfig['dashboardcolumns']); + gen_interfacessort_field($section, $pconfig['interfacessort']); gen_associatedpanels_fields( $section, $pconfig['dashboardavailablewidgetspanel'], diff --git a/src/etc/inc/util.inc b/src/etc/inc/util.inc index 74ffd9f..491405b 100644 --- a/src/etc/inc/util.inc +++ b/src/etc/inc/util.inc @@ -1416,7 +1416,7 @@ function get_configured_interface_list_by_realif($only_opt = false, $withdisable /* return the configured interfaces list with their description. */ function get_configured_interface_with_descr($only_opt = false, $withdisabled = false) { - global $config; + global $config, $user_settings; $iflist = array(); @@ -1433,8 +1433,11 @@ function get_configured_interface_with_descr($only_opt = false, $withdisabled = } } } - - asort($iflist); + + if ($user_settings['webgui']['interfacessort']) { + asort($iflist); + } + return $iflist; } diff --git a/src/usr/local/www/head.inc b/src/usr/local/www/head.inc index 27fb8f7..5943a55 100644 --- a/src/usr/local/www/head.inc +++ b/src/usr/local/www/head.inc @@ -275,8 +275,14 @@ foreach ($opts as $oif => $odescr) { } } +$interfaces_bottom = array_merge($interfaces_bottom, return_ext_menu("Interfaces")); + +if ($user_settings['webgui']['interfacessort']) { + $interfaces_bottom = msort($interfaces_bottom, 0); +} + // Combine the top section, the divider and the bottom section of this menu -$interfaces_menu = array_merge($interfaces_top, [array(0 => "-DIVIDER-")], msort(array_merge($interfaces_bottom, return_ext_menu("Interfaces")), 0)); +$interfaces_menu = array_merge($interfaces_top, [array(0 => "-DIVIDER-")], $interfaces_bottom); // Firewall $firewall_menu = array(); diff --git a/src/usr/local/www/system.php b/src/usr/local/www/system.php index 5766499..53fbf80 100644 --- a/src/usr/local/www/system.php +++ b/src/usr/local/www/system.php @@ -62,6 +62,7 @@ $pconfig['language'] = $config['system']['language']; $pconfig['webguicss'] = $config['system']['webgui']['webguicss']; $pconfig['webguifixedmenu'] = $config['system']['webgui']['webguifixedmenu']; $pconfig['dashboardcolumns'] = $config['system']['webgui']['dashboardcolumns']; +$pconfig['interfacessort'] = isset($config['system']['webgui']['interfacessort']); $pconfig['webguileftcolumnhyper'] = isset($config['system']['webgui']['webguileftcolumnhyper']); $pconfig['disablealiaspopupdetail'] = isset($config['system']['webgui']['disablealiaspopupdetail']); $pconfig['dashboardavailablewidgetspanel'] = isset($config['system']['webgui']['dashboardavailablewidgetspanel']); @@ -272,6 +273,9 @@ if ($_POST) { set_language(); } + unset($config['system']['webgui']['interfacessort']); + $config['system']['webgui']['interfacessort'] = $_POST['interfacessort'] ? true : false; + unset($config['system']['webgui']['webguileftcolumnhyper']); $config['system']['webgui']['webguileftcolumnhyper'] = $_POST['webguileftcolumnhyper'] ? true : false; @@ -576,6 +580,7 @@ gen_webguicss_field($section, $pconfig['webguicss']); gen_webguifixedmenu_field($section, $pconfig['webguifixedmenu']); gen_webguihostnamemenu_field($section, $pconfig['webguihostnamemenu']); gen_dashboardcolumns_field($section, $pconfig['dashboardcolumns']); +gen_interfacessort_field($section, $pconfig['interfacessort']); gen_associatedpanels_fields( $section, $pconfig['dashboardavailablewidgetspanel'], diff --git a/src/usr/local/www/system_user_settings.php b/src/usr/local/www/system_user_settings.php index 03d8355..ebcdc78 100644 --- a/src/usr/local/www/system_user_settings.php +++ b/src/usr/local/www/system_user_settings.php @@ -42,6 +42,7 @@ if (isset($id) && $a_user[$id]) { $pconfig['webguifixedmenu'] = $a_user[$id]['webguifixedmenu']; $pconfig['webguihostnamemenu'] = $a_user[$id]['webguihostnamemenu']; $pconfig['dashboardcolumns'] = $a_user[$id]['dashboardcolumns']; + $pconfig['interfacessort'] = isset($a_user[$id]['interfacessort']); $pconfig['dashboardavailablewidgetspanel'] = isset($a_user[$id]['dashboardavailablewidgetspanel']); $pconfig['systemlogsfilterpanel'] = isset($a_user[$id]['systemlogsfilterpanel']); $pconfig['systemlogsmanagelogpanel'] = isset($a_user[$id]['systemlogsmanagelogpanel']); @@ -84,6 +85,13 @@ if (isset($_POST['save'])) { $pconfig['dashboardcolumns'] = $userent['dashboardcolumns'] = $_POST['dashboardcolumns']; + if ($_POST['interfacessort']) { + $pconfig['interfacessort'] = $userent['interfacessort'] = true; + } else { + $pconfig['interfacessort'] = false; + unset($userent['interfacessort']); + } + if ($_POST['dashboardavailablewidgetspanel']) { $pconfig['dashboardavailablewidgetspanel'] = $userent['dashboardavailablewidgetspanel'] = true; } else { diff --git a/src/usr/local/www/system_usermanager.php b/src/usr/local/www/system_usermanager.php index abf9d82..6770297 100644 --- a/src/usr/local/www/system_usermanager.php +++ b/src/usr/local/www/system_usermanager.php @@ -63,6 +63,7 @@ if (isset($id) && $a_user[$id]) { $pconfig['webguifixedmenu'] = $a_user[$id]['webguifixedmenu']; $pconfig['webguihostnamemenu'] = $a_user[$id]['webguihostnamemenu']; $pconfig['dashboardcolumns'] = $a_user[$id]['dashboardcolumns']; + $pconfig['interfacessort'] = isset($a_user[$id]['interfacessort']); $pconfig['dashboardavailablewidgetspanel'] = isset($a_user[$id]['dashboardavailablewidgetspanel']); $pconfig['systemlogsfilterpanel'] = isset($a_user[$id]['systemlogsfilterpanel']); $pconfig['systemlogsmanagelogpanel'] = isset($a_user[$id]['systemlogsmanagelogpanel']); @@ -330,6 +331,12 @@ if ($_POST['save']) { unset($userent['webguihostnamemenu']); } + if ($_POST['interfacessort']) { + $userent['interfacessort'] = true; + } else { + unset($userent['interfacessort']); + } + if ($_POST['dashboardavailablewidgetspanel']) { $userent['dashboardavailablewidgetspanel'] = true; } else { @@ -976,6 +983,7 @@ events.push(function() { hideInput('webguifixedmenu', !adv); hideInput('webguihostnamemenu', !adv); hideInput('dashboardcolumns', !adv); + hideCheckbox('interfacessort', !adv); hideCheckbox('dashboardavailablewidgetspanel', !adv); hideCheckbox('systemlogsfilterpanel', !adv); hideCheckbox('systemlogsmanagelogpanel', !adv); -- cgit v1.1