From da88ab63b69b8b751aca8abf854fe9ec73d3ade5 Mon Sep 17 00:00:00 2001 From: Blender Defender Date: Sat, 10 Sep 2022 15:46:38 +0200 Subject: [PATCH 1/6] Make labels clickable in the comments section. This commit adds the possibility to click the labels in the message "User added/removed the X label", which will lead to the issues page, filtered by the clicked label. --- modules/templates/helper.go | 6 +++--- templates/repo/issue/view_content/comments.tmpl | 6 +++--- web_src/less/_base.less | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 48b62403a05d0..ad2aee924859e 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -376,15 +376,15 @@ func NewFuncMap() []template.FuncMap { // the table is NOT sorted with this header return "" }, - "RenderLabels": func(labels []*issues_model.Label) template.HTML { + "RenderLabels": func(labels []*issues_model.Label, repoLink string) template.HTML { html := `` for _, label := range labels { // Protect against nil value in labels - shouldn't happen but would cause a panic if so if label == nil { continue } - html += fmt.Sprintf("
%s
", - label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) + html += fmt.Sprintf("%s ", + repoLink+"/issues?q=&labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) } html += "
" return template.HTML(html) diff --git a/templates/repo/issue/view_content/comments.tmpl b/templates/repo/issue/view_content/comments.tmpl index 8e0308c2d037c..7ed8cf3bde5e5 100644 --- a/templates/repo/issue/view_content/comments.tmpl +++ b/templates/repo/issue/view_content/comments.tmpl @@ -182,11 +182,11 @@ {{template "shared/user/authorlink" .Poster}} {{if and .AddedLabels (not .RemovedLabels)}} - {{$.locale.TrN (len .AddedLabels) "repo.issues.add_label" "repo.issues.add_labels" (RenderLabels .AddedLabels) $createdStr | Safe}} + {{$.locale.TrN (len .AddedLabels) "repo.issues.add_label" "repo.issues.add_labels" (RenderLabels .AddedLabels $.RepoLink) $createdStr | Safe}} {{else if and (not .AddedLabels) .RemovedLabels}} - {{$.locale.TrN (len .RemovedLabels) "repo.issues.remove_label" "repo.issues.remove_labels" (RenderLabels .RemovedLabels) $createdStr | Safe}} + {{$.locale.TrN (len .RemovedLabels) "repo.issues.remove_label" "repo.issues.remove_labels" (RenderLabels .RemovedLabels $.RepoLink) $createdStr | Safe}} {{else}} - {{$.locale.Tr "repo.issues.add_remove_labels" (RenderLabels .AddedLabels) (RenderLabels .RemovedLabels) $createdStr | Safe}} + {{$.locale.Tr "repo.issues.add_remove_labels" (RenderLabels .AddedLabels $.RepoLink) (RenderLabels .RemovedLabels $.RepoLink) $createdStr | Safe}} {{end}} diff --git a/web_src/less/_base.less b/web_src/less/_base.less index bed672a35a869..395bcd485737e 100644 --- a/web_src/less/_base.less +++ b/web_src/less/_base.less @@ -956,7 +956,7 @@ a.ui.card:hover, &.grey { color: var(--color-text-light) !important; - a { + a:not(.label) { color: var(--color-text) !important; &:hover { From 672de0eb46594a49aca30daed7befb99f3aa93f8 Mon Sep 17 00:00:00 2001 From: Blender Defender Date: Sat, 10 Sep 2022 17:41:16 +0200 Subject: [PATCH 2/6] Update patch to make sure to produce valid links --- modules/templates/helper.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index ad2aee924859e..cfb1cabad1e77 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -383,11 +383,15 @@ func NewFuncMap() []template.FuncMap { if label == nil { continue } + + // Prevent invalid links. + if !strings.HasSuffix(repoLink, "/") { + repoLink += "/" + } + html += fmt.Sprintf("%s ", - repoLink+"/issues?q=&labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) + repoLink+"issues?labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) } - html += "" - return template.HTML(html) }, "MermaidMaxSourceCharacters": func() int { return setting.MermaidMaxSourceCharacters From ace82bee2a936c165f95a68a0e233fc39a9f4acd Mon Sep 17 00:00:00 2001 From: Blender Defender Date: Sat, 10 Sep 2022 18:45:03 +0200 Subject: [PATCH 3/6] fix: build fails because of missing return statement. --- modules/templates/helper.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index cfb1cabad1e77..41545ce8b47b4 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -392,6 +392,8 @@ func NewFuncMap() []template.FuncMap { html += fmt.Sprintf("%s ", repoLink+"issues?labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) } + html += "" + return template.HTML(html) }, "MermaidMaxSourceCharacters": func() int { return setting.MermaidMaxSourceCharacters From dae250772b0396e8eb8d38836fa39ef0091935be Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sun, 11 Sep 2022 19:28:16 +0800 Subject: [PATCH 4/6] small changes --- modules/templates/helper.go | 20 +++++--------------- web_src/less/_base.less | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 41545ce8b47b4..f50fb8b809446 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -377,23 +377,13 @@ func NewFuncMap() []template.FuncMap { return "" }, "RenderLabels": func(labels []*issues_model.Label, repoLink string) template.HTML { - html := `` + htmlStr := `` for _, label := range labels { - // Protect against nil value in labels - shouldn't happen but would cause a panic if so - if label == nil { - continue - } - - // Prevent invalid links. - if !strings.HasSuffix(repoLink, "/") { - repoLink += "/" - } - - html += fmt.Sprintf("%s ", - repoLink+"issues?labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) + htmlStr += fmt.Sprintf("%s ", + repoLink, "issues?labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) } - html += "" - return template.HTML(html) + htmlStr += "" + return template.HTML(htmlStr) }, "MermaidMaxSourceCharacters": func() int { return setting.MermaidMaxSourceCharacters diff --git a/web_src/less/_base.less b/web_src/less/_base.less index 395bcd485737e..bed672a35a869 100644 --- a/web_src/less/_base.less +++ b/web_src/less/_base.less @@ -956,7 +956,7 @@ a.ui.card:hover, &.grey { color: var(--color-text-light) !important; - a:not(.label) { + a { color: var(--color-text) !important; &:hover { From c0d4c87e82db53153f00e9b9180a72ab4e65d16c Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sun, 11 Sep 2022 19:36:44 +0800 Subject: [PATCH 5/6] revert label nil check --- modules/templates/helper.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index f50fb8b809446..77380e6a2af6c 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -379,6 +379,10 @@ func NewFuncMap() []template.FuncMap { "RenderLabels": func(labels []*issues_model.Label, repoLink string) template.HTML { htmlStr := `` for _, label := range labels { + // Protect against nil value in labels - shouldn't happen but would cause a panic if so + if label == nil { + continue + } htmlStr += fmt.Sprintf("%s ", repoLink, "issues?labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) } From fc3482854c355d8fdb5d7423a59ea76b2b1a016c Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sun, 11 Sep 2022 19:40:11 +0800 Subject: [PATCH 6/6] fine tune sprintf --- modules/templates/helper.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 77380e6a2af6c..a03df9d79e103 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -377,17 +377,17 @@ func NewFuncMap() []template.FuncMap { return "" }, "RenderLabels": func(labels []*issues_model.Label, repoLink string) template.HTML { - htmlStr := `` + html := `` for _, label := range labels { // Protect against nil value in labels - shouldn't happen but would cause a panic if so if label == nil { continue } - htmlStr += fmt.Sprintf("%s ", - repoLink, "issues?labels="+strconv.FormatInt(label.ID, 10), label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) + html += fmt.Sprintf("%s ", + repoLink, label.ID, label.ForegroundColor(), label.Color, RenderEmoji(label.Name)) } - htmlStr += "" - return template.HTML(htmlStr) + html += "" + return template.HTML(html) }, "MermaidMaxSourceCharacters": func() int { return setting.MermaidMaxSourceCharacters