1
0
Fork 0
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:
Robert Wolff 2025-06-23 23:00:32 +02:00
parent 39e6785da0
commit 1b9ac27578
5 changed files with 58 additions and 25 deletions

View file

@ -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">`