From 790586b74f567b8ec2ff839dbbed08ce082baf0b Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Wed, 29 Jul 2015 15:11:42 +0200 Subject: [PATCH] (ids) add toggle selected for rulesets and rules (https://github.com/opnsense/core/issues/239) --- .../mvc/app/views/OPNsense/IDS/index.volt | 102 ++++++++++++++++-- 1 file changed, 96 insertions(+), 6 deletions(-) diff --git a/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt b/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt index c2c64403f..6202b2984 100644 --- a/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt +++ b/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt @@ -136,6 +136,45 @@ POSSIBILITY OF SUCH DAMAGE. }); } + /** + * toggle selected items + * @param gridId: grid id to to use + * @param url: ajax action to call + * @param state: 0/1/undefined + * @param combine: number of keys to combine (seperate with ,) + * try to avoid too much items per call (results in too long url's) + */ + function actionToggleSelected(gridId, url, state, combine) { + var rows =$("#"+gridId).bootgrid('getSelectedRows'); + if (rows != undefined){ + var deferreds = []; + if (state != undefined) { + var url_suffix = state; + } else { + var url_suffix = ""; + } + + var keyset = []; + $.each(rows, function(key,uuid){ + keyset.push(uuid); + if ( combine == undefined || keyset.length > combine) { + deferreds.push(ajaxCall(url + keyset.join(',') +'/'+url_suffix, sendData={},null)); + keyset = []; + } + }); + + // flush remaining items + if (keyset.length > 0) { + deferreds.push(ajaxCall(url + keyset.join(',') +'/'+url_suffix, sendData={},null)); + } + + // refresh when all toggles are executed + $.when.apply(null, deferreds).done(function(){ + $("#"+gridId).bootgrid("reload"); + }); + } + } + /************************************************************************************************************* * UI load grids (on tab change) *************************************************************************************************************/ @@ -160,8 +199,6 @@ POSSIBILITY OF SUCH DAMAGE. { search:'/api/ids/settings/searchinstalledrules', get:'/api/ids/settings/getRuleInfo/', options:{ - multiSelect:false, - selection:false, requestHandler:addRuleFilters, formatters:{ rowtoggle: function (column, row) { @@ -210,8 +247,6 @@ POSSIBILITY OF SUCH DAMAGE. { search:'/api/ids/settings/listInstallableRulesets', toggle:'/api/ids/settings/toggleInstalledRuleset/', options:{ - multiSelect:false, - selection:false, navigation:0, formatters:{ rowtoggle: function (column, row) { @@ -272,6 +307,42 @@ POSSIBILITY OF SUCH DAMAGE. }); }); + /** + * disable selected rulesets + */ + $("#disableSelectedRuleSets").click(function(){ + var gridId = 'grid-rule-files'; + var url = '/api/ids/settings/toggleInstalledRuleset/'; + actionToggleSelected(gridId, url, 0, 20); + }); + + /** + * enable selected rulesets + */ + $("#enableSelectedRuleSets").click(function(){ + var gridId = 'grid-rule-files'; + var url = '/api/ids/settings/toggleInstalledRuleset/'; + actionToggleSelected(gridId, url, 1, 20); + }); + + /** + * disable selected rules + */ + $("#disableSelectedRules").click(function(){ + var gridId = 'grid-installedrules'; + var url = '/api/ids/settings/toggleRule/'; + actionToggleSelected(gridId, url, 0, 100); + }); + + /** + * enable selected rules + */ + $("#enableSelectedRules").click(function(){ + var gridId = 'grid-installedrules'; + var url = '/api/ids/settings/toggleRule/'; + actionToggleSelected(gridId, url, 1, 100); + }); + /** * Initialize */ @@ -309,13 +380,23 @@ POSSIBILITY OF SUCH DAMAGE. - + + + + + + + +
{{ lang._('Enabled') }}filename {{ lang._('Description') }} {{ lang._('Last updated') }}{{ lang._('Enabled') }}
+ + +
@@ -336,7 +417,7 @@ POSSIBILITY OF SUCH DAMAGE. - + @@ -345,6 +426,15 @@ POSSIBILITY OF SUCH DAMAGE. + + + + + +
sid{{ lang._('sid') }} {{ lang._('Source') }} {{ lang._('ClassType') }} {{ lang._('Message') }}
+ + +