From bbf398133ed30a3e616e874c59359c878875ea61 Mon Sep 17 00:00:00 2001 From: Luke Towers Date: Wed, 13 Feb 2019 15:05:18 -0600 Subject: [PATCH] Fix issues with AJAX handlers on dashboard widgets. Replaces #4132 --- modules/backend/classes/ReportWidgetBase.php | 8 ++++++++ modules/backend/widgets/ReportContainer.php | 3 +++ 2 files changed, 11 insertions(+) diff --git a/modules/backend/classes/ReportWidgetBase.php b/modules/backend/classes/ReportWidgetBase.php index 8d5b7086d..d37e180d1 100644 --- a/modules/backend/classes/ReportWidgetBase.php +++ b/modules/backend/classes/ReportWidgetBase.php @@ -15,6 +15,14 @@ class ReportWidgetBase extends WidgetBase { $this->properties = $this->validateProperties($properties); + /* + * Ensure the provided alias (if present) takes effect as the widget configuration is + * not passed to the WidgetBase constructor which would normally take care of that + */ + if (!isset($this->alias)) { + $this->alias = $properties['alias'] ?? $this->defaultAlias; + } + parent::__construct($controller); } } diff --git a/modules/backend/widgets/ReportContainer.php b/modules/backend/widgets/ReportContainer.php index 53281a437..a3b02e368 100644 --- a/modules/backend/widgets/ReportContainer.php +++ b/modules/backend/widgets/ReportContainer.php @@ -236,6 +236,9 @@ class ReportContainer extends WidgetBase } while (array_key_exists($alias, $widgets)); + // Ensure that the widget's alias is correctly set for this request + $widget->alias = $alias; + $sortOrder = 0; foreach ($widgets as $widgetInfo) { $sortOrder = max($sortOrder, $widgetInfo['sortOrder']);