diff options
author | Stephen Beaver <sbeaver@netgate.com> | 2016-02-03 11:01:47 -0500 |
---|---|---|
committer | Stephen Beaver <sbeaver@netgate.com> | 2016-02-03 11:02:15 -0500 |
commit | 5d916fc76a1ffcd4d7b446ff063ecfd25f5dfad5 (patch) | |
tree | cfe761ee273bbff21741825ba06d9f53e4600633 /src/usr/local/www/system_usermanager_addprivs.php | |
parent | f519f112e034b35a3288be215110d93fa84e77f4 (diff) | |
download | pfsense-5d916fc76a1ffcd4d7b446ff063ecfd25f5dfad5.zip pfsense-5d916fc76a1ffcd4d7b446ff063ecfd25f5dfad5.tar.gz |
Improvements to the priviledge filter functionality
Diffstat (limited to 'src/usr/local/www/system_usermanager_addprivs.php')
-rw-r--r-- | src/usr/local/www/system_usermanager_addprivs.php | 65 |
1 files changed, 57 insertions, 8 deletions
diff --git a/src/usr/local/www/system_usermanager_addprivs.php b/src/usr/local/www/system_usermanager_addprivs.php index 62c6636..35753c8 100644 --- a/src/usr/local/www/system_usermanager_addprivs.php +++ b/src/usr/local/www/system_usermanager_addprivs.php @@ -93,6 +93,7 @@ $spriv_list = $priv_list; uasort($spriv_list, admusercmp); if ($_POST) { + conf_mount_rw(); unset($input_errors); @@ -186,8 +187,15 @@ $section->addInput(new Form_Select( true ))->addClass('multiselect') ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items'); - // ->setAttribute('style', 'height:400px;'); +$section->addInput(new Form_Select( + 'shadow', + 'Shadow', + null, + build_priv_list(), + true +))->addClass('shadowselect') + ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items'); $section->addInput(new Form_Input( 'filtertxt', @@ -240,6 +248,7 @@ events.push(function() { <?php + // Build a list of privilege descriptions if (is_array($spriv_list)) { $id = 0; @@ -257,24 +266,39 @@ events.push(function() { echo $jdescs; } ?> + + $('.shadowselect').hide(); + // Set the number of options to display $('.multiselect').attr("size","20"); + $('.shadowselect').attr("size","20"); // When the 'sysprivs" selector is clicked, we display a description $('.multiselect').click(function() { $('#pdesc').html('<span class="text-info">' + descs[$(this).children('option:selected').index()] + '</span>'); + + // and update the shadow list from the real list + $(".multiselect option").each(function() { + shadowoption = $('.shadowselect option').filter('[value=' + $(this).val() + ']'); + + if ($(this).is(':selected')) { + shadowoption.prop("selected", true); + } else { + shadowoption.prop("selected", false); + } + }); }); $('#btnfilter').prop('type', 'button'); $('#btnfilter').click(function() { searchterm = $('#filtertxt').val().toLowerCase(); + copyselect(true); + // Then filter $(".multiselect > option").each(function() { - if (this.text.toLowerCase().indexOf(searchterm) > -1 ) { - $(this).show(); - } else { - $(this).hide(); + if (this.text.toLowerCase().indexOf(searchterm) == -1 ) { + $(this).remove(); } }); }); @@ -282,9 +306,10 @@ events.push(function() { $('#btnclear').prop('type', 'button'); $('#btnclear').click(function() { - $(".multiselect > option").each(function() { - $(this).show(); - }); + // Copy all options from shadow to sysprivs + copyselect(true) + + $('#filtertxt').val(''); }); $('#filtertxt').keypress(function(e) { @@ -296,9 +321,33 @@ events.push(function() { // On submit unhide all options (or else they will not submit) $('form').submit(function() { + $(".multiselect > option").each(function() { $(this).show(); }); + + $('.shadowselect').remove(); + }); + + function copyselect(selected) { + // Copy all optionsfrom shadow to sysprivs + $('.multiselect').html($('.shadowselect').html()); + + if (selected) { + // Update the shadow list from the real list + $(".shadowselect option").each(function() { + multioption = $('.multiselect option').filter('[value=' + $(this).val() + ']'); + if ($(this).is(':selected')) { + multioption.prop("selected", true); + } else { + multioption.prop("selected", false); + } + }); + } + } + + $('.multiselect').mouseup(function () { + $('.multiselect').trigger('click'); }); }); //]]> |