From 2c290dbbf7d7af9c9d6a9b6d4f536573da770a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=98=AD?= <81747598+lan-yonghui@users.noreply.github.com> Date: Tue, 17 Jun 2025 16:14:28 +0800 Subject: [PATCH] fix: hide menu and sorting (#9141) --- core/init/migration/helper/menu.go | 3 +- core/init/migration/migrate.go | 1 + core/init/migration/migrations/init.go | 114 +++++++++++++++++- .../components/Sidebar/components/SubItem.vue | 11 +- 4 files changed, 121 insertions(+), 8 deletions(-) diff --git a/core/init/migration/helper/menu.go b/core/init/migration/helper/menu.go index 1dd5f8ce9..dad26e4e3 100644 --- a/core/init/migration/helper/menu.go +++ b/core/init/migration/helper/menu.go @@ -29,7 +29,7 @@ func LoadMenus() string { {ID: "71", Disabled: false, Title: "menu.files", IsShow: true, Label: "File", Path: "/hosts/files"}, {ID: "72", Disabled: false, Title: "menu.monitor", IsShow: true, Label: "Monitorx", Path: "/hosts/monitor/monitor"}, {ID: "74", Disabled: false, Title: "menu.firewall", IsShow: true, Label: "FirewallPort", Path: "/hosts/firewall/port"}, - {ID: "75", Disabled: false, Title: "menu.supervisor", IsShow: true, Label: "Process", Path: "/hosts/process/process"}, + {ID: "75", Disabled: false, Title: "menu.processManage", IsShow: true, Label: "Process", Path: "/hosts/process/process"}, {ID: "76", Disabled: false, Title: "menu.ssh", IsShow: true, Label: "SSH", Path: "/hosts/ssh/ssh"}, }}, {ID: "8", Disabled: false, Title: "menu.terminal", IsShow: true, Label: "Terminal-Menu", Path: "/hosts/terminal"}, @@ -40,6 +40,7 @@ func LoadMenus() string { {ID: "118", Disabled: false, Title: "xpack.app.app", IsShow: true, Label: "XApp", Path: "/xpack/app"}, {ID: "112", Disabled: false, Title: "xpack.waf.name", IsShow: true, Label: "Dashboard", Path: "/xpack/waf/dashboard"}, {ID: "111", Disabled: false, Title: "xpack.node.nodeManagement", IsShow: true, Label: "Node", Path: "/xpack/node"}, + {ID: "119", Disabled: false, Title: "xpack.upage", IsShow: true, Label: "Upage", Path: "/xpack/upage"}, {ID: "113", Disabled: false, Title: "xpack.monitor.name", IsShow: true, Label: "MonitorDashboard", Path: "/xpack/monitor/dashboard"}, {ID: "114", Disabled: false, Title: "xpack.tamper.tamper", IsShow: true, Label: "Tamper", Path: "/xpack/tamper"}, {ID: "115", Disabled: false, Title: "xpack.exchange.exchange", IsShow: true, Label: "FileExange", Path: "/xpack/exchange/file"}, diff --git a/core/init/migration/migrate.go b/core/init/migration/migrate.go index 7aa762cd6..dceeaf5ea 100644 --- a/core/init/migration/migrate.go +++ b/core/init/migration/migrate.go @@ -17,6 +17,7 @@ func Init() { migrations.InitGoogle, migrations.AddTaskDB, migrations.AddXpackHideMenu, + migrations.UpdateXpackHideMenu, }) if err := m.Migrate(); err != nil { global.LOG.Error(err) diff --git a/core/init/migration/migrations/init.go b/core/init/migration/migrations/init.go index ebdc3de6c..2fcbe1c55 100644 --- a/core/init/migration/migrations/init.go +++ b/core/init/migration/migrations/init.go @@ -312,7 +312,119 @@ var AddXpackHideMenu = &gormigrate.Migration{ } } if !exists { - menus[i].Children = append(menus[i].Children, newItem) + menus[i].Children = append([]dto.ShowMenu{newItem}, menus[i].Children...) + } + break + } + } + + updatedJSON, err := json.Marshal(menus) + if err != nil { + return tx.Model(&model.Setting{}). + Where("key = ?", "HideMenu"). + Update("value", helper.LoadMenus()).Error + } + + return tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Update("value", string(updatedJSON)).Error + }, +} + +var UpdateXpackHideMenu = &gormigrate.Migration{ + ID: "20250617-update-xpack-hide-menu", + Migrate: func(tx *gorm.DB) error { + var menuJSON string + if err := tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Pluck("value", &menuJSON).Error; err != nil { + return err + } + var menus []dto.ShowMenu + if err := json.Unmarshal([]byte(menuJSON), &menus); err != nil { + return tx.Model(&model.Setting{}). + Where("key = ?", "HideMenu"). + Update("value", helper.LoadMenus()).Error + } + newItem := dto.ShowMenu{ + ID: "119", + Disabled: false, + Title: "xpack.upage", + IsShow: true, + Label: "Upage", + Path: "/xpack/upage", + } + + for i, menu := range menus { + if menu.ID == "11" { + exists := false + for _, child := range menu.Children { + if child.ID == newItem.ID { + exists = true + break + } + } + if exists { + break + } + + insertIndex := -1 + for j, child := range menu.Children { + if child.ID == "111" { + insertIndex = j + break + } + } + + if insertIndex != -1 { + children := menu.Children + menus[i].Children = append(children[:insertIndex+1], append([]dto.ShowMenu{newItem}, children[insertIndex+1:]...)...) + } else { + menus[i].Children = append([]dto.ShowMenu{newItem}, menus[i].Children...) + } + break + } + } + + for i, menu := range menus { + if menu.ID == "11" { + existsIndex := -1 + for j, child := range menu.Children { + if child.ID == "118" { + existsIndex = j + break + } + } + + if existsIndex == 0 { + break + } + + var item118 dto.ShowMenu + if existsIndex != -1 { + item118 = menu.Children[existsIndex] + menus[i].Children = append(menu.Children[:existsIndex], menu.Children[existsIndex+1:]...) + } else { + item118 = dto.ShowMenu{ + ID: "118", + Disabled: false, + Title: "xpack.app.app", + IsShow: true, + Label: "XApp", + Path: "/xpack/app", + } + } + + menus[i].Children = append([]dto.ShowMenu{item118}, menus[i].Children...) + break + } + } + + for i, menu := range menus { + if menu.ID == "7" { + for j, child := range menu.Children { + if child.ID == "75" { + if child.Title != "menu.processManage" { + menus[i].Children[j].Title = "menu.processManage" + } + break + } } break } diff --git a/frontend/src/layout/components/Sidebar/components/SubItem.vue b/frontend/src/layout/components/Sidebar/components/SubItem.vue index 3a08bd952..fe58cbc60 100644 --- a/frontend/src/layout/components/Sidebar/components/SubItem.vue +++ b/frontend/src/layout/components/Sidebar/components/SubItem.vue @@ -18,7 +18,11 @@ {{ $t(subItem.meta?.title as string, 2) }} - + + + @@ -28,11 +32,6 @@ {{ $t(subItem.meta?.title as string, 2) }} - - -