diff --git a/modules/setting/config.go b/modules/setting/config.go index 59f046e88d..1391c37799 100644 --- a/modules/setting/config.go +++ b/modules/setting/config.go @@ -62,10 +62,9 @@ const ( ) type InstanceNotice struct { - Enabled bool - Message string - Level string - ShowIcon bool + Enabled bool + Message string + Level string StartTime int64 EndTime int64 @@ -73,8 +72,7 @@ type InstanceNotice struct { func DefaultInstanceNotice() InstanceNotice { return InstanceNotice{ - Level: InstanceNoticeLevelInfo, - ShowIcon: true, + Level: InstanceNoticeLevelInfo, } } diff --git a/options/locale/locale_en-US.json b/options/locale/locale_en-US.json index 01be25b2fa..987794373a 100644 --- a/options/locale/locale_en-US.json +++ b/options/locale/locale_en-US.json @@ -3288,12 +3288,11 @@ "admin.config.instance_notice.level.success": "Success", "admin.config.instance_notice.level.warning": "Warning", "admin.config.instance_notice.level.danger": "Danger", - "admin.config.instance_notice.show_icon": "Show icon", + "admin.config.instance_notice.message_too_long": "Message must be at most %d characters.", "admin.config.instance_notice.start_time": "Start time", "admin.config.instance_notice.end_time": "End time", "admin.config.instance_notice.invalid_time": "Invalid date-time value. Use the picker format.", "admin.config.instance_notice.invalid_time_range": "End time must be after start time.", - "admin.config.instance_notice.markdown_hint": "This banner is informational only and does not block access.", "admin.config.instance_notice.preview": "Preview", "admin.config.instance_notice.save": "Save banner", "admin.config.instance_notice.save_success": "Instance banner settings updated.", diff --git a/routers/common/pagetmpl.go b/routers/common/pagetmpl.go index b5a12a5334..c14d4f851e 100644 --- a/routers/common/pagetmpl.go +++ b/routers/common/pagetmpl.go @@ -80,18 +80,17 @@ type pageGlobalDataType struct { type InstanceNoticeBannerTmplInfo struct { Message string Level string - ShowIcon bool IconName string } func instanceNoticeIconName(level string) string { switch level { case setting.InstanceNoticeLevelSuccess: - return "octicon-check-circle" + return "octicon-check" case setting.InstanceNoticeLevelWarning: return "octicon-alert" case setting.InstanceNoticeLevelDanger: - return "octicon-stop" + return "octicon-alert" default: return "octicon-info" } @@ -105,7 +104,6 @@ func getInstanceNoticeBanner(ctx *context.Context) *InstanceNoticeBannerTmplInfo return &InstanceNoticeBannerTmplInfo{ Message: notice.Message, Level: notice.Level, - ShowIcon: notice.ShowIcon, IconName: instanceNoticeIconName(notice.Level), } } diff --git a/routers/web/admin/config.go b/routers/web/admin/config.go index cc9e04a670..b81af78ae6 100644 --- a/routers/web/admin/config.go +++ b/routers/web/admin/config.go @@ -10,6 +10,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" system_model "code.gitea.io/gitea/models/system" "code.gitea.io/gitea/modules/cache" @@ -29,6 +30,8 @@ import ( const ( tplConfig templates.TplName = "admin/config" tplConfigSettings templates.TplName = "admin/config_settings/config_settings" + + instanceNoticeMessageMaxLength = 2000 ) // SendTestMail send test mail to confirm mail service is OK @@ -148,6 +151,7 @@ func Config(ctx *context.Context) { ctx.Data["Webhook"] = setting.Webhook instanceNotice := setting.GetInstanceNotice(ctx) ctx.Data["InstanceNotice"] = instanceNotice + ctx.Data["InstanceNoticeMessageMaxLength"] = instanceNoticeMessageMaxLength if instanceNotice.StartTime > 0 { ctx.Data["InstanceNoticeStartTime"] = time.Unix(instanceNotice.StartTime, 0).In(setting.DefaultUILocation).Format("2006-01-02T15:04") } @@ -237,7 +241,6 @@ func SetInstanceNotice(ctx *context.Context) { enabled := ctx.FormBool("enabled") message := strings.TrimSpace(ctx.FormString("message")) level := strings.TrimSpace(ctx.FormString("level")) - showIcon := ctx.FormBool("show_icon") startTime, err := parseDatetimeLocalValue(strings.TrimSpace(ctx.FormString("start_time"))) if err != nil { ctx.Flash.Error(ctx.Tr("admin.config.instance_notice.invalid_time")) @@ -258,6 +261,11 @@ func SetInstanceNotice(ctx *context.Context) { ctx.Redirect(setting.AppSubURL + "/-/admin/config#instance-notice") return } + if utf8.RuneCountInString(message) > instanceNoticeMessageMaxLength { + ctx.Flash.Error(ctx.Tr("admin.config.instance_notice.message_too_long", instanceNoticeMessageMaxLength)) + ctx.Redirect(setting.AppSubURL + "/-/admin/config#instance-notice") + return + } if startTime > 0 && endTime > 0 && endTime < startTime { ctx.Flash.Error(ctx.Tr("admin.config.instance_notice.invalid_time_range")) ctx.Redirect(setting.AppSubURL + "/-/admin/config#instance-notice") @@ -268,7 +276,6 @@ func SetInstanceNotice(ctx *context.Context) { Enabled: enabled, Message: message, Level: level, - ShowIcon: showIcon, StartTime: startTime, EndTime: endTime, } diff --git a/templates/admin/config.tmpl b/templates/admin/config.tmpl index 940b7ec65f..8e78bcc887 100644 --- a/templates/admin/config.tmpl +++ b/templates/admin/config.tmpl @@ -279,10 +279,10 @@ -
{{ctx.Locale.Tr "admin.config.instance_notice.markdown_hint"}}
-