Skip to content

Commit 70d39fc

Browse files
committed
fix
1 parent d2f6588 commit 70d39fc

32 files changed

+78
-50
lines changed

models/issues/comment.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package issues
88
import (
99
"context"
1010
"fmt"
11+
"html/template"
1112
"strconv"
1213
"unicode/utf8"
1314

@@ -259,8 +260,8 @@ type Comment struct {
259260
CommitID int64
260261
Line int64 // - previous line / + proposed line
261262
TreePath string
262-
Content string `xorm:"LONGTEXT"`
263-
RenderedContent string `xorm:"-"`
263+
Content string `xorm:"LONGTEXT"`
264+
RenderedContent template.HTML `xorm:"-"`
264265

265266
// Path represents the 4 lines of code cemented by this comment
266267
Patch string `xorm:"-"`

models/issues/issue.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package issues
77
import (
88
"context"
99
"fmt"
10+
"html/template"
1011
"regexp"
1112
"slices"
1213

@@ -105,7 +106,7 @@ type Issue struct {
105106
OriginalAuthorID int64 `xorm:"index"`
106107
Title string `xorm:"name"`
107108
Content string `xorm:"LONGTEXT"`
108-
RenderedContent string `xorm:"-"`
109+
RenderedContent template.HTML `xorm:"-"`
109110
Labels []*Label `xorm:"-"`
110111
MilestoneID int64 `xorm:"INDEX"`
111112
Milestone *Milestone `xorm:"-"`

models/issues/milestone.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package issues
66
import (
77
"context"
88
"fmt"
9+
"html/template"
910
"strings"
1011

1112
"code.gitea.io/gitea/models/db"
@@ -47,8 +48,8 @@ type Milestone struct {
4748
RepoID int64 `xorm:"INDEX"`
4849
Repo *repo_model.Repository `xorm:"-"`
4950
Name string
50-
Content string `xorm:"TEXT"`
51-
RenderedContent string `xorm:"-"`
51+
Content string `xorm:"TEXT"`
52+
RenderedContent template.HTML `xorm:"-"`
5253
IsClosed bool
5354
NumIssues int
5455
NumClosedIssues int

models/project/project.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package project
66
import (
77
"context"
88
"fmt"
9+
"html/template"
910

1011
"code.gitea.io/gitea/models/db"
1112
repo_model "code.gitea.io/gitea/models/repo"
@@ -100,7 +101,7 @@ type Project struct {
100101
CardType CardType
101102
Type Type
102103

103-
RenderedContent string `xorm:"-"`
104+
RenderedContent template.HTML `xorm:"-"`
104105

105106
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
106107
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`

models/repo/release.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package repo
77
import (
88
"context"
99
"fmt"
10+
"html/template"
1011
"net/url"
1112
"sort"
1213
"strconv"
@@ -79,7 +80,7 @@ type Release struct {
7980
NumCommits int64
8081
NumCommitsBehind int64 `xorm:"-"`
8182
Note string `xorm:"TEXT"`
82-
RenderedNote string `xorm:"-"`
83+
RenderedNote template.HTML `xorm:"-"`
8384
IsDraft bool `xorm:"NOT NULL DEFAULT false"`
8485
IsPrerelease bool `xorm:"NOT NULL DEFAULT false"`
8586
IsTag bool `xorm:"NOT NULL DEFAULT false"` // will be true only if the record is a tag and has no related releases

modules/markup/html_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ func TestRender_ShortLinks(t *testing.T) {
397397
},
398398
}, input)
399399
assert.NoError(t, err)
400-
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer))
400+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(buffer)))
401401
buffer, err = markdown.RenderString(&markup.RenderContext{
402402
Ctx: git.DefaultContext,
403403
Links: markup.Links{
@@ -407,7 +407,7 @@ func TestRender_ShortLinks(t *testing.T) {
407407
IsWiki: true,
408408
}, input)
409409
assert.NoError(t, err)
410-
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer))
410+
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(string(buffer)))
411411
}
412412

413413
mediatree := util.URLJoin(markup.TestRepoURL, "media", "master")
@@ -510,7 +510,7 @@ func TestRender_RelativeImages(t *testing.T) {
510510
Metas: localMetas,
511511
}, input)
512512
assert.NoError(t, err)
513-
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer))
513+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(buffer)))
514514
buffer, err = markdown.RenderString(&markup.RenderContext{
515515
Ctx: git.DefaultContext,
516516
Links: markup.Links{
@@ -520,7 +520,7 @@ func TestRender_RelativeImages(t *testing.T) {
520520
IsWiki: true,
521521
}, input)
522522
assert.NoError(t, err)
523-
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer))
523+
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(string(buffer)))
524524
}
525525

526526
rawwiki := util.URLJoin(markup.TestRepoURL, "wiki", "raw")

modules/markup/markdown/markdown.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package markdown
66

77
import (
88
"fmt"
9+
"html/template"
910
"io"
1011
"strings"
1112
"sync"
@@ -262,12 +263,12 @@ func Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error
262263
}
263264

264265
// RenderString renders Markdown string to HTML with all specific handling stuff and return string
265-
func RenderString(ctx *markup.RenderContext, content string) (string, error) {
266+
func RenderString(ctx *markup.RenderContext, content string) (template.HTML, error) {
266267
var buf strings.Builder
267268
if err := Render(ctx, strings.NewReader(content), &buf); err != nil {
268269
return "", err
269270
}
270-
return buf.String(), nil
271+
return template.HTML(buf.String()), nil
271272
}
272273

273274
// RenderRaw renders Markdown to HTML without handling special links.

modules/markup/markdown/markdown_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func TestRender_StandardLinks(t *testing.T) {
5858
},
5959
}, input)
6060
assert.NoError(t, err)
61-
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer))
61+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(buffer)))
6262

6363
buffer, err = markdown.RenderString(&markup.RenderContext{
6464
Ctx: git.DefaultContext,
@@ -68,7 +68,7 @@ func TestRender_StandardLinks(t *testing.T) {
6868
IsWiki: true,
6969
}, input)
7070
assert.NoError(t, err)
71-
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(buffer))
71+
assert.Equal(t, strings.TrimSpace(expectedWiki), strings.TrimSpace(string(buffer)))
7272
}
7373

7474
googleRendered := `<p><a href="https://google.com/" rel="nofollow">https://google.com/</a></p>`
@@ -93,7 +93,7 @@ func TestRender_Images(t *testing.T) {
9393
},
9494
}, input)
9595
assert.NoError(t, err)
96-
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer))
96+
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(buffer)))
9797
}
9898

9999
url := "../../.images/src/02/train.jpg"

modules/templates/util_render.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ func RenderMarkdownToHtml(ctx context.Context, input string) template.HTML { //n
208208
if err != nil {
209209
log.Error("RenderString: %v", err)
210210
}
211-
return template.HTML(output)
211+
return output
212212
}
213213

214214
func RenderLabels(ctx context.Context, labels []*issues_model.Label, repoLink string) template.HTML {

modules/templates/util_string.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package templates
55

66
import (
7+
"fmt"
8+
"html/template"
79
"strings"
810

911
"code.gitea.io/gitea/modules/base"
@@ -17,6 +19,19 @@ func NewStringUtils() *StringUtils {
1719
return &stringUtils
1820
}
1921

22+
func (su *StringUtils) ToString(v any) string {
23+
switch v := v.(type) {
24+
case string:
25+
return v
26+
case template.HTML:
27+
return string(v)
28+
case fmt.Stringer:
29+
return v.String()
30+
default:
31+
return fmt.Sprint(v)
32+
}
33+
}
34+
2035
func (su *StringUtils) HasPrefix(s, prefix string) bool {
2136
return strings.HasPrefix(s, prefix)
2237
}

0 commit comments

Comments
 (0)