Feeds: render markdown to html (#19058)
* feeds: render markdown to html
This commit is contained in:
parent
a0c043f5c6
commit
9cca834aac
|
@ -13,6 +13,8 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/markup"
|
||||||
|
"code.gitea.io/gitea/modules/markup/markdown"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/templates"
|
"code.gitea.io/gitea/modules/templates"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
@ -44,6 +46,25 @@ func toReleaseLink(act *models.Action) string {
|
||||||
return act.GetRepoLink() + "/releases/tag/" + util.PathEscapeSegments(act.GetBranch())
|
return act.GetRepoLink() + "/releases/tag/" + util.PathEscapeSegments(act.GetBranch())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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 *models.Action, content string) string {
|
||||||
|
markdownCtx := &markup.RenderContext{
|
||||||
|
Ctx: ctx,
|
||||||
|
URLPrefix: act.GetRepoLink(),
|
||||||
|
Type: markdown.MarkupName,
|
||||||
|
Metas: map[string]string{
|
||||||
|
"user": act.GetRepoUserName(),
|
||||||
|
"repo": act.GetRepoName(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
markdown, err := markdown.RenderString(markdownCtx, content)
|
||||||
|
if err != nil {
|
||||||
|
return content
|
||||||
|
}
|
||||||
|
return markdown
|
||||||
|
}
|
||||||
|
|
||||||
// feedActionsToFeedItems convert gitea's Action feed to feeds Item
|
// feedActionsToFeedItems convert gitea's Action feed to feeds Item
|
||||||
func feedActionsToFeedItems(ctx *context.Context, actions []*models.Action) (items []*feeds.Item, err error) {
|
func feedActionsToFeedItems(ctx *context.Context, actions []*models.Action) (items []*feeds.Item, err error) {
|
||||||
for _, act := range actions {
|
for _, act := range actions {
|
||||||
|
@ -192,12 +213,12 @@ func feedActionsToFeedItems(ctx *context.Context, actions []*models.Action) (ite
|
||||||
|
|
||||||
case models.ActionCreateIssue, models.ActionCreatePullRequest:
|
case models.ActionCreateIssue, models.ActionCreatePullRequest:
|
||||||
desc = strings.Join(act.GetIssueInfos(), "#")
|
desc = strings.Join(act.GetIssueInfos(), "#")
|
||||||
content = act.GetIssueContent()
|
content = renderMarkdown(ctx, act, act.GetIssueContent())
|
||||||
case models.ActionCommentIssue, models.ActionApprovePullRequest, models.ActionRejectPullRequest, models.ActionCommentPull:
|
case models.ActionCommentIssue, models.ActionApprovePullRequest, models.ActionRejectPullRequest, models.ActionCommentPull:
|
||||||
desc = act.GetIssueTitle()
|
desc = act.GetIssueTitle()
|
||||||
comment := act.GetIssueInfos()[1]
|
comment := act.GetIssueInfos()[1]
|
||||||
if len(comment) != 0 {
|
if len(comment) != 0 {
|
||||||
desc += "\n\n" + comment
|
desc += "\n\n" + renderMarkdown(ctx, act, comment)
|
||||||
}
|
}
|
||||||
case models.ActionMergePullRequest:
|
case models.ActionMergePullRequest:
|
||||||
desc = act.GetIssueInfos()[1]
|
desc = act.GetIssueInfos()[1]
|
||||||
|
|
Loading…
Reference in a new issue