Open markdown image links in new window (#17287)

tokarchuk/v1.17
wxiaoguang 3 years ago committed by GitHub
parent 758c8c8446
commit d8e06a90f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      modules/markup/markdown/goldmark.go
  2. 11
      modules/markup/markdown/markdown_test.go

@ -114,6 +114,7 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa
wrap := ast.NewLink() wrap := ast.NewLink()
wrap.Destination = link wrap.Destination = link
wrap.Title = v.Title wrap.Title = v.Title
wrap.SetAttributeString("target", []byte("_blank"))
// Duplicate the current image node // Duplicate the current image node
image := ast.NewImage(ast.NewLink()) image := ast.NewImage(ast.NewLink())

@ -8,6 +8,7 @@ import (
"strings" "strings"
"testing" "testing"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
. "code.gitea.io/gitea/modules/markup/markdown" . "code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
@ -94,10 +95,11 @@ func TestRender_Images(t *testing.T) {
title := "Train" title := "Train"
href := "https://gitea.io" href := "https://gitea.io"
result := util.URLJoin(AppSubURL, url) result := util.URLJoin(AppSubURL, url)
// hint: With Markdown v2.5.2, there is a new syntax: [link](URL){:target="_blank"} , but we do not support it now
test( test(
"!["+title+"]("+url+")", "!["+title+"]("+url+")",
`<p><a href="`+result+`" rel="nofollow"><img src="`+result+`" alt="`+title+`"/></a></p>`) `<p><a href="`+result+`" target="_blank" rel="nofollow noopener"><img src="`+result+`" alt="`+title+`"/></a></p>`)
test( test(
"[["+title+"|"+url+"]]", "[["+title+"|"+url+"]]",
@ -109,7 +111,7 @@ func TestRender_Images(t *testing.T) {
url = "/../../.images/src/02/train.jpg" url = "/../../.images/src/02/train.jpg"
test( test(
"!["+title+"]("+url+")", "!["+title+"]("+url+")",
`<p><a href="`+result+`" rel="nofollow"><img src="`+result+`" alt="`+title+`"/></a></p>`) `<p><a href="`+result+`" target="_blank" rel="nofollow noopener"><img src="`+result+`" alt="`+title+`"/></a></p>`)
test( test(
"[["+title+"|"+url+"]]", "[["+title+"|"+url+"]]",
@ -373,6 +375,7 @@ func TestMarkdownRenderRaw(t *testing.T) {
} }
for _, testcase := range testcases { for _, testcase := range testcases {
log.Info("Test markdown render error with fuzzy data: %x, the following errors can be recovered", testcase)
_, err := RenderRawString(&markup.RenderContext{}, string(testcase)) _, err := RenderRawString(&markup.RenderContext{}, string(testcase))
assert.NoError(t, err) assert.NoError(t, err)
} }
@ -382,8 +385,8 @@ func TestRenderSiblingImages_Issue12925(t *testing.T) {
testcase := `![image1](/image1) testcase := `![image1](/image1)
![image2](/image2) ![image2](/image2)
` `
expected := `<p><a href="/image1" rel="nofollow"><img src="/image1" alt="image1"></a><br> expected := `<p><a href="/image1" target="_blank" rel="nofollow noopener"><img src="/image1" alt="image1"></a><br>
<a href="/image2" rel="nofollow"><img src="/image2" alt="image2"></a></p> <a href="/image2" target="_blank" rel="nofollow noopener"><img src="/image2" alt="image2"></a></p>
` `
res, err := RenderRawString(&markup.RenderContext{}, testcase) res, err := RenderRawString(&markup.RenderContext{}, testcase)
assert.NoError(t, err) assert.NoError(t, err)

Loading…
Cancel
Save