allow widgets array for add operations

This commit is contained in:
Harald Bamberger
2022-10-04 08:22:27 +02:00
parent d14608ed28
commit 90e006feb5
2 changed files with 25 additions and 18 deletions
+9 -12
View File
@@ -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);
@@ -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;