diff --git a/application/controllers/DashboardsController.php b/application/controllers/DashboardsController.php index 7966f36d6..20545da9b 100644 --- a/application/controllers/DashboardsController.php +++ b/application/controllers/DashboardsController.php @@ -307,7 +307,9 @@ class DashboardsController extends CompatController $dashboards = Json::decode($dashboards['dashboardData'], true); $originals = $dashboards['originals']; + $dashboardType = $dashboards['dashboardType']; unset($dashboards['originals']); + unset($dashboards['dashboardType']); $highlightHome = $this->params->get('home'); $highlightPane = $this->params->get('pane'); @@ -325,7 +327,9 @@ class DashboardsController extends CompatController $orgHome = $this->dashboard->getEntry($originals['originalHome']); $orgHome->loadDashboardEntries($originals['originalPane'] ?? null); - if (isset($originals['originalPane'])) { + // We need to know the original pane only if it's a Dashlet Widget. In this case + // we don't care about the other entries of the original home + if (isset($originals['originalPane']) && $dashboardType === /** Keep this with JS in sync */ 'Dashlets') { $orgPane = $orgHome->getEntry($originals['originalPane']); $orgHome->setEntries([$orgPane->getName() => $orgPane]); } diff --git a/public/js/icinga/behavior/dashboards.js b/public/js/icinga/behavior/dashboards.js index 2136d2360..a50d69f88 100644 --- a/public/js/icinga/behavior/dashboards.js +++ b/public/js/icinga/behavior/dashboards.js @@ -120,6 +120,7 @@ data.originals = null; } + data.dashboardType = _this.getTypeFor(orgEvt.to); data = { dashboardData : JSON.stringify(data) }; let url = _this.icinga.config.baseUrl + '/dashboards/reorder-widgets'; let urlParams = window.location.search; @@ -160,9 +161,7 @@ let options = { scroll : true, - invertSwap : true, dataIdAttr : 'id', - direction : 'vertical', draggable : draggable, handle : '.widget-drag-initiator', group : { name : groupName },