mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-10 04:05:42 +01:00
Merge pull request 'feat(ui): Add rel="nofollow"
to in-list labels' (#5002) from xlii/forgejo:forgejo into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5002 Reviewed-by: Gusted <gusted@noreply.codeberg.org>
This commit is contained in:
commit
e3243a9465
4 changed files with 29 additions and 12 deletions
|
@ -245,7 +245,7 @@ func RenderLabels(ctx context.Context, locale translation.Locale, labels []*issu
|
||||||
if isPull {
|
if isPull {
|
||||||
issuesOrPull = "pulls"
|
issuesOrPull = "pulls"
|
||||||
}
|
}
|
||||||
htmlCode += fmt.Sprintf("<a href='%s/%s?labels=%d'>%s</a> ",
|
htmlCode += fmt.Sprintf("<a href='%s/%s?labels=%d' rel='nofollow'>%s</a> ",
|
||||||
repoLink, issuesOrPull, label.ID, RenderLabel(ctx, locale, label))
|
repoLink, issuesOrPull, label.ID, RenderLabel(ctx, locale, label))
|
||||||
}
|
}
|
||||||
htmlCode += "</span>"
|
htmlCode += "</span>"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
class="item {{if not .label.IsChecked}}tw-hidden{{end}}"
|
class="item {{if not .label.IsChecked}}tw-hidden{{end}}"
|
||||||
id="label_{{.label.ID}}"
|
id="label_{{.label.ID}}"
|
||||||
href="{{.root.RepoLink}}/{{if or .root.IsPull .root.Issue.IsPull}}pulls{{else}}issues{{end}}?labels={{.label.ID}}"{{/* FIXME: use .root.Issue.Link or create .root.Link */}}
|
href="{{.root.RepoLink}}/{{if or .root.IsPull .root.Issue.IsPull}}pulls{{else}}issues{{end}}?labels={{.label.ID}}"{{/* FIXME: use .root.Issue.Link or create .root.Link */}}
|
||||||
|
rel="nofollow"
|
||||||
>
|
>
|
||||||
{{- RenderLabel $.Context ctx.Locale .label -}}
|
{{- RenderLabel $.Context ctx.Locale .label -}}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
<span class="labels-list tw-ml-1">
|
<span class="labels-list tw-ml-1">
|
||||||
{{range .Labels}}
|
{{range .Labels}}
|
||||||
<a href="?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}{{if ne $.listType "milestone"}}&milestone={{$.MilestoneID}}{{end}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}&fuzzy={{$.IsFuzzy}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{RenderLabel $.Context ctx.Locale .}}</a>
|
<a href="?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}{{if ne $.listType "milestone"}}&milestone={{$.MilestoneID}}{{end}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}&fuzzy={{$.IsFuzzy}}{{if $.ShowArchivedLabels}}&archived=true{{end}}" rel="nofollow">{{RenderLabel $.Context ctx.Locale .}}</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1166,18 +1166,34 @@ func TestCommitRefComment(t *testing.T) {
|
||||||
func TestIssueFilterNoFollow(t *testing.T) {
|
func TestIssueFilterNoFollow(t *testing.T) {
|
||||||
defer tests.PrepareTestEnv(t)()
|
defer tests.PrepareTestEnv(t)()
|
||||||
|
|
||||||
|
// Check that every link in the filter list has rel="nofollow".
|
||||||
|
t.Run("Issue lists", func(t *testing.T) {
|
||||||
req := NewRequest(t, "GET", "/user2/repo1/issues")
|
req := NewRequest(t, "GET", "/user2/repo1/issues")
|
||||||
resp := MakeRequest(t, req, http.StatusOK)
|
resp := MakeRequest(t, req, http.StatusOK)
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||||
|
|
||||||
// Check that every link in the filter list has rel="nofollow".
|
filterLinks := htmlDoc.Find(".issue-list-toolbar-right a[href*=\"?q=\"], .labels-list a[href*=\"?q=\"]")
|
||||||
filterLinks := htmlDoc.Find(".issue-list-toolbar-right a[href*=\"?q=\"]")
|
|
||||||
assert.Positive(t, filterLinks.Length())
|
assert.Positive(t, filterLinks.Length())
|
||||||
filterLinks.Each(func(i int, link *goquery.Selection) {
|
filterLinks.Each(func(i int, link *goquery.Selection) {
|
||||||
rel, has := link.Attr("rel")
|
rel, has := link.Attr("rel")
|
||||||
assert.True(t, has)
|
assert.True(t, has)
|
||||||
assert.Equal(t, "nofollow", rel)
|
assert.Equal(t, "nofollow", rel)
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Issue page", func(t *testing.T) {
|
||||||
|
req := NewRequest(t, "GET", "/user2/repo1/issues/1")
|
||||||
|
resp := MakeRequest(t, req, http.StatusOK)
|
||||||
|
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||||
|
|
||||||
|
filterLinks := htmlDoc.Find(".timeline .labels-list a[href*=\"?labels=\"], .issue-content-right .labels-list a[href*=\"?labels=\"]")
|
||||||
|
assert.Positive(t, filterLinks.Length())
|
||||||
|
filterLinks.Each(func(i int, link *goquery.Selection) {
|
||||||
|
rel, has := link.Attr("rel")
|
||||||
|
assert.True(t, has)
|
||||||
|
assert.Equal(t, "nofollow", rel)
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIssueForm(t *testing.T) {
|
func TestIssueForm(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue