From 056b8f5b52fc0e9ab32f99c016e1ee28975c4bcd Mon Sep 17 00:00:00 2001 From: Jimmy Praet Date: Thu, 3 Dec 2020 11:50:47 +0100 Subject: [PATCH] Clickable links in pull request (and issue) titles (#13695) * clickable links in pull request (and issue) titles #13658 reuses the existing logic to render clickable links in commit messages * dedicated RenderIssueTitle function applied patch from @mrsdizzie --- modules/markup/html.go | 19 +++++++++++++++++++ modules/templates/helper.go | 11 +++++++++++ templates/repo/issue/view_title.tmpl | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/markup/html.go b/modules/markup/html.go index f5f811b59b6..a6c6649cd35 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -268,6 +268,25 @@ func RenderCommitMessageSubject( return ctx.postProcess(rawHTML) } +// RenderIssueTitle to process title on individual issue/pull page +func RenderIssueTitle( + rawHTML []byte, + urlPrefix string, + metas map[string]string, +) ([]byte, error) { + ctx := &postProcessCtx{ + metas: metas, + urlPrefix: urlPrefix, + procs: []processor{ + issueIndexPatternProcessor, + sha1CurrentPatternProcessor, + emojiShortCodeProcessor, + emojiProcessor, + }, + } + return ctx.postProcess(rawHTML) +} + // RenderDescriptionHTML will use similar logic as PostProcess, but will // use a single special linkProcessor. func RenderDescriptionHTML( diff --git a/modules/templates/helper.go b/modules/templates/helper.go index bb7a3476f29..8b96397529b 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -154,6 +154,7 @@ func NewFuncMap() []template.FuncMap { "RenderCommitMessageLink": RenderCommitMessageLink, "RenderCommitMessageLinkSubject": RenderCommitMessageLinkSubject, "RenderCommitBody": RenderCommitBody, + "RenderIssueTitle": RenderIssueTitle, "RenderEmoji": RenderEmoji, "RenderEmojiPlain": emoji.ReplaceAliases, "ReactionToEmoji": ReactionToEmoji, @@ -630,6 +631,16 @@ func RenderCommitBody(msg, urlPrefix string, metas map[string]string) template.H return template.HTML(renderedMessage) } +// RenderIssueTitle renders issue/pull title with defined post processors +func RenderIssueTitle(text, urlPrefix string, metas map[string]string) template.HTML { + renderedText, err := markup.RenderIssueTitle([]byte(template.HTMLEscapeString(text)), urlPrefix, metas) + if err != nil { + log.Error("RenderIssueTitle: %v", err) + return template.HTML("") + } + return template.HTML(renderedText) +} + // RenderEmoji renders html text with emoji post processors func RenderEmoji(text string) template.HTML { renderedText, err := markup.RenderEmoji([]byte(template.HTMLEscapeString(text))) diff --git a/templates/repo/issue/view_title.tmpl b/templates/repo/issue/view_title.tmpl index e2a14502f46..0d594b3a5cd 100644 --- a/templates/repo/issue/view_title.tmpl +++ b/templates/repo/issue/view_title.tmpl @@ -6,7 +6,7 @@ {{end}}

- {{RenderEmoji .Issue.Title}} + {{RenderIssueTitle .Issue.Title $.RepoLink $.Repository.ComposeMetas}} #{{.Issue.Index}}