aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web/devtest
diff options
context:
space:
mode:
Diffstat (limited to 'routers/web/devtest')
-rw-r--r--routers/web/devtest/devtest.go2
-rw-r--r--routers/web/devtest/mail_preview.go58
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")
+}