mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-08-04 17:35:21 +02:00
feat(ui): add issue comment assignment doer links
This commit is contained in:
parent
39e6785da0
commit
1b9ac27578
5 changed files with 58 additions and 25 deletions
|
@ -7,6 +7,7 @@ import (
|
|||
"context"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"html"
|
||||
"html/template"
|
||||
"math"
|
||||
"net/url"
|
||||
|
@ -15,6 +16,7 @@ import (
|
|||
"unicode"
|
||||
|
||||
issues_model "forgejo.org/models/issues"
|
||||
user_model "forgejo.org/models/user"
|
||||
"forgejo.org/modules/emoji"
|
||||
"forgejo.org/modules/log"
|
||||
"forgejo.org/modules/markup"
|
||||
|
@ -26,7 +28,7 @@ import (
|
|||
|
||||
// RenderCommitMessage renders commit message with XSS-safe and special links.
|
||||
func RenderCommitMessage(ctx context.Context, msg string, metas map[string]string) template.HTML {
|
||||
cleanMsg := template.HTMLEscapeString(msg)
|
||||
cleanMsg := html.EscapeString(msg)
|
||||
// we can safely assume that it will not return any error, since there
|
||||
// shouldn't be any special HTML.
|
||||
fullMessage, err := markup.RenderCommitMessage(&markup.RenderContext{
|
||||
|
@ -63,7 +65,7 @@ func RenderCommitMessageLinkSubject(ctx context.Context, msg, urlDefault string,
|
|||
Ctx: ctx,
|
||||
DefaultLink: urlDefault,
|
||||
Metas: metas,
|
||||
}, template.HTMLEscapeString(msgLine))
|
||||
}, html.EscapeString(msgLine))
|
||||
if err != nil {
|
||||
log.Error("RenderCommitMessageSubject: %v", err)
|
||||
return template.HTML("")
|
||||
|
@ -88,7 +90,7 @@ func RenderCommitBody(ctx context.Context, msg string, metas map[string]string)
|
|||
renderedMessage, err := markup.RenderCommitMessage(&markup.RenderContext{
|
||||
Ctx: ctx,
|
||||
Metas: metas,
|
||||
}, template.HTMLEscapeString(msgLine))
|
||||
}, html.EscapeString(msgLine))
|
||||
if err != nil {
|
||||
log.Error("RenderCommitMessage: %v", err)
|
||||
return ""
|
||||
|
@ -122,7 +124,7 @@ func RenderIssueTitle(ctx context.Context, text string, metas map[string]string)
|
|||
renderedText, err := markup.RenderIssueTitle(&markup.RenderContext{
|
||||
Ctx: ctx,
|
||||
Metas: metas,
|
||||
}, template.HTMLEscapeString(text))
|
||||
}, html.EscapeString(text))
|
||||
if err != nil {
|
||||
log.Error("RenderIssueTitle: %v", err)
|
||||
return template.HTML("")
|
||||
|
@ -132,7 +134,7 @@ func RenderIssueTitle(ctx context.Context, text string, metas map[string]string)
|
|||
|
||||
// RenderRefIssueTitle renders referenced issue/pull title with defined post processors
|
||||
func RenderRefIssueTitle(ctx context.Context, text string) template.HTML {
|
||||
renderedText, err := markup.RenderRefIssueTitle(&markup.RenderContext{Ctx: ctx}, template.HTMLEscapeString(text))
|
||||
renderedText, err := markup.RenderRefIssueTitle(&markup.RenderContext{Ctx: ctx}, html.EscapeString(text))
|
||||
if err != nil {
|
||||
log.Error("RenderRefIssueTitle: %v", err)
|
||||
return ""
|
||||
|
@ -150,7 +152,7 @@ func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_m
|
|||
labelScope = label.ExclusiveScope()
|
||||
)
|
||||
|
||||
description := emoji.ReplaceAliases(template.HTMLEscapeString(label.Description))
|
||||
description := emoji.ReplaceAliases(html.EscapeString(label.Description))
|
||||
|
||||
if label.IsArchived() {
|
||||
archivedCSSClass = "archived-label"
|
||||
|
@ -212,7 +214,7 @@ func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_m
|
|||
// RenderEmoji renders html text with emoji post processors
|
||||
func RenderEmoji(ctx context.Context, text string) template.HTML {
|
||||
renderedText, err := markup.RenderEmoji(&markup.RenderContext{Ctx: ctx},
|
||||
template.HTMLEscapeString(text))
|
||||
html.EscapeString(text))
|
||||
if err != nil {
|
||||
log.Error("RenderEmoji: %v", err)
|
||||
return template.HTML("")
|
||||
|
@ -263,10 +265,20 @@ func RenderLabels(ctx context.Context, locale translation.Locale, labels []*issu
|
|||
return template.HTML(htmlCode)
|
||||
}
|
||||
|
||||
func RenderUser(ctx context.Context, user user_model.User) template.HTML {
|
||||
if user.ID > 0 {
|
||||
return template.HTML(fmt.Sprintf(
|
||||
"<a href='%s' rel='nofollow'><strong>%s</strong></a>",
|
||||
user.HomeLink(), html.EscapeString(user.GetDisplayName())))
|
||||
}
|
||||
return template.HTML(fmt.Sprintf("<strong>%s</strong>",
|
||||
html.EscapeString(user.GetDisplayName())))
|
||||
}
|
||||
|
||||
func RenderReviewRequest(users []issues_model.RequestReviewTarget) template.HTML {
|
||||
usernames := make([]string, 0, len(users))
|
||||
for _, user := range users {
|
||||
usernames = append(usernames, template.HTMLEscapeString(user.Name()))
|
||||
usernames = append(usernames, html.EscapeString(user.Name()))
|
||||
}
|
||||
|
||||
htmlCode := `<span class="review-request-list">`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue