diff --git ui/app/controllers/CControllerHostView.php ui/app/controllers/CControllerHostView.php index 09550d9c94..a0584f8f8c 100644 --- ui/app/controllers/CControllerHostView.php +++ ui/app/controllers/CControllerHostView.php @@ -51,7 +51,8 @@ class CControllerHostView extends CControllerHost { // Validate tags filter. if ($ret && $this->hasInput('filter_tags')) { foreach ($this->getInput('filter_tags') as $filter_tag) { - if (count($filter_tag) != 3 + if (!is_array($filter_tag) + || count($filter_tag) != 3 || !array_key_exists('tag', $filter_tag) || !is_string($filter_tag['tag']) || !array_key_exists('value', $filter_tag) || !is_string($filter_tag['value']) || !array_key_exists('operator', $filter_tag) || !is_string($filter_tag['operator'])) { @@ -168,22 +169,24 @@ class CControllerHostView extends CControllerHost { 'page' => $this->hasInput('page') ? $this->getInput('page') : null ]; - $refresh_curl = (new CUrl('zabbix.php')) - ->setArgument('action', 'host.view.refresh') - ->setArgument('filter_name', $filter['name']) - ->setArgument('filter_groupids', $filter['groupids']) - ->setArgument('filter_ip', $filter['ip']) - ->setArgument('filter_dns', $filter['dns']) - ->setArgument('filter_port', $filter['port']) - ->setArgument('filter_status', $filter['status']) - ->setArgument('filter_evaltype', $filter['evaltype']) - ->setArgument('filter_tags', $filter['tags']) - ->setArgument('filter_severities', $filter['severities']) - ->setArgument('filter_show_suppressed', $filter['show_suppressed']) - ->setArgument('filter_maintenance_status', $filter['maintenance_status']) - ->setArgument('sort', $sort) - ->setArgument('sortorder', $sortorder) - ->setArgument('page', $filter['page']); + $refresh_curl = (new CUrl('zabbix.php'))->setArgument('action', 'host.view.refresh'); + + $refresh_data = array_filter([ + 'filter_name' => $filter['name'], + 'filter_groupids' => $filter['groupids'], + 'filter_ip' => $filter['ip'], + 'filter_dns' => $filter['dns'], + 'filter_port' => $filter['port'], + 'filter_status' => $filter['status'], + 'filter_evaltype' => $filter['evaltype'], + 'filter_tags' => $filter['tags'], + 'filter_severities' => $filter['severities'], + 'filter_show_suppressed' => $filter['show_suppressed'], + 'filter_maintenance_status' => $filter['maintenance_status'], + 'sort' => $sort, + 'sortorder' => $sortorder, + 'page' => $filter['page'] + ]); $prepared_data = $this->prepareData($filter, $sort, $sortorder); @@ -192,6 +195,7 @@ class CControllerHostView extends CControllerHost { 'sort' => $sort, 'sortorder' => $sortorder, 'refresh_url' => $refresh_curl->getUrl(), + 'refresh_data' => $refresh_data, 'refresh_interval' => CWebUser::getRefresh() * 1000, 'active_tab' => $active_tab ] + $prepared_data; diff --git ui/app/views/js/monitoring.host.view.js.php ui/app/views/js/monitoring.host.view.js.php index 9bcd5a2444..15ecaaa928 100644 --- ui/app/views/js/monitoring.host.view.js.php +++ ui/app/views/js/monitoring.host.view.js.php @@ -55,6 +55,7 @@ function hostPage() { this.refresh_url = ''; + this.refresh_data = ; this.refresh_interval = ; this.running = false; this.timeout = null; @@ -73,7 +74,12 @@ refresh: function() { this.setLoading(); - var deferred = $.getJSON(this.refresh_url); + var deferred = $.ajax({ + url: this.refresh_url, + data: this.refresh_data, + type: 'post', + dataType: 'json' + }); return this.bindDataEvents(deferred); }, diff --git ui/js/flickerfreescreen.js ui/js/flickerfreescreen.js index 16ccf26c49..ca29296834 100644 --- ui/js/flickerfreescreen.js +++ ui/js/flickerfreescreen.js @@ -118,17 +118,22 @@ 'screenitemid' ] }, - params_index = type_params[screen.resourcetype] ? screen.resourcetype : 'default'; - ajax_url = new Curl('jsrpc.php'), + params_index = type_params[screen.resourcetype] ? screen.resourcetype : 'default', self = this; - ajax_url.setArgument('type', 9); // PAGE_TYPE_TEXT - ajax_url.setArgument('method', 'screen.get'); - // TODO: remove, do not use timestamp passing to server and back to ensure newest content will be shown. - ajax_url.setArgument('timestamp', screen.timestampActual); + const ajax_url = new Curl('jsrpc.php'); + const post_data = { + type: 9, // PAGE_TYPE_TEXT + method: 'screen.get', + + // TODO: remove, do not use timestamp passing to server and back to ensure newest content will be shown. + timestamp: screen.timestampActual + }; $.each(type_params[params_index], function (i, name) { - ajax_url.setArgument(name, empty(screen[name]) ? null : screen[name]); + if (!empty(screen[name])) { + post_data[name] = screen[name]; + } }); // set actual timestamp @@ -137,8 +142,8 @@ // timeline params // SCREEN_RESOURCE_HTTPTEST_DETAILS, SCREEN_RESOURCE_DISCOVERY, SCREEN_RESOURCE_HTTPTEST if ($.inArray(screen.resourcetype, [21, 22, 23]) === -1) { - ajax_url.setArgument('from', screen.timeline.from); - ajax_url.setArgument('to', screen.timeline.to); + post_data.from = screen.timeline.from; + post_data.to = screen.timeline.to; } switch (parseInt(screen.resourcetype, 10)) { @@ -166,7 +171,7 @@ // SCREEN_RESOURCE_PLAIN_TEXT case 3: - self.refreshHtml(id, ajax_url); + self.refreshHtml(id, ajax_url, post_data); break; // SCREEN_RESOURCE_CLOCK @@ -183,12 +188,12 @@ if ('itemids' in screen.data) { $.each(screen.data.itemids, function (i, value) { if (!empty(value)) { - ajax_url.setArgument('itemids[' + value + ']', value); + post_data['itemids[' + value + ']'] = value; } }); } else { - ajax_url.setArgument('graphid', screen.data.graphid); + post_data['graphid'] = screen.data.graphid; } $.each({ @@ -198,11 +203,11 @@ 'action': screen.data.action }, function (ajax_key, value) { if (!empty(value)) { - ajax_url.setArgument(ajax_key, value); + post_data[ajax_key] = value; } }); - self.refreshHtml(id, ajax_url); + self.refreshHtml(id, ajax_url, post_data); } break; @@ -210,11 +215,11 @@ // SCREEN_RESOURCE_LLD_GRAPH case 20: case 19: - self.refreshProfile(id, ajax_url); + self.refreshProfile(id, ajax_url, post_data); break; default: - self.refreshHtml(id, ajax_url); + self.refreshHtml(id, ajax_url, post_data); break; } @@ -249,7 +254,7 @@ } }, - refreshHtml: function(id, ajaxUrl) { + refreshHtml: function(id, ajaxUrl, post_data = {}) { var screen = this.screens[id], request_start = new CDate().getTime(); @@ -265,7 +270,7 @@ url: ajaxUrl.getUrl(), type: 'post', cache: false, - data: {}, + data: post_data, dataType: 'html', success: function(html) { var html = $(html); @@ -452,7 +457,7 @@ return null; }, - refreshProfile: function(id, ajaxUrl) { + refreshProfile: function(id, ajaxUrl, post_data) { var screen = this.screens[id]; if (screen.isRefreshing) { @@ -465,7 +470,7 @@ var ajaxRequest = $.ajax({ url: ajaxUrl.getUrl(), type: 'post', - data: {}, + data: post_data, success: function(data) { screen.timestamp = new CDate().getTime(); screen.isRefreshing = false;