mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-10 04:05:42 +01:00
Breaking summary for template refactoring (#29395)
https://github.com/go-gitea/gitea/pull/29395 (cherry picked from commit e71b69257c38178eed9ccd0b62a5ae47d67858d4)
This commit is contained in:
parent
fa6627fadb
commit
99b1a39aef
4 changed files with 31 additions and 31 deletions
|
@ -259,14 +259,14 @@ This template produces something along these lines:
|
||||||
The template system contains several functions that can be used to further process and format
|
The template system contains several functions that can be used to further process and format
|
||||||
the messages. Here's a list of some of them:
|
the messages. Here's a list of some of them:
|
||||||
|
|
||||||
| Name | Parameters | Available | Usage |
|
| Name | Parameters | Available | Usage |
|
||||||
| ---------------- | ----------- | --------- |-----------------------------------------------------------------------------|
|
| ---------------- | ----------- | --------- | ------------------------------------------------------------------- |
|
||||||
| `AppUrl` | - | Any | Gitea's URL |
|
| `AppUrl` | - | Any | Gitea's URL |
|
||||||
| `AppName` | - | Any | Set from `app.ini`, usually "Gitea" |
|
| `AppName` | - | Any | Set from `app.ini`, usually "Gitea" |
|
||||||
| `AppDomain` | - | Any | Gitea's host name |
|
| `AppDomain` | - | Any | Gitea's host name |
|
||||||
| `EllipsisString` | string, int | Any | Truncates a string to the specified length; adds ellipsis as needed |
|
| `EllipsisString` | string, int | Any | Truncates a string to the specified length; adds ellipsis as needed |
|
||||||
| `SanitizeHTML` | string | Body only | Sanitizes text by removing any dangerous HTML tags from it. |
|
| `SanitizeHTML` | string | Body only | Sanitizes text by removing any dangerous HTML tags from it |
|
||||||
| `SafeHTML` | string | Body only | Takes the input as HTML; can be used for `.ReviewComments.RenderedContent`. |
|
| `SafeHTML` | string | Body only | Takes the input as HTML, can be used for outputing raw HTML content |
|
||||||
|
|
||||||
These are _functions_, not metadata, so they have to be used:
|
These are _functions_, not metadata, so they have to be used:
|
||||||
|
|
||||||
|
|
|
@ -242,14 +242,14 @@ _主题_ 和 _邮件正文_ 由 [Golang的模板引擎](https://go.dev/pkg/text/
|
||||||
|
|
||||||
模板系统包含一些函数,可用于进一步处理和格式化消息。以下是其中一些函数的列表:
|
模板系统包含一些函数,可用于进一步处理和格式化消息。以下是其中一些函数的列表:
|
||||||
|
|
||||||
| 函数名 | 参数 | 可用于 | 用法 |
|
| 函数名 | 参数 | 可用于 | 用法 |
|
||||||
|------------------| ----------- | ------------ |---------------------------------------------------------|
|
|------------------| ----------- | ------------ | ------------------------------ |
|
||||||
| `AppUrl` | - | 任何地方 | Gitea 的 URL |
|
| `AppUrl` | - | 任何地方 | Gitea 的 URL |
|
||||||
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常为 "Gitea" |
|
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常为 "Gitea" |
|
||||||
| `AppDomain` | - | 任何地方 | Gitea 的主机名 |
|
| `AppDomain` | - | 任何地方 | Gitea 的主机名 |
|
||||||
| `EllipsisString` | string, int | 任何地方 | 将字符串截断为指定长度;根据需要添加省略号 |
|
| `EllipsisString` | string, int | 任何地方 | 将字符串截断为指定长度;根据需要添加省略号 |
|
||||||
| `SanitizeHTML` | string | 仅正文部分 | 通过删除其中的危险 HTML 标签对文本进行清理 |
|
| `SanitizeHTML` | string | 仅正文部分 | 通过删除其中的危险 HTML 标签对文本进行清理 |
|
||||||
| `SafeHTML` | string | 仅正文部分 | 将输入作为 HTML 处理;可用于 `.ReviewComments.RenderedContent` 等字段 |
|
| `SafeHTML` | string | 仅正文部分 | 将输入作为 HTML 处理;可用于输出原始的 HTML 内容 |
|
||||||
|
|
||||||
这些都是 _函数_,而不是元数据,因此必须按以下方式使用:
|
这些都是 _函数_,而不是元数据,因此必须按以下方式使用:
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ package templates
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -33,7 +34,7 @@ func mailSubjectTextFuncMap() texttmpl.FuncMap {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildSubjectBodyTemplate(stpl *texttmpl.Template, btpl *template.Template, name string, content []byte) {
|
func buildSubjectBodyTemplate(stpl *texttmpl.Template, btpl *template.Template, name string, content []byte) error {
|
||||||
// Split template into subject and body
|
// Split template into subject and body
|
||||||
var subjectContent []byte
|
var subjectContent []byte
|
||||||
bodyContent := content
|
bodyContent := content
|
||||||
|
@ -42,20 +43,13 @@ func buildSubjectBodyTemplate(stpl *texttmpl.Template, btpl *template.Template,
|
||||||
subjectContent = content[0:loc[0]]
|
subjectContent = content[0:loc[0]]
|
||||||
bodyContent = content[loc[1]:]
|
bodyContent = content[loc[1]:]
|
||||||
}
|
}
|
||||||
if _, err := stpl.New(name).
|
if _, err := stpl.New(name).Parse(string(subjectContent)); err != nil {
|
||||||
Parse(string(subjectContent)); err != nil {
|
return fmt.Errorf("failed to parse template [%s/subject]: %w", name, err)
|
||||||
log.Error("Failed to parse template [%s/subject]: %v", name, err)
|
|
||||||
if !setting.IsProd {
|
|
||||||
log.Fatal("Please fix the mail template error")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if _, err := btpl.New(name).
|
if _, err := btpl.New(name).Parse(string(bodyContent)); err != nil {
|
||||||
Parse(string(bodyContent)); err != nil {
|
return fmt.Errorf("failed to parse template [%s/body]: %w", name, err)
|
||||||
log.Error("Failed to parse template [%s/body]: %v", name, err)
|
|
||||||
if !setting.IsProd {
|
|
||||||
log.Fatal("Please fix the mail template error")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mailer provides the templates required for sending notification mails.
|
// Mailer provides the templates required for sending notification mails.
|
||||||
|
@ -87,7 +81,13 @@ func Mailer(ctx context.Context) (*texttmpl.Template, *template.Template) {
|
||||||
if firstRun {
|
if firstRun {
|
||||||
log.Trace("Adding mail template %s: %s by %s", tmplName, assetPath, layerName)
|
log.Trace("Adding mail template %s: %s by %s", tmplName, assetPath, layerName)
|
||||||
}
|
}
|
||||||
buildSubjectBodyTemplate(subjectTemplates, bodyTemplates, tmplName, content)
|
if err = buildSubjectBodyTemplate(subjectTemplates, bodyTemplates, tmplName, content); err != nil {
|
||||||
|
if firstRun {
|
||||||
|
log.Fatal("Failed to parse mail template, err: %v", err)
|
||||||
|
} else {
|
||||||
|
log.Error("Failed to parse mail template, err: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
{{$.locale.Tr "mail.issue.in_tree_path" .TreePath}}
|
{{$.locale.Tr "mail.issue.in_tree_path" .TreePath}}
|
||||||
<div class="review">
|
<div class="review">
|
||||||
<pre>{{.Patch}}</pre>
|
<pre>{{.Patch}}</pre>
|
||||||
<div>{{.RenderedContent | SafeHTML}}</div>
|
<div>{{.RenderedContent}}</div>
|
||||||
</div>
|
</div>
|
||||||
{{end -}}
|
{{end -}}
|
||||||
{{if eq .ActionName "push"}}
|
{{if eq .ActionName "push"}}
|
||||||
|
|
Loading…
Reference in a new issue