diff --git a/public/js/icinga/loader.js b/public/js/icinga/loader.js index 468074d2f..4a51c644c 100644 --- a/public/js/icinga/loader.js +++ b/public/js/icinga/loader.js @@ -555,7 +555,28 @@ this.icinga.timer.unregister(req.progressTimer); } - this.renderContentToContainer(req.responseText, req.$target, req.action, req.autorefresh, req.forceFocus, autoSubmit); + var contentSeparator = req.getResponseHeader('X-Icinga-Multipart-Content'); + if (!! contentSeparator) { + $.each(req.responseText.split(contentSeparator), function (idx, el) { + var match = el.match(/for=(?\S+)\s+(?.*)/m); + if (!! match) { + var $target = $('#' + match.groups.id); + if ($target.length) { + _this.renderContentToContainer( + match.groups.html, $target, 'replace', req.autorefresh, req.forceFocus, autoSubmit); + } else { + _this.icinga.logger.warn( + 'Invalid target ID. Cannot render multipart to #' + match.groups.id); + } + } else { + _this.icinga.logger.error('Ill-formed multipart', el); + } + }) + } else { + this.renderContentToContainer( + req.responseText, req.$target, req.action, req.autorefresh, req.forceFocus, autoSubmit); + } + if (oldNotifications) { oldNotifications.appendTo($('#notifications')); }