部分中文转换为多语言代号

This commit is contained in:
GoEdgeLab
2023-06-28 16:18:52 +08:00
parent 97fe91c7b0
commit 0aae6a5beb
25 changed files with 195 additions and 125 deletions

View File

@@ -5,10 +5,12 @@ package nodes
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/ttlcache"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/logs"
"strings"
"time"
)
// SessionManager SESSION管理
@@ -32,6 +34,15 @@ func (this *SessionManager) Read(sid string) map[string]string {
var result = map[string]string{}
var cacheKey = "SESSION@" + sid
var item = ttlcache.DefaultCache.Read(cacheKey)
if item != nil && item.Value != nil {
itemMap, ok := item.Value.(map[string]string)
if ok {
return itemMap
}
}
rpcClient, err := rpc.SharedRPC()
if err != nil {
return map[string]string{}
@@ -54,6 +65,9 @@ func (this *SessionManager) Read(sid string) map[string]string {
logs.Println("SESSION", "decode '"+sid+"' values failed: "+err.Error())
}
// Write to cache
ttlcache.DefaultCache.Write(cacheKey, result, time.Now().Unix()+300 /** must not be too long **/)
return result
}

View File

@@ -150,7 +150,7 @@ func (this *ParentAction) ViewData() maps.Map {
return this.Data
}
func (this *ParentAction) Lang() string {
func (this *ParentAction) LangCode() string {
var lang = configloaders.FindAdminLang(this.AdminId())
if len(lang) > 0 {
// TODO check language still exists
@@ -158,3 +158,15 @@ func (this *ParentAction) Lang() string {
}
return langs.ParseLangFromAction(this)
}
func (this *ParentAction) Lang(messageCode langs.MessageCode, args ...any) string {
return langs.Message(this.LangCode(), messageCode, args...)
}
func (this *ParentAction) FailLang(messageCode langs.MessageCode, args ...any) {
this.Fail(langs.Message(this.LangCode(), messageCode, args...))
}
func (this *ParentAction) FailFieldLang(field string, messageCode langs.MessageCode, args ...any) {
this.FailField(field, langs.Message(this.LangCode(), messageCode, args...))
}

View File

@@ -51,7 +51,7 @@ func (this *AdminAction) RunGet(params struct {
// 权限
moduleMaps := []maps.Map{}
for _, m := range configloaders.AllModuleMaps(this.Lang()) {
for _, m := range configloaders.AllModuleMaps(this.LangCode()) {
code := m.GetString("code")
isChecked := false
for _, module := range admin.Modules {

View File

@@ -20,7 +20,7 @@ func (this *CreatePopupAction) Init() {
}
func (this *CreatePopupAction) RunGet(params struct{}) {
this.Data["modules"] = configloaders.AllModuleMaps(this.Lang())
this.Data["modules"] = configloaders.AllModuleMaps(this.LangCode())
this.Show()
}

View File

@@ -59,7 +59,7 @@ func (this *UpdateAction) RunGet(params struct {
}
// 权限
var moduleMaps = configloaders.AllModuleMaps(this.Lang())
var moduleMaps = configloaders.AllModuleMaps(this.LangCode())
for _, m := range moduleMaps {
code := m.GetString("code")
isChecked := false

View File

@@ -3,6 +3,7 @@ package cluster
import (
"github.com/TeaOSLab/EdgeAdmin/internal/oplogs"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
@@ -27,12 +28,12 @@ func (this *CreateBatchAction) RunGet(params struct {
}) {
leftMenuItems := []maps.Map{
{
"name": "单个创建",
"name": this.Lang(codes.AdminNodeMenuCreateSingleNode),
"url": "/clusters/cluster/createNode?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": false,
},
{
"name": "批量创建",
"name": this.Lang(codes.AdminNodeMenuCreateMultipleNodes),
"url": "/clusters/cluster/createBatch?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": true,
},

View File

@@ -7,6 +7,7 @@ import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/clusterutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
@@ -37,12 +38,12 @@ func (this *CreateNodeAction) RunGet(params struct {
var leftMenuItems = []maps.Map{
{
"name": "单个创建",
"name": this.Lang(codes.AdminNodeMenuCreateSingleNode),
"url": "/clusters/cluster/createNode?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": true,
},
{
"name": "批量创建",
"name": this.Lang(codes.AdminNodeMenuCreateMultipleNodes),
"url": "/clusters/cluster/createBatch?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": false,
},

View File

@@ -19,7 +19,7 @@ func (this *InstallManualAction) Init() {
func (this *InstallManualAction) RunGet(params struct {
ClusterId int64
}) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "manual")
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "manual", this.LangCode())
nodesResp, err := this.RPC().NodeRPC().FindAllNotInstalledNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllNotInstalledNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId})
if err != nil {

View File

@@ -19,7 +19,7 @@ func (this *InstallNodesAction) Init() {
func (this *InstallNodesAction) RunGet(params struct {
ClusterId int64
}) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "register")
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "register", this.LangCode())
clusterResp, err := this.RPC().NodeClusterRPC().FindEnabledNodeCluster(this.AdminContext(), &pb.FindEnabledNodeClusterRequest{NodeClusterId: params.ClusterId})
if err != nil {

View File

@@ -21,7 +21,7 @@ func (this *InstallRemoteAction) Init() {
func (this *InstallRemoteAction) RunGet(params struct {
ClusterId int64
}) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "install")
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "install", this.LangCode())
nodesResp, err := this.RPC().NodeRPC().FindAllNotInstalledNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllNotInstalledNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId})
if err != nil {

View File

@@ -5,6 +5,7 @@ package nodeutils
import (
"errors"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types"
@@ -57,24 +58,24 @@ func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Nod
var menuItems = []maps.Map{
{
"name": "基础设置",
"name": parentAction.Lang(codes.AdminNodeMenuSettingBasic),
"url": prefix + "/update?" + query,
"isActive": menuItem == "basic",
},
{
"name": "DNS设置",
"name": parentAction.Lang(codes.AdminNodeMenuSettingDNS),
"url": prefix + "/settings/dns?" + query,
"isActive": menuItem == "dns",
"isOn": info.HasDNSInfo,
},
{
"name": "缓存设置",
"name": parentAction.Lang(codes.AdminNodeMenuSettingCache),
"url": prefix + "/settings/cache?" + query,
"isActive": menuItem == "cache",
"isOn": info.HasCacheInfo,
},
{
"name": "DDoS防护",
"name": parentAction.Lang(codes.AdminNodeMenuSettingDDoSProtection),
"url": prefix + "/settings/ddos-protection?" + query,
"isActive": menuItem == "ddosProtection",
"isOn": info.HasDDoSProtection,
@@ -84,16 +85,16 @@ func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Nod
"url": "",
},
}
menuItems = filterMenuItems(menuItems, menuItem, prefix, query, info)
menuItems = filterMenuItems(menuItems, menuItem, prefix, query, info, parentAction.LangCode())
menuItems = append(menuItems, []maps.Map{
{
"name": "SSH设置",
"name": parentAction.Lang(codes.AdminNodeMenuSettingSSH),
"url": prefix + "/settings/ssh?" + query,
"isActive": menuItem == "ssh",
"isOn": info.HasSSH,
},
{
"name": "系统设置",
"name": parentAction.Lang(codes.AdminNodeMenuSettingSystem),
"url": prefix + "/settings/system?" + query,
"isActive": menuItem == "system",
"isOn": info.HasSystemSettings,

View File

@@ -8,6 +8,6 @@ import (
"github.com/iwind/TeaGo/maps"
)
func filterMenuItems(menuItems []maps.Map, menuItem string, prefix string, query string, info *pb.FindEnabledNodeConfigInfoResponse) []maps.Map {
func filterMenuItems(menuItems []maps.Map, menuItem string, prefix string, query string, info *pb.FindEnabledNodeConfigInfoResponse, langCode string) []maps.Map {
return menuItems
}

View File

@@ -6,6 +6,7 @@ import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/logs"
@@ -290,7 +291,7 @@ func (this *NodesAction) RunGet(params struct {
groupMaps = append([]maps.Map{
{
"id": -1,
"name": "[未分组](" + types.String(countUngroupNodes) + ")",
"name": "[" + this.Lang(codes.AdminNodeUngroupedLabel)+ "](" + types.String(countUngroupNodes) + ")",
"countNodes": countUngroupNodes,
},
}, groupMaps...)

View File

@@ -21,7 +21,7 @@ func (this *UpgradeRemoteAction) Init() {
func (this *UpgradeRemoteAction) RunGet(params struct {
ClusterId int64
}) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "upgrade")
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "upgrade", this.LangCode())
nodes := []maps.Map{}
resp, err := this.RPC().NodeRPC().FindAllUpgradeNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllUpgradeNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId})

View File

@@ -4,13 +4,14 @@ import (
"context"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
"strconv"
)
// LeftMenuItemsForInstall 安装升级相关的左侧菜单
func LeftMenuItemsForInstall(ctx context.Context, clusterId int64, selectedItem string) []maps.Map {
func LeftMenuItemsForInstall(ctx context.Context, clusterId int64, selectedItem string, langCode string) []maps.Map {
rpcClient, _ := rpc.SharedRPC()
countNotInstalled := int64(0)
countUpgrade := int64(0)
@@ -31,22 +32,22 @@ func LeftMenuItemsForInstall(ctx context.Context, clusterId int64, selectedItem
return []maps.Map{
{
"name": "手动安装",
"name": langs.Message(langCode, codes.AdminNodeMenuInstallManually),
"url": "/clusters/cluster/installManual?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "manual",
},
{
"name": "自动注册",
"name": langs.Message(langCode, codes.AdminNodeMenuInstallAutoRegister),
"url": "/clusters/cluster/installNodes?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "register",
},
{
"name": "远程安装(" + strconv.FormatInt(countNotInstalled, 10) + ")",
"name": langs.Message(langCode, codes.AdminNodeMenuInstallRemote, countNotInstalled),
"url": "/clusters/cluster/installRemote?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "install",
},
{
"name": "远程升级(" + strconv.FormatInt(countUpgrade, 10) + ")",
"name": langs.Message(langCode, codes.AdminNodeMenuInstallRemoteUpgrade, countUpgrade),
"url": "/clusters/cluster/upgradeRemote?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "upgrade",
},

View File

@@ -4,6 +4,8 @@ import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
@@ -15,6 +17,7 @@ import (
// ClusterHelper 单个集群的帮助
type ClusterHelper struct {
helpers.LangHelper
}
func NewClusterHelper() *ClusterHelper {
@@ -79,21 +82,21 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext
}
if teaconst.IsPlus {
{
var item = tabbar.Add("集群看板", "", "/clusters/cluster/boards?clusterId="+clusterIdString, "chart line area", selectedTabbar == "board")
var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterDashboard), "", "/clusters/cluster/boards?clusterId="+clusterIdString, "chart line area", selectedTabbar == "board")
item.IsDisabled = !isInCluster
}
}
{
var item = tabbar.Add("节点列表", "", "/clusters/cluster/nodes?clusterId="+clusterIdString, "server", selectedTabbar == "node")
var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterNodes), "", "/clusters/cluster/nodes?clusterId="+clusterIdString, "server", selectedTabbar == "node")
item.IsDisabled = !isInCluster
}
{
var item = tabbar.Add("集群设置", "", "/clusters/cluster/settings?clusterId="+clusterIdString, "setting", selectedTabbar == "setting")
var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterSettings), "", "/clusters/cluster/settings?clusterId="+clusterIdString, "setting", selectedTabbar == "setting")
item.IsDisabled = !isInCluster
}
{
var item = tabbar.Add("删除集群", "", "/clusters/cluster/delete?clusterId="+clusterIdString, "trash", selectedTabbar == "delete")
var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterDelete), "", "/clusters/cluster/delete?clusterId="+clusterIdString, "trash", selectedTabbar == "delete")
item.IsDisabled = !isInCluster
}
actionutils.SetTabbar(action, tabbar)
@@ -102,7 +105,7 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext
var secondMenuItem = action.Data.GetString("secondMenuItem")
switch selectedTabbar {
case "setting":
var menuItems = this.createSettingMenu(cluster, clusterInfo, secondMenuItem)
var menuItems = this.createSettingMenu(cluster, clusterInfo, secondMenuItem, actionPtr)
action.Data["leftMenuItems"] = menuItems
// 当前菜单
@@ -120,23 +123,23 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext
}
// 设置菜单
func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.FindEnabledNodeClusterConfigInfoResponse, selectedItem string) (items []maps.Map) {
func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.FindEnabledNodeClusterConfigInfoResponse, selectedItem string, actionPtr actions.ActionWrapper) (items []maps.Map) {
clusterId := numberutils.FormatInt64(cluster.Id)
items = append(items, maps.Map{
"name": "基础设置",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingBasic),
"url": "/clusters/cluster/settings?clusterId=" + clusterId,
"isActive": selectedItem == "basic",
"isOn": true,
})
items = append(items, maps.Map{
"name": "DNS设置",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingDNS),
"url": "/clusters/cluster/settings/dns?clusterId=" + clusterId,
"isActive": selectedItem == "dns",
"isOn": cluster.DnsDomainId > 0 || len(cluster.DnsName) > 0,
})
items = append(items, maps.Map{
"name": "健康检查",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingHealthCheck),
"url": "/clusters/cluster/settings/health?clusterId=" + clusterId,
"isActive": selectedItem == "health",
"isOn": info != nil && info.HealthCheckIsOn,
@@ -147,43 +150,43 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.F
})
items = append(items, maps.Map{
"name": "网站设置",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingServiceGlobal),
"url": "/clusters/cluster/settings/global-server-config?clusterId=" + clusterId,
"isActive": selectedItem == "globalServerConfig",
"isOn": true,
})
items = append(items, maps.Map{
"name": "缓存策略",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingCachePolicy),
"url": "/clusters/cluster/settings/cache?clusterId=" + clusterId,
"isActive": selectedItem == "cache",
"isOn": cluster.HttpCachePolicyId > 0,
})
items = append(items, maps.Map{
"name": "WAF策略",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingWAFPolicy),
"url": "/clusters/cluster/settings/waf?clusterId=" + clusterId,
"isActive": selectedItem == "waf",
"isOn": cluster.HttpFirewallPolicyId > 0,
})
items = append(items, maps.Map{
"name": "WAF动作",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingWAFActions),
"url": "/clusters/cluster/settings/firewall-actions?clusterId=" + clusterId,
"isActive": selectedItem == "firewallAction",
"isOn": info != nil && info.HasFirewallActions,
})
items = append(items, maps.Map{
"name": "WebP",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingWebP),
"url": "/clusters/cluster/settings/webp?clusterId=" + clusterId,
"isActive": selectedItem == "webp",
"isOn": info != nil && info.WebpIsOn,
})
items = filterMenuItems1(items, info, clusterId, selectedItem)
items = this.filterMenuItems1(items, info, clusterId, selectedItem, actionPtr)
items = append(items, maps.Map{
"name": "统计指标",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingMetrics),
"url": "/clusters/cluster/settings/metrics?clusterId=" + clusterId,
"isActive": selectedItem == "metric",
"isOn": info != nil && info.HasMetricItems,
@@ -196,13 +199,13 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.F
})
items = append(items, maps.Map{
"name": "DDoS防护",
"name": this.Lang(actionPtr, codes.AdminClusterMenuSettingDDoSProtection),
"url": "/clusters/cluster/settings/ddos-protection?clusterId=" + clusterId,
"isActive": selectedItem == "ddosProtection",
"isOn": info != nil && info.HasDDoSProtection,
})
items = filterMenuItems2(items, info, clusterId, selectedItem)
items = this.filterMenuItems2(items, info, clusterId, selectedItem, actionPtr)
return
}

View File

@@ -5,13 +5,14 @@ package clusterutils
import (
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
func filterMenuItems1(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string) []maps.Map {
func (this *ClusterHelper) filterMenuItems1(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string, actionPtr actions.ActionWrapper) []maps.Map {
return items
}
func filterMenuItems2(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string) []maps.Map {
func (this *ClusterHelper) filterMenuItems2(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string, actionPtr actions.ActionWrapper) []maps.Map {
return items
}

View File

@@ -39,7 +39,7 @@ func (this *IndexAction) RunGet(params struct{}) {
module, ok := configloaders.FindFirstAdminModule(this.AdminId())
if ok {
if module != "dashboard" {
for _, m := range configloaders.AllModuleMaps(this.Lang()) {
for _, m := range configloaders.AllModuleMaps(this.LangCode()) {
if m.GetString("code") == module {
this.RedirectURL(m.GetString("url"))
return

View File

@@ -2,11 +2,14 @@ package db
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/actions"
"net/http"
)
type Helper struct {
helpers.LangHelper
}
func (this *Helper) BeforeAction(action *actions.ActionObject) {
@@ -18,7 +21,7 @@ func (this *Helper) BeforeAction(action *actions.ActionObject) {
selectedTabbar, _ := action.Data["mainTab"]
tabbar := actionutils.NewTabbar()
tabbar.Add("数据库节点", "", "/db", "", selectedTabbar == "db")
var tabbar = actionutils.NewTabbar()
tabbar.Add(this.Lang(action, codes.AdminDBNodeTabNodes), "", "/db", "", selectedTabbar == "db")
actionutils.SetTabbar(action, tabbar)
}

View File

@@ -5,13 +5,14 @@ package serverutils
import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
)
func filterMenuItems(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string) []maps.Map {
func (this *ServerHelper) filterMenuItems(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string, actionPtr actions.ActionWrapper) []maps.Map {
return menuItems
}
func filterMenuItems2(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string) []maps.Map {
func (this *ServerHelper) filterMenuItems2(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string, actionPtr actions.ActionWrapper) []maps.Map {
return menuItems
}

View File

@@ -6,6 +6,8 @@ import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/actions"
@@ -17,6 +19,7 @@ import (
)
type ServerHelper struct {
helpers.LangHelper
}
func NewServerHelper() *ServerHelper {
@@ -114,29 +117,29 @@ func (this *ServerHelper) createLeftMenu(action *actions.ActionObject) {
}
if teaconst.IsPlus {
tabbar.Add("看板", "", "/servers/server/boards?serverId="+serverIdString, "dashboard", selectedTabbar == "board")
tabbar.Add(this.Lang(action, codes.AdminServerTabDashboard), "", "/servers/server/boards?serverId="+serverIdString, "dashboard", selectedTabbar == "board")
}
if family == "http" {
tabbar.Add("统计", "", "/servers/server/stat?serverId="+serverIdString, "chart area", selectedTabbar == "stat")
tabbar.Add(this.Lang(action, codes.AdminServerTabStat), "", "/servers/server/stat?serverId="+serverIdString, "chart area", selectedTabbar == "stat")
}
if family == "http" {
tabbar.Add("日志", "", "/servers/server/log?serverId="+serverIdString, "history", selectedTabbar == "log")
tabbar.Add(this.Lang(action, codes.AdminServerTabAccessLogs), "", "/servers/server/log?serverId="+serverIdString, "history", selectedTabbar == "log")
}
tabbar.Add("设置", "", "/servers/server/settings?serverId="+serverIdString, "setting", selectedTabbar == "setting")
tabbar.Add("删除", "", "/servers/server/delete?serverId="+serverIdString, "trash", selectedTabbar == "delete")
tabbar.Add(this.Lang(action, codes.AdminServerTabSettings), "", "/servers/server/settings?serverId="+serverIdString, "setting", selectedTabbar == "setting")
tabbar.Add(this.Lang(action, codes.AdminServerTabDelete), "", "/servers/server/delete?serverId="+serverIdString, "trash", selectedTabbar == "delete")
actionutils.SetTabbar(action, tabbar)
// 左侧操作子菜单
switch types.String(mainTab) {
case "board":
action.Data["leftMenuItems"] = this.createBoardMenu(types.String(secondMenuItem), serverIdString, serverConfig)
action.Data["leftMenuItems"] = this.createBoardMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
case "log":
action.Data["leftMenuItems"] = this.createLogMenu(types.String(secondMenuItem), serverIdString, serverConfig)
action.Data["leftMenuItems"] = this.createLogMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
case "stat":
action.Data["leftMenuItems"] = this.createStatMenu(types.String(secondMenuItem), serverIdString, serverConfig)
action.Data["leftMenuItems"] = this.createStatMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
case "setting":
var menuItems = this.createSettingsMenu(types.String(secondMenuItem), serverIdString, serverConfig)
var menuItems = this.createSettingsMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
action.Data["leftMenuItems"] = menuItems
// 当前菜单
@@ -148,15 +151,15 @@ func (this *ServerHelper) createLeftMenu(action *actions.ActionObject) {
}
}
case "delete":
action.Data["leftMenuItems"] = this.createDeleteMenu(types.String(secondMenuItem), serverIdString, serverConfig)
action.Data["leftMenuItems"] = this.createDeleteMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
}
}
// 看板菜单
func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "看板",
"name": this.Lang(actionPtr, codes.AdminServerMenuDashboard),
"url": "/servers/server/board?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
@@ -164,20 +167,20 @@ func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString
}
// 日志菜单
func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "实时",
"name": this.Lang(actionPtr, codes.AdminServerMenuAccesslogRealtime),
"url": "/servers/server/log?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
menuItems = append(menuItems, maps.Map{
"name": "今天",
"name": this.Lang(actionPtr, codes.AdminServerMenuAccesslogToday),
"url": "/servers/server/log/today?serverId=" + serverIdString,
"isActive": secondMenuItem == "today",
})
menuItems = append(menuItems, maps.Map{
"name": "历史",
"name": this.Lang(actionPtr, codes.AdminServerMenuAccesslogHistory),
"url": "/servers/server/log/history?serverId=" + serverIdString,
"isActive": secondMenuItem == "history",
})
@@ -185,30 +188,30 @@ func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString st
}
// 统计菜单
func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
var menuItems = []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "流量统计",
"name": this.Lang(actionPtr, codes.AdminServerMenuStatTraffic),
"url": "/servers/server/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
menuItems = append(menuItems, maps.Map{
"name": "地域分布",
"name": this.Lang(actionPtr, codes.AdminServerMenuStatRegions),
"url": "/servers/server/stat/regions?serverId=" + serverIdString,
"isActive": secondMenuItem == "region",
})
menuItems = append(menuItems, maps.Map{
"name": "运营商",
"name": this.Lang(actionPtr, codes.AdminServerMenuStatProviders),
"url": "/servers/server/stat/providers?serverId=" + serverIdString,
"isActive": secondMenuItem == "provider",
})
menuItems = append(menuItems, maps.Map{
"name": "终端",
"name": this.Lang(actionPtr, codes.AdminServerMenuStatClients),
"url": "/servers/server/stat/clients?serverId=" + serverIdString,
"isActive": secondMenuItem == "client",
})
menuItems = append(menuItems, maps.Map{
"name": "WAF",
"name": this.Lang(actionPtr, codes.AdminServerMenuStatWAF),
"url": "/servers/server/stat/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf",
})
@@ -216,16 +219,16 @@ func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString s
}
// 设置菜单
func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) (items []maps.Map) {
func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) (items []maps.Map) {
var menuItems = []maps.Map{
{
"name": "基本信息",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingBasic),
"url": "/servers/server/settings?serverId=" + serverIdString,
"isActive": secondMenuItem == "basic",
"isOff": !serverConfig.IsOn,
},
{
"name": "DNS",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingDNS),
"url": "/servers/server/settings/dns?serverId=" + serverIdString,
"isActive": secondMenuItem == "dns",
},
@@ -234,34 +237,34 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
// HTTP
if serverConfig.IsHTTPFamily() {
menuItems = append(menuItems, maps.Map{
"name": "域名",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingDomains),
"url": "/servers/server/settings/serverNames?serverId=" + serverIdString,
"isActive": secondMenuItem == "serverName",
"isOn": len(serverConfig.ServerNames) > 0,
})
menuItems = append(menuItems, maps.Map{
"name": "HTTP",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingHTTP),
"url": "/servers/server/settings/http?serverId=" + serverIdString,
"isActive": secondMenuItem == "http",
"isOn": (serverConfig.HTTP != nil && serverConfig.HTTP.IsOn && len(serverConfig.HTTP.Listen) > 0) || (serverConfig.Web != nil && serverConfig.Web.RedirectToHttps != nil && serverConfig.Web.RedirectToHttps.IsOn),
"isOff": serverConfig.HTTP != nil && !serverConfig.HTTP.IsOn,
})
menuItems = append(menuItems, maps.Map{
"name": "HTTPS",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingHTTPS),
"url": "/servers/server/settings/https?serverId=" + serverIdString,
"isActive": secondMenuItem == "https",
"isOn": serverConfig.HTTPS != nil && serverConfig.HTTPS.IsOn && len(serverConfig.HTTPS.Listen) > 0,
"isOff": serverConfig.HTTPS != nil && !serverConfig.HTTPS.IsOn,
})
menuItems = append(menuItems, maps.Map{
"name": "源站",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingOrigins),
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
"configCode": serverconfigs.ConfigCodeReverseProxy,
})
menuItems = filterMenuItems(serverConfig, menuItems, serverIdString, secondMenuItem)
menuItems = this.filterMenuItems(serverConfig, menuItems, serverIdString, secondMenuItem, actionPtr)
menuItems = append(menuItems, maps.Map{
"name": "-",
@@ -269,108 +272,108 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
"isActive": false,
})
menuItems = append(menuItems, maps.Map{
"name": "URL跳转",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingRedirects),
"url": "/servers/server/settings/redirects?serverId=" + serverIdString,
"isActive": secondMenuItem == "redirects",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.HostRedirects) > 0,
"configCode": serverconfigs.ConfigCodeHostRedirects,
})
menuItems = append(menuItems, maps.Map{
"name": "路由规则",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingLocations),
"url": "/servers/server/settings/locations?serverId=" + serverIdString,
"isActive": secondMenuItem == "locations",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.Locations) > 0,
})
menuItems = append(menuItems, maps.Map{
"name": "重写规则",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingRewriteRules),
"url": "/servers/server/settings/rewrite?serverId=" + serverIdString,
"isActive": secondMenuItem == "rewrite",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.RewriteRefs) > 0,
})
menuItems = append(menuItems, maps.Map{
"name": "WAF",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingWAF),
"url": "/servers/server/settings/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf",
"isOn": serverConfig.Web != nil && serverConfig.Web.FirewallRef != nil && serverConfig.Web.FirewallRef.IsOn,
})
menuItems = append(menuItems, maps.Map{
"name": "缓存",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingCache),
"url": "/servers/server/settings/cache?serverId=" + serverIdString,
"isActive": secondMenuItem == "cache",
"isOn": serverConfig.Web != nil && serverConfig.Web.Cache != nil && serverConfig.Web.Cache.IsOn,
"configCode": serverconfigs.ConfigCodeCache,
})
menuItems = append(menuItems, maps.Map{
"name": "访问鉴权",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingAuth),
"url": "/servers/server/settings/access?serverId=" + serverIdString,
"isActive": secondMenuItem == "access",
"isOn": serverConfig.Web != nil && serverConfig.Web.Auth != nil && serverConfig.Web.Auth.IsOn,
"configCode": serverconfigs.ConfigCodeAuth,
})
menuItems = append(menuItems, maps.Map{
"name": "防盗链",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingReferers),
"url": "/servers/server/settings/referers?serverId=" + serverIdString,
"isActive": secondMenuItem == "referer",
"isOn": serverConfig.Web != nil && serverConfig.Web.Referers != nil && serverConfig.Web.Referers.IsOn,
"configCode": serverconfigs.ConfigCodeReferers,
})
menuItems = append(menuItems, maps.Map{
"name": "UA名单",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingUserAgents),
"url": "/servers/server/settings/userAgent?serverId=" + serverIdString,
"isActive": secondMenuItem == "userAgent",
"isOn": serverConfig.Web != nil && serverConfig.Web.UserAgent != nil && serverConfig.Web.UserAgent.IsOn,
"configCode": serverconfigs.ConfigCodeUserAgent,
})
menuItems = append(menuItems, maps.Map{
"name": "字符编码",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingCharset),
"url": "/servers/server/settings/charset?serverId=" + serverIdString,
"isActive": secondMenuItem == "charset",
"isOn": serverConfig.Web != nil && serverConfig.Web.Charset != nil && serverConfig.Web.Charset.IsOn,
"configCode": serverconfigs.ConfigCodeCharset,
})
menuItems = append(menuItems, maps.Map{
"name": "访问日志",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingAccessLog),
"url": "/servers/server/settings/accessLog?serverId=" + serverIdString,
"isActive": secondMenuItem == "accessLog",
"isOn": serverConfig.Web != nil && serverConfig.Web.AccessLogRef != nil && serverConfig.Web.AccessLogRef.IsOn,
"configCode": serverconfigs.ConfigCodeAccessLog,
})
menuItems = append(menuItems, maps.Map{
"name": "统计",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingStat),
"url": "/servers/server/settings/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "stat",
"isOn": serverConfig.Web != nil && serverConfig.Web.StatRef != nil && serverConfig.Web.StatRef.IsOn,
"configCode": serverconfigs.ConfigCodeStat,
})
menuItems = append(menuItems, maps.Map{
"name": "内容压缩",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingCompress),
"url": "/servers/server/settings/compression?serverId=" + serverIdString,
"isActive": secondMenuItem == "compression",
"isOn": serverConfig.Web != nil && serverConfig.Web.Compression != nil && serverConfig.Web.Compression.IsOn,
"configCode": serverconfigs.ConfigCodeCompression,
})
menuItems = append(menuItems, maps.Map{
"name": "自定义页面",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingPages),
"url": "/servers/server/settings/pages?serverId=" + serverIdString,
"isActive": secondMenuItem == "pages",
"isOn": serverConfig.Web != nil && (len(serverConfig.Web.Pages) > 0 || (serverConfig.Web.Shutdown != nil && serverConfig.Web.Shutdown.IsOn)),
"configCode": serverconfigs.ConfigCodePages,
})
menuItems = append(menuItems, maps.Map{
"name": "HTTP Header",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingHTTPHeaders),
"url": "/servers/server/settings/headers?serverId=" + serverIdString,
"isActive": secondMenuItem == "header",
"isOn": this.hasHTTPHeaders(serverConfig.Web),
})
menuItems = append(menuItems, maps.Map{
"name": "Websocket",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingWebsocket),
"url": "/servers/server/settings/websocket?serverId=" + serverIdString,
"isActive": secondMenuItem == "websocket",
"isOn": serverConfig.Web != nil && serverConfig.Web.WebsocketRef != nil && serverConfig.Web.WebsocketRef.IsOn,
"configCode": serverconfigs.ConfigCodeWebsocket,
})
menuItems = append(menuItems, maps.Map{
"name": "WebP",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingWebP),
"url": "/servers/server/settings/webp?serverId=" + serverIdString,
"isActive": secondMenuItem == "webp",
"isOn": serverConfig.Web != nil && serverConfig.Web.WebP != nil && serverConfig.Web.WebP.IsOn,
@@ -378,14 +381,14 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
})
menuItems = append(menuItems, maps.Map{
"name": "静态分发",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingRoot),
"url": "/servers/server/settings/web?serverId=" + serverIdString,
"isActive": secondMenuItem == "web",
"isOn": serverConfig.Web != nil && serverConfig.Web.Root != nil && serverConfig.Web.Root.IsOn,
"configCode": serverconfigs.ConfigCodeRoot,
})
menuItems = append(menuItems, maps.Map{
"name": "Fastcgi",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingFastcgi),
"url": "/servers/server/settings/fastcgi?serverId=" + serverIdString,
"isActive": secondMenuItem == "fastcgi",
"isOn": serverConfig.Web != nil && serverConfig.Web.FastcgiRef != nil && serverConfig.Web.FastcgiRef.IsOn,
@@ -398,7 +401,7 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
})
menuItems = append(menuItems, maps.Map{
"name": "访客IP地址",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingClientIP),
"url": "/servers/server/settings/remoteAddr?serverId=" + serverIdString,
"isActive": secondMenuItem == "remoteAddr",
"isOn": serverConfig.Web != nil && serverConfig.Web.RemoteAddr != nil && serverConfig.Web.RemoteAddr.IsOn,
@@ -406,14 +409,14 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
})
menuItems = append(menuItems, maps.Map{
"name": "请求限制",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingRequestLimit),
"url": "/servers/server/settings/requestLimit?serverId=" + serverIdString,
"isActive": secondMenuItem == "requestLimit",
"isOn": serverConfig.Web != nil && serverConfig.Web.RequestLimit != nil && serverConfig.Web.RequestLimit.IsOn,
"configCode": serverconfigs.ConfigCodeRequestLimit,
})
menuItems = filterMenuItems2(serverConfig, menuItems, serverIdString, secondMenuItem)
menuItems = this.filterMenuItems2(serverConfig, menuItems, serverIdString, secondMenuItem, actionPtr)
menuItems = append(menuItems, maps.Map{
"name": "-",
@@ -422,46 +425,46 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
})
menuItems = append(menuItems, maps.Map{
"name": "其他设置",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingOthers),
"url": "/servers/server/settings/common?serverId=" + serverIdString,
"isActive": secondMenuItem == "common",
"isOn": serverConfig.Web != nil && serverConfig.Web.MergeSlashes,
})
} else if serverConfig.IsTCPFamily() {
menuItems = append(menuItems, maps.Map{
"name": "TCP",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingTCP),
"url": "/servers/server/settings/tcp?serverId=" + serverIdString,
"isActive": secondMenuItem == "tcp",
"isOn": serverConfig.TCP != nil && serverConfig.TCP.IsOn && len(serverConfig.TCP.Listen) > 0,
})
menuItems = append(menuItems, maps.Map{
"name": "TLS",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingTLS),
"url": "/servers/server/settings/tls?serverId=" + serverIdString,
"isActive": secondMenuItem == "tls",
"isOn": serverConfig.TLS != nil && serverConfig.TLS.IsOn && len(serverConfig.TLS.Listen) > 0,
})
menuItems = append(menuItems, maps.Map{
"name": "源站",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingOrigins),
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
})
} else if serverConfig.IsUnixFamily() {
menuItems = append(menuItems, maps.Map{
"name": "Unix",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingUnix),
"url": "/servers/server/settings/unix?serverId=" + serverIdString,
"isActive": secondMenuItem == "unix",
"isOn": serverConfig.Unix != nil && serverConfig.Unix.IsOn && len(serverConfig.Unix.Listen) > 0,
})
} else if serverConfig.IsUDPFamily() {
menuItems = append(menuItems, maps.Map{
"name": "UDP",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingUDP),
"url": "/servers/server/settings/udp?serverId=" + serverIdString,
"isActive": secondMenuItem == "udp",
"isOn": serverConfig.UDP != nil && serverConfig.UDP.IsOn && len(serverConfig.UDP.Listen) > 0,
})
menuItems = append(menuItems, maps.Map{
"name": "源站",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingOrigins),
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
@@ -472,10 +475,10 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
}
// 删除菜单
func (this *ServerHelper) createDeleteMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
func (this *ServerHelper) createDeleteMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "删除",
"name": this.Lang(actionPtr, codes.AdminServerMenuSettingDelete),
"url": "/servers/server/delete?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})

View File

@@ -5,10 +5,14 @@ package settingutils
import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/actions"
)
type AdvancedHelper struct {
helpers.LangHelper
tab string
}
@@ -32,12 +36,12 @@ func (this *AdvancedHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNex
var session = action.Session()
var adminId = session.GetInt64("adminId")
if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) {
tabbar.Add("数据库", "", "/settings/database", "", this.tab == "database")
tabbar.Add("API节点", "", "/settings/api", "", this.tab == "apiNodes")
tabbar.Add("日志数据库", "", "/db", "", this.tab == "dbNodes")
tabbar.Add("迁移", "", "/settings/transfer", "", this.tab == "transfer")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabTransfer), "", "/settings/database", "", this.tab == "database")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAPINodes), "", "/settings/api", "", this.tab == "apiNodes")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAccessLogDatabases), "", "/db", "", this.tab == "dbNodes")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabTransfer), "", "/settings/transfer", "", this.tab == "transfer")
//tabbar.Add("备份", "", "/settings/backup", "", this.tab == "backup")
//tabbar.Add(codes.AdminSettingsTabBackup, "", "/settings/backup", "", this.tab == "backup")
}
actionutils.SetTabbar(actionPtr, tabbar)

View File

@@ -5,10 +5,14 @@ package settingutils
import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/actions"
)
type Helper struct {
helpers.LangHelper
tab string
}
@@ -32,13 +36,13 @@ func (this *Helper) BeforeAction(actionPtr actions.ActionWrapper) (goNext bool)
var session = action.Session()
var adminId = session.GetInt64("adminId")
if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) {
tabbar.Add("Web服务", "", "/settings/server", "", this.tab == "server")
tabbar.Add("管理界面设置", "", "/settings/ui", "", this.tab == "ui")
tabbar.Add("安全设置", "", "/settings/security", "", this.tab == "security")
tabbar.Add("检查更新", "", "/settings/updates", "", this.tab == "updates")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAdminServer), "", "/settings/server", "", this.tab == "server")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAdminUI), "", "/settings/ui", "", this.tab == "ui")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAdminSecuritySettings), "", "/settings/security", "", this.tab == "security")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabUpdates), "", "/settings/updates", "", this.tab == "updates")
}
tabbar.Add("个人资料", "", "/settings/profile", "", this.tab == "profile")
tabbar.Add("登录设置", "", "/settings/login", "", this.tab == "login")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabProfile), "", "/settings/profile", "", this.tab == "profile")
tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabLogin), "", "/settings/login", "", this.tab == "login")
actionutils.SetTabbar(actionPtr, tabbar)
return

View File

@@ -0,0 +1,20 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package helpers
import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/iwind/TeaGo/actions"
)
type LangHelper struct {
}
func (this *LangHelper) Lang(actionPtr actions.ActionWrapper, messageCode langs.MessageCode, args ...any) string {
var langCode = configloaders.FindAdminLang(actionPtr.Object().Session().GetInt64("adminId"))
if len(langCode) == 0 {
langCode = langs.ParseLangFromAction(actionPtr)
}
return langs.Message(langCode, messageCode, args...)
}

File diff suppressed because one or more lines are too long