diff options
Diffstat (limited to 'routers/web/devtest')
-rw-r--r-- | routers/web/devtest/devtest.go | 2 | ||||
-rw-r--r-- | routers/web/devtest/mail_preview.go | 58 |
2 files changed, 59 insertions, 1 deletions
diff --git a/routers/web/devtest/devtest.go b/routers/web/devtest/devtest.go index 765931a730..a22d376579 100644 --- a/routers/web/devtest/devtest.go +++ b/routers/web/devtest/devtest.go @@ -132,7 +132,7 @@ func prepareMockDataBadgeActionsSvg(ctx *context.Context) { selectedStyle := ctx.FormString("style", badge.DefaultStyle) var badges []badge.Badge badges = append(badges, badge.GenerateBadge("啊啊啊啊啊啊啊啊啊啊啊啊", "🌞🌞🌞🌞🌞", "green")) - for r := rune(0); r < 256; r++ { + for r := range rune(256) { if unicode.IsPrint(r) { s := strings.Repeat(string(r), 15) badges = append(badges, badge.GenerateBadge(s, util.TruncateRunes(s, 7), "green")) diff --git a/routers/web/devtest/mail_preview.go b/routers/web/devtest/mail_preview.go new file mode 100644 index 0000000000..d6bade15d7 --- /dev/null +++ b/routers/web/devtest/mail_preview.go @@ -0,0 +1,58 @@ +// Copyright 2025 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package devtest + +import ( + "net/http" + "strings" + + "code.gitea.io/gitea/modules/templates" + "code.gitea.io/gitea/services/context" + "code.gitea.io/gitea/services/mailer" + + "gopkg.in/yaml.v3" +) + +func MailPreviewRender(ctx *context.Context) { + tmplName := ctx.PathParam("*") + mockDataContent, err := templates.AssetFS().ReadFile("mail/" + tmplName + ".devtest.yml") + mockData := map[string]any{} + if err == nil { + err = yaml.Unmarshal(mockDataContent, &mockData) + if err != nil { + http.Error(ctx.Resp, "Failed to parse mock data: "+err.Error(), http.StatusInternalServerError) + return + } + } + mockData["locale"] = ctx.Locale + err = mailer.LoadedTemplates().BodyTemplates.ExecuteTemplate(ctx.Resp, tmplName, mockData) + if err != nil { + _, _ = ctx.Resp.Write([]byte(err.Error())) + } +} + +func prepareMailPreviewRender(ctx *context.Context, tmplName string) { + tmplSubject := mailer.LoadedTemplates().SubjectTemplates.Lookup(tmplName) + if tmplSubject == nil { + ctx.Data["RenderMailSubject"] = "default subject" + } else { + var buf strings.Builder + err := tmplSubject.Execute(&buf, nil) + if err != nil { + ctx.Data["RenderMailSubject"] = err.Error() + } else { + ctx.Data["RenderMailSubject"] = buf.String() + } + } + ctx.Data["RenderMailTemplateName"] = tmplName +} + +func MailPreview(ctx *context.Context) { + ctx.Data["MailTemplateNames"] = mailer.LoadedTemplates().TemplateNames + tmplName := ctx.FormString("tmpl") + if tmplName != "" { + prepareMailPreviewRender(ctx, tmplName) + } + ctx.HTML(http.StatusOK, "devtest/mail-preview") +} |