diff --git a/models/git/protected_branch.go b/models/git/protected_branch.go index ec710a710e..5f5ab13f9d 100644 --- a/models/git/protected_branch.go +++ b/models/git/protected_branch.go @@ -507,7 +507,7 @@ func updateApprovalWhitelist(ctx context.Context, repo *repo_model.Repository, c return currentWhitelist, nil } - prUserIDs, err := access_model.GetUserIDsWithUnitAccess(ctx, repo, perm.AccessModeRead, unit.TypePullRequests) + prUserIDs, err := access_model.GetUserIDsWithAnyUnitAccess(ctx, repo, perm.AccessModeRead, unit.TypePullRequests) if err != nil { return nil, err } diff --git a/models/perm/access/repo_permission.go b/models/perm/access/repo_permission.go index 69d54b9020..ee06ca3c50 100644 --- a/models/perm/access/repo_permission.go +++ b/models/perm/access/repo_permission.go @@ -599,8 +599,8 @@ func HasAnyUnitAccess(ctx context.Context, userID int64, repo *repo_model.Reposi return perm.HasAnyUnitAccess(), nil } -func GetUsersWithUnitAccess(ctx context.Context, repo *repo_model.Repository, mode perm_model.AccessMode, unitType unit.Type) (users []*user_model.User, err error) { - userIDs, err := GetUserIDsWithUnitAccess(ctx, repo, mode, unitType) +func GetUsersWithAnyUnitAccess(ctx context.Context, repo *repo_model.Repository, mode perm_model.AccessMode, unitType unit.Type, moreUnitTypes ...unit.Type) (users []*user_model.User, err error) { + userIDs, err := GetUserIDsWithAnyUnitAccess(ctx, repo, mode, unitType, moreUnitTypes...) if err != nil { return nil, err } @@ -613,7 +613,7 @@ func GetUsersWithUnitAccess(ctx context.Context, repo *repo_model.Repository, mo return users, nil } -func GetUserIDsWithUnitAccess(ctx context.Context, repo *repo_model.Repository, mode perm_model.AccessMode, unitType unit.Type) (container.Set[int64], error) { +func GetUserIDsWithAnyUnitAccess(ctx context.Context, repo *repo_model.Repository, mode perm_model.AccessMode, unitType unit.Type, moreUnitTypes ...unit.Type) (container.Set[int64], error) { userIDs := container.Set[int64]{} e := db.GetEngine(ctx) accesses := make([]*Access, 0, 10) @@ -630,7 +630,7 @@ func GetUserIDsWithUnitAccess(ctx context.Context, repo *repo_model.Repository, if !repo.Owner.IsOrganization() { userIDs.Add(repo.Owner.ID) } else { - teamUserIDs, err := organization.GetTeamUserIDsWithAccessToAnyRepoUnit(ctx, repo.OwnerID, repo.ID, mode, unitType) + teamUserIDs, err := organization.GetTeamUserIDsWithAccessToAnyRepoUnit(ctx, repo.OwnerID, repo.ID, mode, unitType, moreUnitTypes...) if err != nil { return nil, err } diff --git a/models/perm/access/repo_permission_test.go b/models/perm/access/repo_permission_test.go index b5c82afb29..8eef8b010d 100644 --- a/models/perm/access/repo_permission_test.go +++ b/models/perm/access/repo_permission_test.go @@ -226,12 +226,12 @@ func testGetIndividualUserRepoPermission(t *testing.T) { assert.Equal(t, perm_model.AccessModeNone, perm.unitsMode[unit.TypeCode]) assert.Equal(t, perm_model.AccessModeRead, perm.unitsMode[unit.TypeIssues]) - users, err := GetUsersWithUnitAccess(ctx, repo3, perm_model.AccessModeRead, unit.TypeIssues) + users, err := GetUsersWithAnyUnitAccess(ctx, repo3, perm_model.AccessModeRead, unit.TypeIssues) require.NoError(t, err) require.Len(t, users, 1) assert.Equal(t, user.ID, users[0].ID) - users, err = GetUsersWithUnitAccess(ctx, repo3, perm_model.AccessModeWrite, unit.TypeIssues) + users, err = GetUsersWithAnyUnitAccess(ctx, repo3, perm_model.AccessModeWrite, unit.TypeIssues) require.NoError(t, err) require.Empty(t, users) }) @@ -245,7 +245,7 @@ func testGetIndividualUserRepoPermission(t *testing.T) { assert.Equal(t, perm_model.AccessModeWrite, perm.unitsMode[unit.TypeCode]) assert.Equal(t, perm_model.AccessModeWrite, perm.unitsMode[unit.TypeIssues]) - users, err := GetUsersWithUnitAccess(ctx, repo3, perm_model.AccessModeWrite, unit.TypeIssues) + users, err := GetUsersWithAnyUnitAccess(ctx, repo3, perm_model.AccessModeWrite, unit.TypeIssues) require.NoError(t, err) require.Len(t, users, 1) assert.Equal(t, user.ID, users[0].ID) diff --git a/routers/web/repo/setting/protected_branch.go b/routers/web/repo/setting/protected_branch.go index ffc36ca62c..e6a9506c93 100644 --- a/routers/web/repo/setting/protected_branch.go +++ b/routers/web/repo/setting/protected_branch.go @@ -74,7 +74,7 @@ func SettingsProtectedBranch(c *context.Context) { c.Data["PageIsSettingsBranches"] = true c.Data["Title"] = c.Locale.TrString("repo.settings.protected_branch") + " - " + rule.RuleName - users, err := access_model.GetUsersWithUnitAccess(c, c.Repo.Repository, perm.AccessModeRead, unit.TypePullRequests) + users, err := access_model.GetUsersWithAnyUnitAccess(c, c.Repo.Repository, perm.AccessModeRead, unit.TypeCode, unit.TypePullRequests) if err != nil { c.ServerError("GetUsersWithUnitAccess", err) return diff --git a/routers/web/repo/setting/protected_tag.go b/routers/web/repo/setting/protected_tag.go index 51e64149af..ba2a1af569 100644 --- a/routers/web/repo/setting/protected_tag.go +++ b/routers/web/repo/setting/protected_tag.go @@ -149,7 +149,7 @@ func setTagsContext(ctx *context.Context) error { } ctx.Data["ProtectedTags"] = protectedTags - users, err := access_model.GetUsersWithUnitAccess(ctx, ctx.Repo.Repository, perm.AccessModeRead, unit.TypePullRequests) + users, err := access_model.GetUsersWithAnyUnitAccess(ctx, ctx.Repo.Repository, perm.AccessModeRead, unit.TypeCode, unit.TypePullRequests) if err != nil { ctx.ServerError("GetUsersWithUnitAccess", err) return err diff --git a/services/convert/convert.go b/services/convert/convert.go index 3cdd49cd50..a702caca01 100644 --- a/services/convert/convert.go +++ b/services/convert/convert.go @@ -141,7 +141,7 @@ func getWhitelistEntities[T *user_model.User | *organization.Team](entities []T, // ToBranchProtection convert a ProtectedBranch to api.BranchProtection func ToBranchProtection(ctx context.Context, bp *git_model.ProtectedBranch, repo *repo_model.Repository) *api.BranchProtection { - readers, err := access_model.GetUsersWithUnitAccess(ctx, repo, perm.AccessModeRead, unit.TypePullRequests) + readers, err := access_model.GetUsersWithAnyUnitAccess(ctx, repo, perm.AccessModeRead, unit.TypeCode, unit.TypePullRequests) if err != nil { log.Error("GetRepoReaders: %v", err) } @@ -940,7 +940,7 @@ func ToAnnotatedTagObject(repo *repo_model.Repository, commit *git.Commit) *api. // ToTagProtection convert a git.ProtectedTag to an api.TagProtection func ToTagProtection(ctx context.Context, pt *git_model.ProtectedTag, repo *repo_model.Repository) *api.TagProtection { - readers, err := access_model.GetUsersWithUnitAccess(ctx, repo, perm.AccessModeRead, unit.TypePullRequests) + readers, err := access_model.GetUsersWithAnyUnitAccess(ctx, repo, perm.AccessModeRead, unit.TypeCode, unit.TypePullRequests) if err != nil { log.Error("GetRepoReaders: %v", err) } diff --git a/templates/repo/search_name.tmpl b/templates/repo/search_name.tmpl index 636c83330f..4c35d2fe6d 100644 --- a/templates/repo/search_name.tmpl +++ b/templates/repo/search_name.tmpl @@ -1 +1 @@ -{{.Name}} {{if .FullName}}({{.FullName}}){{end}} +{{.Name}} {{if .FullName}}({{.FullName}}){{end}} diff --git a/web_src/css/modules/dropdown.css b/web_src/css/modules/dropdown.css index 02957fe31d..459d9339e8 100644 --- a/web_src/css/modules/dropdown.css +++ b/web_src/css/modules/dropdown.css @@ -441,7 +441,6 @@ select.ui.dropdown { } .ui.multiple.dropdown > .label { - display: inline-block; white-space: normal; font-size: 1em; padding: 0.35714286em 0.78571429em; @@ -449,6 +448,11 @@ select.ui.dropdown { box-shadow: 0 0 0 1px var(--color-secondary) inset; } +.ui.multiple.dropdown > .label img { + width: auto; + max-height: 20px; +} + /* Text */ .ui.multiple.dropdown > .text { position: static; diff --git a/web_src/css/modules/label.css b/web_src/css/modules/label.css index afc5eaf7ae..4be3f32a7e 100644 --- a/web_src/css/modules/label.css +++ b/web_src/css/modules/label.css @@ -33,12 +33,6 @@ a.ui.label { opacity: 1; } -.ui.label > img { - width: auto; - vertical-align: middle; - height: 2.1666em; -} - .ui.label > .icon { width: auto; margin: 0 0.75em 0 0; diff --git a/web_src/css/repo.css b/web_src/css/repo.css index f1359c980c..0b6007e0e2 100644 --- a/web_src/css/repo.css +++ b/web_src/css/repo.css @@ -1836,10 +1836,14 @@ tbody.commit-list { align-items: center; max-width: 100%; /* min/max widths are for "gt-ellipsis", see the comment of other "flex-xxx" family classes */ min-width: 0; + overflow: hidden; } .username-display > .username-fullname { color: var(--color-text-light-2); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } #issue-pins { diff --git a/web_src/js/features/repo-issue-list.ts b/web_src/js/features/repo-issue-list.ts index fe835e0dc3..70283b9729 100644 --- a/web_src/js/features/repo-issue-list.ts +++ b/web_src/js/features/repo-issue-list.ts @@ -133,7 +133,7 @@ function initDropdownUserRemoteSearch(el: Element) { processedResults.length = 0; for (const item of resp.results) { const htmlAvatar = html``; - const htmlFullName = item.full_name ? html`(${item.full_name})` : ''; + const htmlFullName = item.full_name ? html`(${item.full_name})` : ''; const htmlItem = html`${htmlRaw(htmlAvatar)}${item.username}${htmlRaw(htmlFullName)}`; if (selectedUsername.toLowerCase() === item.username.toLowerCase()) selectedUsername = item.username; processedResults.push({value: item.username, name: htmlItem});