Refactor some Str2html code (#29397)
This PR touches the most interesting part of the "template refactoring". 1. Unclear variable type. Especially for "web/feed/convert.go": sometimes it uses text, sometimes it uses HTML. 2. Assign text content to "RenderedContent" field, for example: ` project.RenderedContent = project.Description` in web/org/projects.go 3. Assign rendered content to text field, for example: `r.Note = rendered content` in web/repo/release.go 4. (possible) Incorrectly calling `{{Str2html .PackageDescriptor.Metadata.ReleaseNotes}}` in package/content/nuget.tmpl, I guess the name Str2html misleads developers to use it to "render string to html", but it only sanitizes. if ReleaseNotes really contains HTML, then this is not a problem. (cherry picked from commit e71eb8930a5d0f60874b038c223498b41ad65592) Conflicts: modules/templates/util_string.go trivial context conflict
This commit is contained in:
parent
97a0368c28
commit
68099f2f00
32 changed files with 90 additions and 61 deletions
|
@ -51,7 +51,7 @@ func toReleaseLink(ctx *context.Context, act *activities_model.Action) string {
|
|||
|
||||
// renderMarkdown creates a minimal markdown render context from an action.
|
||||
// If rendering fails, the original markdown text is returned
|
||||
func renderMarkdown(ctx *context.Context, act *activities_model.Action, content string) string {
|
||||
func renderMarkdown(ctx *context.Context, act *activities_model.Action, content string) template.HTML {
|
||||
markdownCtx := &markup.RenderContext{
|
||||
Ctx: ctx,
|
||||
Links: markup.Links{
|
||||
|
@ -65,7 +65,7 @@ func renderMarkdown(ctx *context.Context, act *activities_model.Action, content
|
|||
}
|
||||
markdown, err := markdown.RenderString(markdownCtx, content)
|
||||
if err != nil {
|
||||
return content
|
||||
return templates.Str2html(content) // old code did so: use Str2html to render in tmpl
|
||||
}
|
||||
return markdown
|
||||
}
|
||||
|
@ -75,7 +75,11 @@ func feedActionsToFeedItems(ctx *context.Context, actions activities_model.Actio
|
|||
for _, act := range actions {
|
||||
act.LoadActUser(ctx)
|
||||
|
||||
var content, desc, title string
|
||||
// TODO: the code seems quite strange (maybe not right)
|
||||
// sometimes it uses text content but sometimes it uses HTML content
|
||||
// it should clearly defines which kind of content it should use for the feed items: plan text or rich HTML
|
||||
var title, desc string
|
||||
var content template.HTML
|
||||
|
||||
link := &feeds.Link{Href: act.GetCommentHTMLURL(ctx)}
|
||||
|
||||
|
@ -229,7 +233,7 @@ func feedActionsToFeedItems(ctx *context.Context, actions activities_model.Actio
|
|||
desc = act.GetIssueTitle(ctx)
|
||||
comment := act.GetIssueInfos()[1]
|
||||
if len(comment) != 0 {
|
||||
desc += "\n\n" + renderMarkdown(ctx, act, comment)
|
||||
desc += "\n\n" + string(renderMarkdown(ctx, act, comment))
|
||||
}
|
||||
case activities_model.ActionMergePullRequest, activities_model.ActionAutoMergePullRequest:
|
||||
desc = act.GetIssueInfos()[1]
|
||||
|
@ -240,7 +244,7 @@ func feedActionsToFeedItems(ctx *context.Context, actions activities_model.Actio
|
|||
}
|
||||
}
|
||||
if len(content) == 0 {
|
||||
content = desc
|
||||
content = templates.Str2html(desc)
|
||||
}
|
||||
|
||||
// It's a common practice for feed generators to use plain text titles.
|
||||
|
@ -261,7 +265,7 @@ func feedActionsToFeedItems(ctx *context.Context, actions activities_model.Actio
|
|||
},
|
||||
Id: fmt.Sprintf("%v: %v", strconv.FormatInt(act.ID, 10), link.Href),
|
||||
Created: act.CreatedUnix.AsTime(),
|
||||
Content: content,
|
||||
Content: string(content),
|
||||
})
|
||||
}
|
||||
return items, err
|
||||
|
@ -290,7 +294,8 @@ func releasesToFeedItems(ctx *context.Context, releases []*repo_model.Release, i
|
|||
return nil, err
|
||||
}
|
||||
|
||||
var title, content string
|
||||
var title string
|
||||
var content template.HTML
|
||||
|
||||
if rel.IsTag {
|
||||
title = rel.TagName
|
||||
|
@ -319,7 +324,7 @@ func releasesToFeedItems(ctx *context.Context, releases []*repo_model.Release, i
|
|||
Email: rel.Publisher.GetEmail(),
|
||||
},
|
||||
Id: fmt.Sprintf("%v: %v", strconv.FormatInt(rel.ID, 10), link.Href),
|
||||
Content: content,
|
||||
Content: string(content),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ func showUserFeed(ctx *context.Context, formatType string) {
|
|||
feed := &feeds.Feed{
|
||||
Title: ctx.Locale.TrString("home.feed_of", ctx.ContextUser.DisplayName()),
|
||||
Link: &feeds.Link{Href: ctx.ContextUser.HTMLURL()},
|
||||
Description: ctxUserDescription,
|
||||
Description: string(ctxUserDescription),
|
||||
Created: time.Now(),
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/json"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/templates"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/modules/web"
|
||||
shared_user "code.gitea.io/gitea/routers/web/shared/user"
|
||||
|
@ -104,7 +105,7 @@ func Projects(ctx *context.Context) {
|
|||
}
|
||||
|
||||
for _, project := range projects {
|
||||
project.RenderedContent = project.Description
|
||||
project.RenderedContent = templates.Str2html(project.Description) // FIXME: is it right? why not render?
|
||||
}
|
||||
|
||||
err = shared_user.LoadHeaderCount(ctx)
|
||||
|
@ -395,7 +396,7 @@ func ViewProject(ctx *context.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
project.RenderedContent = project.Description
|
||||
project.RenderedContent = templates.Str2html(project.Description) // FIXME: is it right? why not render?
|
||||
ctx.Data["LinkedPRs"] = linkedPrsMap
|
||||
ctx.Data["PageIsViewProjects"] = true
|
||||
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx)
|
||||
|
|
|
@ -42,6 +42,7 @@ import (
|
|||
repo_module "code.gitea.io/gitea/modules/repository"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/modules/templates"
|
||||
"code.gitea.io/gitea/modules/templates/vars"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
@ -1769,7 +1770,7 @@ func ViewIssue(ctx *context.Context) {
|
|||
// so "|" is used as delimeter to mark the new format
|
||||
if comment.Content[0] != '|' {
|
||||
// handle old time comments that have formatted text stored
|
||||
comment.RenderedContent = comment.Content
|
||||
comment.RenderedContent = templates.Str2html(comment.Content)
|
||||
comment.Content = ""
|
||||
} else {
|
||||
// else it's just a duration in seconds to pass on to the frontend
|
||||
|
|
|
@ -113,7 +113,7 @@ func getReleaseInfos(ctx *context.Context, opts *repo_model.FindReleasesOptions)
|
|||
cacheUsers[r.PublisherID] = r.Publisher
|
||||
}
|
||||
|
||||
r.Note, err = markdown.RenderString(&markup.RenderContext{
|
||||
r.RenderedNote, err = markdown.RenderString(&markup.RenderContext{
|
||||
Links: markup.Links{
|
||||
Base: ctx.Repo.RepoLink,
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue