From abf431ea3bb8666a37959621008110fd491d7008 Mon Sep 17 00:00:00 2001 From: Alex <40072887+alexdcrane@users.noreply.github.com> Date: Wed, 10 Sep 2025 13:55:59 -0700 Subject: [PATCH] Dashboard Edit: Add widget group assign/unassign feature (#7489) * Dashboard Edit: Add widget group assign/unassign feature * Update dashboard.php * Update app_languages.php * Update index.php * Update dashboard_widget_edit.php * Update dashboard_widget_list.php * Update dashboard.php --- core/dashboard/app_languages.php | 50 +++++ core/dashboard/dashboard_widget_edit.php | 2 +- core/dashboard/dashboard_widget_list.php | 59 ++++-- core/dashboard/index.php | 2 +- .../dashboard/resources/classes/dashboard.php | 176 +++++++++++++++++- 5 files changed, 273 insertions(+), 16 deletions(-) diff --git a/core/dashboard/app_languages.php b/core/dashboard/app_languages.php index e19e467b83..2a5b26d79a 100644 --- a/core/dashboard/app_languages.php +++ b/core/dashboard/app_languages.php @@ -2234,4 +2234,54 @@ $text['label-system_status']['zh-cn'] = "系统状况"; $text['label-system_status']['ja-jp'] = "システムステータス"; $text['label-system_status']['ko-kr'] = "시스템 상태"; +$text['button-assign']['en-us'] = "Assign"; +$text['button-assign']['en-gb'] = "Assign"; +$text['button-assign']['ar-eg'] = "تعيين"; +$text['button-assign']['de-at'] = "Zuweisen"; +$text['button-assign']['de-ch'] = "Zuweisen"; +$text['button-assign']['de-de'] = "Zuweisen"; +$text['button-assign']['el-gr'] = "Ανάθεση"; +$text['button-assign']['es-cl'] = "Asignar"; +$text['button-assign']['es-mx'] = "Asignar"; +$text['button-assign']['fr-ca'] = "Attribuer"; +$text['button-assign']['fr-fr'] = "Attribuer"; +$text['button-assign']['he-il'] = "הקצה"; +$text['button-assign']['it-it'] = "Assegna"; +$text['button-assign']['nl-nl'] = "Toewijzen"; +$text['button-assign']['pl-pl'] = "Przypisz"; +$text['button-assign']['pt-br'] = "Atribuir"; +$text['button-assign']['pt-pt'] = "Atribuir"; +$text['button-assign']['ro-ro'] = "Atribuie"; +$text['button-assign']['ru-ru'] = "Назначить"; +$text['button-assign']['sv-se'] = "Tilldela"; +$text['button-assign']['uk-ua'] = "Призначити"; +$text['button-assign']['zh-cn'] = "分配"; +$text['button-assign']['ja-jp'] = "割り当てる"; +$text['button-assign']['ko-kr'] = "할당하다"; + +$text['button-unassign']['en-us'] = "Unassign"; +$text['button-unassign']['en-gb'] = "Unassign"; +$text['button-unassign']['ar-eg'] = "إلغاء التعيين"; +$text['button-unassign']['de-at'] = "Entfernen"; +$text['button-unassign']['de-ch'] = "Entfernen"; +$text['button-unassign']['de-de'] = "Entfernen"; +$text['button-unassign']['el-gr'] = "Αφαίρεση"; +$text['button-unassign']['es-cl'] = "Desasignar"; +$text['button-unassign']['es-mx'] = "Desasignar"; +$text['button-unassign']['fr-ca'] = "Désattribuer"; +$text['button-unassign']['fr-fr'] = "Désattribuer"; +$text['button-unassign']['he-il'] = "בטל הקצאה"; +$text['button-unassign']['it-it'] = "Disassegna"; +$text['button-unassign']['nl-nl'] = "Verwijderen"; +$text['button-unassign']['pl-pl'] = "Cofnij przypisanie"; +$text['button-unassign']['pt-br'] = "Desatribuir"; +$text['button-unassign']['pt-pt'] = "Desatribuir"; +$text['button-unassign']['ro-ro'] = "Dezafectare"; +$text['button-unassign']['ru-ru'] = "Убрать назначение"; +$text['button-unassign']['sv-se'] = "Avdela"; +$text['button-unassign']['uk-ua'] = "Скасувати призначення"; +$text['button-unassign']['zh-cn'] = "取消分配"; +$text['button-unassign']['ja-jp'] = "割り当て解除"; +$text['button-unassign']['ko-kr'] = "할당 해제"; + ?> diff --git a/core/dashboard/dashboard_widget_edit.php b/core/dashboard/dashboard_widget_edit.php index 74c917fd74..3f5b2f2d71 100644 --- a/core/dashboard/dashboard_widget_edit.php +++ b/core/dashboard/dashboard_widget_edit.php @@ -209,7 +209,7 @@ //redirect the user if (in_array($_POST['action'], array('copy', 'delete', 'toggle'))) { - header('Location: dashboard_edit.php?id='.$dashboard_uuid); + header('Location: dashboard_edit.php?id='.urlencode($dashboard_uuid)); exit; } } diff --git a/core/dashboard/dashboard_widget_list.php b/core/dashboard/dashboard_widget_list.php index 685a6e1229..1bff2d9e88 100644 --- a/core/dashboard/dashboard_widget_list.php +++ b/core/dashboard/dashboard_widget_list.php @@ -43,22 +43,34 @@ $action = $_POST['action']; $dashboard_uuid = $_POST['dashboard_uuid']; $dashboard_widgets = $_POST['dashboard_widgets']; + $group_uuid = $_POST['group_uuid']; } //process the http post data by action if (!empty($action) && !empty($dashboard_widgets)) { - switch ($action) { case 'toggle': if (permission_exists('dashboard_widget_edit')) { $obj = new dashboard; - $obj->toggle_items($dashboard_widgets); + $obj->toggle_widgets($dashboard_widgets); } break; case 'delete': if (permission_exists('dashboard_widget_delete')) { $obj = new dashboard; - $obj->delete_items($dashboard_widgets); + $obj->delete_widgets($dashboard_widgets); + } + break; + case 'group_widgets_add': + if (permission_exists('dashboard_widget_edit')) { + $obj = new dashboard; + $obj->assign_widgets($dashboard_widgets, $dashboard_uuid, $group_uuid); + } + break; + case 'group_widgets_delete': + if (permission_exists('dashboard_widget_delete')) { + $obj = new dashboard; + $obj->unassign_widgets($dashboard_widgets, $dashboard_uuid, $group_uuid); } break; } @@ -107,17 +119,17 @@ $sql .= limit_offset($rows_per_page ?? null, $offset ?? null); $database = new database; $parameters['dashboard_uuid'] = $dashboard_uuid; - $widget_data = $database->select($sql, $parameters ?? null, 'all'); + $result = $database->select($sql, $parameters ?? null, 'all'); unset($sql, $parameters); //get the list of widget uuids $widget_uuid_list = []; - foreach ($widget_data as $row) { + foreach ($result as $row) { $widget_uuid_list[] = $row['dashboard_widget_uuid']; } $widgets = []; - foreach ($widget_data as $row) { + foreach ($result as $row) { //skip child widgets unless the parent doesn't exist if (!empty($row['dashboard_widget_parent_uuid']) && in_array($row['dashboard_widget_parent_uuid'], $widget_uuid_list)) { continue; @@ -128,7 +140,7 @@ //add child widgets under parent widgets if ($row['widget_path'] == 'dashboard/parent') { - foreach ($widget_data as $child) { + foreach ($result as $child) { if ($child['dashboard_widget_parent_uuid'] == $row['dashboard_widget_uuid']) { $widgets[] = $child; } @@ -136,14 +148,42 @@ } } + //get the group list + $sql = "select group_uuid, group_name from v_groups "; + $database = new database; + $groups = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); + //create token $object = new token; $token = $object->create('/core/dashboard/dashboard_widget_list.php'); //show the content + echo "