diff --git a/core/init/migration/helper/menu.go b/core/init/migration/helper/menu.go index c662be653..af16f778a 100644 --- a/core/init/migration/helper/menu.go +++ b/core/init/migration/helper/menu.go @@ -94,3 +94,19 @@ func AddMenu(newMenu dto.ShowMenu, parentMenuID string, tx *gorm.DB) error { } return tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Update("value", string(updatedJSON)).Error } + +func RemoveMenuByID(menus []dto.ShowMenu, id string) []dto.ShowMenu { + var result []dto.ShowMenu + for _, menu := range menus { + if menu.ID == id { + continue + } + + if len(menu.Children) > 0 { + menu.Children = RemoveMenuByID(menu.Children, id) + } + + result = append(result, menu) + } + return result +} diff --git a/core/init/migration/migrate.go b/core/init/migration/migrate.go index 7359c1ee7..007bc9c6e 100644 --- a/core/init/migration/migrate.go +++ b/core/init/migration/migrate.go @@ -21,6 +21,7 @@ func Init() { migrations.UpdateXpackHideMenu, migrations.UpdateOnedrive, migrations.AddClusterMenu, + migrations.DeleteXpackHideMenu, }) 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 508dec81e..1b2efa6b8 100644 --- a/core/init/migration/migrations/init.go +++ b/core/init/migration/migrations/init.go @@ -503,3 +503,31 @@ var AddClusterMenu = &gormigrate.Migration{ }, "11", tx) }, } + +var DeleteXpackHideMenu = &gormigrate.Migration{ + ID: "20250718-delete-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 + } + if menuJSON == "" { + menuJSON = helper.LoadMenus() + } + 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 + } + menus = helper.RemoveMenuByID(menus, "116") + 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 + }, +} diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 36ced3834..81a7953b9 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -3660,10 +3660,9 @@ const message = { senderHelper: 'Email address used to send messages', passwordHelper: 'Authorization code for the email service', hostHelper: 'SMTP server address, e.g., smtp.qq.com', - portHelper: 'SSL usually uses 465, TLS usually uses 587, no encryption usually uses 25', + portHelper: 'SSL usually uses 465, TLS usually uses 587', sslHelper: 'If the SMTP port is 465, SSL is usually required', tlsHelper: 'If the SMTP port is 587, TLS is usually required', - none: 'None', }, theme: { lingXiaGold: 'Ling Xia Gold', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 0cd7cd1e7..b8f6bce7f 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -3524,10 +3524,9 @@ const message = { senderHelper: 'メール送信に使用するメールアドレス', passwordHelper: 'メールサービスの認証コード', hostHelper: 'SMTP サーバーアドレス(例:smtp.qq.com)', - portHelper: 'SSLは通常465、TLSは通常587、暗号化なしは通常25', + portHelper: 'SSLは通常465、TLSは通常587', sslHelper: 'SMTPポートが465の場合、通常はSSLが必要です', tlsHelper: 'SMTPポートが587の場合、通常はTLSが必要です', - none: 'なし', }, theme: { lingXiaGold: '凌霞金', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 0659abd15..841f68892 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -3462,10 +3462,9 @@ const message = { senderHelper: '이메일 발송에 사용되는 주소', passwordHelper: '메일 서비스의 인증 코드', hostHelper: 'SMTP 서버 주소, 예: smtp.qq.com', - portHelper: 'SSL 은 일반적으로 465, TLS 는 587, 암호화 없음은 일반적으로 25', + portHelper: 'SSL 은 일반적으로 465, TLS 는 587', sslHelper: 'SMTP 포트가 465 이면 일반적으로 SSL 이 필요합니다', tlsHelper: 'SMTP 포트가 587 이면 일반적으로 TLS 가 필요합니다', - none: '없음', }, theme: { lingXiaGold: '링샤 골드', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index e7710de15..d8286da0c 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -3605,10 +3605,9 @@ const message = { senderHelper: 'Alamat e-mel yang digunakan untuk menghantar e-mel', passwordHelper: 'Kod kebenaran untuk perkhidmatan e-mel', hostHelper: 'Alamat pelayan SMTP, contoh: smtp.qq.com', - portHelper: 'SSL biasanya 465, TLS biasanya 587, tanpa penyulitan biasanya 25', + portHelper: 'SSL biasanya 465, TLS biasanya 587', sslHelper: 'Jika port SMTP ialah 465, SSL biasanya diperlukan', tlsHelper: 'Jika port SMTP ialah 587, TLS biasanya diperlukan', - none: 'Tiada', }, theme: { lingXiaGold: 'Ling Xia Emas', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index d13bba883..d6ccd756c 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -3612,10 +3612,9 @@ const message = { senderHelper: 'Endereço de e-mail usado para envio', passwordHelper: 'Código de autorização do serviço de e-mail', hostHelper: 'Endereço do servidor SMTP, ex: smtp.qq.com', - portHelper: 'SSL geralmente usa 465, TLS geralmente usa 587, sem criptografia usa 25', + portHelper: 'SSL geralmente usa 465, TLS geralmente usa 587', sslHelper: 'Se a porta SMTP for 465, normalmente é necessário SSL', tlsHelper: 'Se a porta SMTP for 587, normalmente é necessário TLS', - none: 'Nenhum', }, theme: { lingXiaGold: 'Ling Xia Gold', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 76191af7f..b09fc713a 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -3603,10 +3603,9 @@ const message = { senderHelper: 'Адрес электронной почты для отправки сообщений', passwordHelper: 'Код авторизации почтового сервиса', hostHelper: 'Адрес SMTP-сервера, например: smtp.qq.com', - portHelper: 'SSL обычно использует 465, TLS — 587, без шифрования — 25', + portHelper: 'SSL обычно использует 465, TLS — 587', sslHelper: 'Если порт SMTP — 465, обычно требуется SSL', tlsHelper: 'Если порт SMTP — 587, обычно требуется TLS', - none: 'Нет', }, theme: { lingXiaGold: 'Лин Ся Золотой', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 2dcc3cab9..3d8c9bc69 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -3701,10 +3701,9 @@ const message = { senderHelper: 'E-posta göndermek için kullanılan adres', passwordHelper: 'E-posta servisinin yetkilendirme kodu', hostHelper: 'SMTP sunucu adresi, örneğin: smtp.qq.com', - portHelper: 'SSL genellikle 465, TLS genellikle 587, şifreleme yoksa genellikle 25', + portHelper: 'SSL genellikle 465, TLS genellikle 587', sslHelper: 'SMTP portu 465 ise genellikle SSL gerekir', tlsHelper: 'SMTP portu 587 ise genellikle TLS gerekir', - none: 'Yok', }, theme: { lingXiaGold: 'Ling Xia Altın', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 734aa28af..3755d408b 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -3406,10 +3406,9 @@ const message = { senderHelper: '用於發送郵件的電子信箱地址', passwordHelper: '郵件服務的授權碼', hostHelper: 'SMTP 伺服器地址,例如:smtp.qq.com', - portHelper: 'SSL 通常為 465,TLS 通常為 587,無加密則通常為 25', + portHelper: 'SSL 通常為 465,TLS 通常為 587', sslHelper: '若 SMTP 連接埠為 465,通常需要啟用 SSL', tlsHelper: '若 SMTP 連接埠為 587,通常需要啟用 TLS', - none: '無', }, theme: { lingXiaGold: '凌霞金', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index cbacac4b1..e96f9a2c5 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -3376,10 +3376,9 @@ const message = { senderHelper: '用于发送邮件的邮箱地址', passwordHelper: '邮件服务的授权码', hostHelper: 'SMTP 服务器地址,例如: smtp.qq.com', - portHelper: 'SSL 通常为465,TLS 通常为587,无加密方式通常为25', + portHelper: 'SSL 通常为465,TLS 通常为587', sslHelper: '如果 SMTP 端口是 465,通常需要启用 SSL', tlsHelper: '如果 SMTP 端口是 587,通常需要启用 TLS', - none: '无', }, theme: { lingXiaGold: '凌霞金', diff --git a/frontend/src/views/setting/alert/setting/email/index.vue b/frontend/src/views/setting/alert/setting/email/index.vue index 8f384f47d..8c9721557 100644 --- a/frontend/src/views/setting/alert/setting/email/index.vue +++ b/frontend/src/views/setting/alert/setting/email/index.vue @@ -17,41 +17,53 @@ - + {{ $t('xpack.alert.senderHelper') }} - + {{ $t('xpack.alert.passwordHelper') }} - + {{ $t('xpack.alert.hostHelper') }} - + {{ $t('xpack.alert.portHelper') }} - - - - - +
+ SSL + +
- {{ - form.config.encryption == 'SSL' - ? $t('xpack.alert.sslHelper') - : $t('xpack.alert.tlsHelper') - }} + {{ $t('xpack.alert.sslHelper') }} + +
+ TLS + +
+ + {{ $t('xpack.alert.tlsHelper') }}
@@ -118,7 +130,7 @@ const form = reactive({ host: '', port: 465, encryption: 'NONE', - status: '', + status: 'Enable', recipient: '', }, }); diff --git a/frontend/src/views/setting/alert/setting/index.vue b/frontend/src/views/setting/alert/setting/index.vue index 1e5c2a405..c82b6afea 100644 --- a/frontend/src/views/setting/alert/setting/index.vue +++ b/frontend/src/views/setting/alert/setting/index.vue @@ -73,24 +73,32 @@
{{ $t('xpack.alert.emailConfigHelper') }}