mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-22 07:18:31 -04:00
Fix issue link rendering in commit messages (#2897)
* Fix issue link rendering in commit messages * Update page.tmpl * No links for parens * remove comment
This commit is contained in:
parent
47f40ccd5e
commit
5481be0ac5
7 changed files with 126 additions and 52 deletions
|
@ -110,7 +110,8 @@ func NewFuncMap() []template.FuncMap {
|
|||
"EscapePound": func(str string) string {
|
||||
return strings.NewReplacer("%", "%25", "#", "%23", " ", "%20", "?", "%3F").Replace(str)
|
||||
},
|
||||
"RenderCommitMessage": RenderCommitMessage,
|
||||
"RenderCommitMessage": RenderCommitMessage,
|
||||
"RenderCommitMessageLink": RenderCommitMessageLink,
|
||||
"ThemeColorMetaTag": func() string {
|
||||
return setting.UI.ThemeColorMetaTag
|
||||
},
|
||||
|
@ -252,28 +253,31 @@ func ReplaceLeft(s, old, new string) string {
|
|||
}
|
||||
|
||||
// RenderCommitMessage renders commit message with XSS-safe and special links.
|
||||
func RenderCommitMessage(full bool, msg, urlPrefix string, metas map[string]string) template.HTML {
|
||||
func RenderCommitMessage(msg, urlPrefix string, metas map[string]string) template.HTML {
|
||||
return renderCommitMessage(msg, markup.RenderIssueIndexPatternOptions{
|
||||
URLPrefix: urlPrefix,
|
||||
Metas: metas,
|
||||
})
|
||||
}
|
||||
|
||||
// RenderCommitMessageLink renders commit message as a XXS-safe link to the provided
|
||||
// default url, handling for special links.
|
||||
func RenderCommitMessageLink(msg, urlPrefix string, urlDefault string, metas map[string]string) template.HTML {
|
||||
return renderCommitMessage(msg, markup.RenderIssueIndexPatternOptions{
|
||||
DefaultURL: urlDefault,
|
||||
URLPrefix: urlPrefix,
|
||||
Metas: metas,
|
||||
})
|
||||
}
|
||||
|
||||
func renderCommitMessage(msg string, opts markup.RenderIssueIndexPatternOptions) template.HTML {
|
||||
cleanMsg := template.HTMLEscapeString(msg)
|
||||
fullMessage := string(markup.RenderIssueIndexPattern([]byte(cleanMsg), urlPrefix, metas))
|
||||
fullMessage := string(markup.RenderIssueIndexPattern([]byte(cleanMsg), opts))
|
||||
msgLines := strings.Split(strings.TrimSpace(fullMessage), "\n")
|
||||
numLines := len(msgLines)
|
||||
if numLines == 0 {
|
||||
if len(msgLines) == 0 {
|
||||
return template.HTML("")
|
||||
} else if !full {
|
||||
return template.HTML(msgLines[0])
|
||||
} else if numLines == 1 || (numLines >= 2 && len(msgLines[1]) == 0) {
|
||||
// First line is a header, standalone or followed by empty line
|
||||
header := fmt.Sprintf("<h3>%s</h3>", msgLines[0])
|
||||
if numLines >= 2 {
|
||||
fullMessage = header + fmt.Sprintf("\n<pre>%s</pre>", strings.Join(msgLines[2:], "\n"))
|
||||
} else {
|
||||
fullMessage = header
|
||||
}
|
||||
} else {
|
||||
// Non-standard git message, there is no header line
|
||||
fullMessage = fmt.Sprintf("<h4>%s</h4>", strings.Join(msgLines, "<br>"))
|
||||
}
|
||||
return template.HTML(fullMessage)
|
||||
return template.HTML(msgLines[0])
|
||||
}
|
||||
|
||||
// Actioner describes an action
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue