| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // 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")
- }
|