summaryrefslogtreecommitdiffstats
path: root/modules/markup
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2024-01-03 07:01:12 +0100
committerGitHub <noreply@github.com>2024-01-03 14:01:12 +0800
commit12c0487e01d3fd9fe289345c53e8a220be55e864 (patch)
tree5f162ba31b7d39d04de004b3c6dd0b844212ed74 /modules/markup
parent91aa263225083d3de6d68fca08b253b685bc7e4b (diff)
downloadgitea-12c0487e01d3fd9fe289345c53e8a220be55e864.tar.gz
gitea-12c0487e01d3fd9fe289345c53e8a220be55e864.zip
Make cross-reference issue links work in markdown documents again (#28682)
In #26365 issue references were disabled entirely for documents, intending to match GitHub behavior. However cross-references do appear to work in documents on GitHub. This is useful for example to write release notes in a markdown document and reference issues. While the simpler syntax may create links when not intended, hopefully the cross-reference syntax is unique enough to avoid it.
Diffstat (limited to 'modules/markup')
-rw-r--r--modules/markup/html.go11
-rw-r--r--modules/markup/html_test.go7
2 files changed, 13 insertions, 5 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go
index 03168b6946..05b1c3ef72 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -852,11 +852,14 @@ func fullIssuePatternProcessor(ctx *RenderContext, node *html.Node) {
}
func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
- // FIXME: the use of "mode" is quite dirty and hacky, for example: what is a "document"? how should it be rendered?
- // The "mode" approach should be refactored to some other more clear&reliable way.
- if ctx.Metas == nil || (ctx.Metas["mode"] == "document" && !ctx.IsWiki) {
+ if ctx.Metas == nil {
return
}
+
+ // FIXME: the use of "mode" is quite dirty and hacky, for example: what is a "document"? how should it be rendered?
+ // The "mode" approach should be refactored to some other more clear&reliable way.
+ crossLinkOnly := (ctx.Metas["mode"] == "document" && !ctx.IsWiki)
+
var (
found bool
ref *references.RenderizableReference
@@ -870,7 +873,7 @@ func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
// Repos with external issue trackers might still need to reference local PRs
// We need to concern with the first one that shows up in the text, whichever it is
isNumericStyle := ctx.Metas["style"] == "" || ctx.Metas["style"] == IssueNameStyleNumeric
- foundNumeric, refNumeric := references.FindRenderizableReferenceNumeric(node.Data, hasExtTrackFormat && !isNumericStyle)
+ foundNumeric, refNumeric := references.FindRenderizableReferenceNumeric(node.Data, hasExtTrackFormat && !isNumericStyle, crossLinkOnly)
switch ctx.Metas["style"] {
case "", IssueNameStyleNumeric:
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go
index d1f4e9e8a3..62fd0f5a85 100644
--- a/modules/markup/html_test.go
+++ b/modules/markup/html_test.go
@@ -561,11 +561,16 @@ func TestPostProcess_RenderDocument(t *testing.T) {
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(res.String()))
}
- // Issue index shouldn't be post processing in an document.
+ // Issue index shouldn't be post processing in a document.
test(
"#1",
"#1")
+ // But cross-referenced issue index should work.
+ test(
+ "go-gitea/gitea#12345",
+ `<a href="`+util.URLJoin(markup.TestAppURL, "go-gitea", "gitea", "issues", "12345")+`" class="ref-issue">go-gitea/gitea#12345</a>`)
+
// Test that other post processing still works.
test(
":gitea:",