From 90e006feb5957978feb7ea224cbd06ad9a5b5647 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 4 Oct 2022 08:22:27 +0200 Subject: [PATCH] allow widgets array for add operations --- application/controllers/dashboard/Config.php | 21 ++++++++---------- .../libraries/dashboard/DashboardLib.php | 22 ++++++++++++++----- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/application/controllers/dashboard/Config.php b/application/controllers/dashboard/Config.php index c03bcdbf3..60225fa11 100644 --- a/application/controllers/dashboard/Config.php +++ b/application/controllers/dashboard/Config.php @@ -14,9 +14,9 @@ class Config extends Auth_Controller 'index' => 'dashboard/benutzer:r', 'dummy' => 'dashboard/benutzer:r', 'genWidgetId' => 'dashboard/benutzer:rw', - 'addWidgetToPreset' => 'dashboard/admin:rw', + 'addWidgetsToPreset' => 'dashboard/admin:rw', 'removeWidgetFromPreset' => 'dashboard/admin:rw', - 'addWidgetToUserOverride' => 'dashboard/benutzer:rw', + 'addWidgetsToUserOverride' => 'dashboard/benutzer:rw', 'removeWidgetFromUserOverride' => 'dashboard/benutzer:rw' ) ); @@ -46,11 +46,11 @@ class Config extends Auth_Controller $dashboard_kurzbz = $this->input->get('db'); $widgetid = $this->DashboardLib->generateWidgetId($dashboard_kurzbz); $this->outputJsonSuccess(array( - 'widgetid' => $widgetid['widgetid'] + 'widgetid' => $widgetid )); } - public function addWidgetToPreset() + public function addWidgetsToPreset() { $input = json_decode($this->input->raw_input_stream); $dashboard_kurzbz = $input->db; @@ -59,10 +59,9 @@ class Config extends Auth_Controller $preset = $this->DashboardLib->getPresetOrCreateEmptyPreset($dashboard_kurzbz, $funktion_kurzbz); $preset_decoded = json_decode($preset->preset, true); - $widgetid = $this->DashboardLib->generateWidgetId($dashboard_kurzbz); - $this->DashboardLib->addWidgetToWidgets($preset_decoded['widgets'], - $funktion_kurzbz, $input->widget, $widgetid['widgetid']); + $this->DashboardLib->addWidgetsToWidgets($preset_decoded['widgets'], + $dashboard_kurzbz, $funktion_kurzbz, $input->widgets); $preset->preset = json_encode($preset_decoded); @@ -109,7 +108,7 @@ class Config extends Auth_Controller $this->outputJsonSuccess(array('msg' => 'preset successfully updated.')); } - public function addWidgetToUserOverride() + public function addWidgetsToUserOverride() { $input = json_decode($this->input->raw_input_stream); $dashboard_kurzbz = $input->db; @@ -119,11 +118,9 @@ class Config extends Auth_Controller $override = $this->DashboardLib->getOverrideOrCreateEmptyOverride($dashboard_kurzbz, $uid); $override_decoded = json_decode($override->override, true); - $widgetid = isset($input->widgetid) ? array('widgetid' => $input->widgetid) - : $this->DashboardLib->generateWidgetId($dashboard_kurzbz); - $this->DashboardLib->addWidgetToWidgets($override_decoded['widgets'], - $funktion_kurzbz, $input->widget, $widgetid['widgetid']); + $this->DashboardLib->addWidgetsToWidgets($override_decoded['widgets'], + $dashboard_kurzbz, $funktion_kurzbz, $input->widgets); $override->override = json_encode($override_decoded); diff --git a/application/libraries/dashboard/DashboardLib.php b/application/libraries/dashboard/DashboardLib.php index ba8469bfd..3f189fc03 100644 --- a/application/libraries/dashboard/DashboardLib.php +++ b/application/libraries/dashboard/DashboardLib.php @@ -31,10 +31,7 @@ class DashboardLib $widgetid_input = time() . '_' . $dashboard_kurzbz . '_' . bin2hex(random_bytes(self::WIDGET_ID_RANDOM_BYTES)); $widgetid = md5($widgetid_input); - return array( - 'widgetid' => $widgetid, - 'widgetid_input' => $widgetid_input - ); + return $widgetid; } public function getDashboardByKurzbz($dashboard_kurzbz) @@ -131,11 +128,12 @@ class DashboardLib return $emptypreset; } - public function getPreset($dashboard_kurzbz, $funktion_kurzbz) + public function getPreset($dashboard_kurzbz, $section) { $dashboard = $this->getDashboardByKurzbz($dashboard_kurzbz); $preset = null; + $funktion_kurzbz = ($section === self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL) ? null : $section; $result = $this->_ci->DashboardPresetModel ->getPresetByDashboardAndFunktion($dashboard->dashboard_id, $funktion_kurzbz); @@ -189,6 +187,18 @@ class DashboardLib return $result; } + public function addWidgetsToWidgets(&$widgets, $dashboard_kurzbz, $section, $addwigets) + { + foreach ($addwigets as $widget) + { + if(!isset($widget->widgetid)) + { + $widget->widgetid = $this->generateWidgetId($dashboard_kurzbz); + } + $this->addWidgetToWidgets($widgets, $section, $widget, $widget->widgetid); + } + } + public function addWidgetToWidgets(&$widgets, $section, $widget, $widgetid) { $section = ($section !== null) ? $section : self::SECTION_IF_FUNKTION_KURZBZ_IS_NULL; @@ -206,7 +216,7 @@ class DashboardLib if(isset($widgets[$section]) && isset($widgets[$section][$widgetid]) ) { unset($widgets[$section][$widgetid]); - if(empty($widgets[$section])) { + if(empty($widgets[$section]) && $section !== self::USEROVERRIDE_SECTION) { unset($widgets[$section]); } return true;