1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2025-10-15 19:42:04 +00:00

feat(ui): add links to review request targets in issue comments (#8239)

- Add links to review request targets in issue comments
- Fix links to ghost users/orgs/teams to be empty

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8239
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Co-committed-by: Robert Wolff <mahlzahn@posteo.de>
This commit is contained in:
Robert Wolff 2025-07-23 04:45:58 +02:00 committed by Gusted
parent 82daae4c7c
commit 7643bdd2b5
11 changed files with 256 additions and 21 deletions

View file

@ -275,10 +275,18 @@ func RenderUser(ctx context.Context, user user_model.User) template.HTML {
html.EscapeString(user.GetDisplayName())))
}
func RenderReviewRequest(users []issues_model.RequestReviewTarget) template.HTML {
func RenderReviewRequest(ctx context.Context, users []issues_model.RequestReviewTarget) template.HTML {
usernames := make([]string, 0, len(users))
for _, user := range users {
usernames = append(usernames, html.EscapeString(user.Name()))
if user.ID() > 0 {
usernames = append(usernames, fmt.Sprintf(
"<a href='%s' rel='nofollow'><strong>%s</strong></a>",
user.Link(ctx), html.EscapeString(user.Name())))
} else {
usernames = append(usernames, fmt.Sprintf(
"<strong>%s</strong>",
html.EscapeString(user.Name())))
}
}
htmlCode := `<span class="review-request-list">`

View file

@ -10,6 +10,7 @@ import (
"forgejo.org/models/db"
issues_model "forgejo.org/models/issues"
org_model "forgejo.org/models/organization"
"forgejo.org/models/unittest"
user_model "forgejo.org/models/user"
"forgejo.org/modules/setting"
@ -266,3 +267,19 @@ func TestRenderUser(t *testing.T) {
assert.Contains(t, RenderUser(db.DefaultContext, *ghost),
"<strong>Ghost</strong>")
}
func TestRenderReviewRequest(t *testing.T) {
unittest.PrepareTestEnv(t)
target1 := issues_model.RequestReviewTarget{User: &user_model.User{ID: 1, Name: "user1", FullName: "User <One>"}}
target2 := issues_model.RequestReviewTarget{Team: &org_model.Team{ID: 2, Name: "Team2", OrgID: 3}}
target3 := issues_model.RequestReviewTarget{Team: org_model.NewGhostTeam()}
assert.Contains(t, RenderReviewRequest(db.DefaultContext, []issues_model.RequestReviewTarget{target1, target2, target3}),
"<a href='/user1' rel='nofollow'><strong>user1</strong></a>, "+
"<a href='/org/org3/teams/Team2' rel='nofollow'><strong>Team2</strong></a>, "+
"<strong>Ghost team</strong>")
defer test.MockVariableValue(&setting.UI.DefaultShowFullName, true)()
assert.Contains(t, RenderReviewRequest(db.DefaultContext, []issues_model.RequestReviewTarget{target1}),
"<a href='/user1' rel='nofollow'><strong>User &lt;One&gt;</strong></a>")
}