summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/markup/html.go10
-rw-r--r--modules/markup/markdown/markdown_test.go5
-rw-r--r--modules/markup/renderer.go12
3 files changed, 24 insertions, 3 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go
index a5606dbb51..ae00c3905f 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -603,8 +603,14 @@ func mentionProcessor(ctx *RenderContext, node *html.Node) {
start = loc.End
continue
}
- replaceContent(node, loc.Start, loc.End, createLink(util.URLJoin(setting.AppURL, mention[1:]), mention, "mention"))
- node = node.NextSibling.NextSibling
+ mentionedUsername := mention[1:]
+
+ if processorHelper.IsUsernameMentionable != nil && processorHelper.IsUsernameMentionable(ctx.Ctx, mentionedUsername) {
+ replaceContent(node, loc.Start, loc.End, createLink(util.URLJoin(setting.AppURL, mentionedUsername), mention, "mention"))
+ node = node.NextSibling.NextSibling
+ } else {
+ node = node.NextSibling
+ }
start = 0
}
}
diff --git a/modules/markup/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go
index 12c6288c24..fbb741d1cd 100644
--- a/modules/markup/markdown/markdown_test.go
+++ b/modules/markup/markdown/markdown_test.go
@@ -38,6 +38,11 @@ func TestMain(m *testing.M) {
if err := git.InitSimple(context.Background()); err != nil {
log.Fatal("git init failed, err: %v", err)
}
+ markup.Init(&markup.ProcessorHelper{
+ IsUsernameMentionable: func(ctx context.Context, username string) bool {
+ return username == "r-lyeh"
+ },
+ })
os.Exit(m.Run())
}
diff --git a/modules/markup/renderer.go b/modules/markup/renderer.go
index 5f69dc7235..b3289cb3c3 100644
--- a/modules/markup/renderer.go
+++ b/modules/markup/renderer.go
@@ -19,8 +19,18 @@ import (
"code.gitea.io/gitea/modules/setting"
)
+type ProcessorHelper struct {
+ IsUsernameMentionable func(ctx context.Context, username string) bool
+}
+
+var processorHelper ProcessorHelper
+
// Init initialize regexps for markdown parsing
-func Init() {
+func Init(ph *ProcessorHelper) {
+ if ph != nil {
+ processorHelper = *ph
+ }
+
NewSanitizer()
if len(setting.Markdown.CustomURLSchemes) > 0 {
CustomLinkURLSchemes(setting.Markdown.CustomURLSchemes)