I tripped over this strange method and I don't think we need that workaround to fix the value. old: ![grafik](https://github.com/go-gitea/gitea/assets/1666336/c8b6797b-eb45-4dec-99db-1b0649a34ec5) new: ![grafik](https://github.com/go-gitea/gitea/assets/1666336/ab1a65ae-de5b-4ce4-9813-3b8b39c7922e) --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>tags/v1.22.0-rc0
@@ -11,14 +11,6 @@ import ( | |||
"code.gitea.io/gitea/modules/setting" | |||
) | |||
// RemoveUsernameParameterSuffix returns the username parameter without the (fullname) suffix - leaving just the username | |||
func RemoveUsernameParameterSuffix(name string) string { | |||
if index := strings.Index(name, " ("); index >= 0 { | |||
name = name[:index] | |||
} | |||
return name | |||
} | |||
// SanitizeFlashErrorString will sanitize a flash error string | |||
func SanitizeFlashErrorString(x string) string { | |||
return strings.ReplaceAll(html.EscapeString(x), "\n", "<br>") |
@@ -11,12 +11,6 @@ import ( | |||
"github.com/stretchr/testify/assert" | |||
) | |||
func TestRemoveUsernameParameterSuffix(t *testing.T) { | |||
assert.Equal(t, "foobar", RemoveUsernameParameterSuffix("foobar (Foo Bar)")) | |||
assert.Equal(t, "foobar", RemoveUsernameParameterSuffix("foobar")) | |||
assert.Equal(t, "", RemoveUsernameParameterSuffix("")) | |||
} | |||
func TestIsExternalURL(t *testing.T) { | |||
setting.AppURL = "https://try.gitea.io/" | |||
type test struct { |
@@ -24,7 +24,6 @@ import ( | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/setting" | |||
"code.gitea.io/gitea/modules/web" | |||
"code.gitea.io/gitea/routers/utils" | |||
shared_user "code.gitea.io/gitea/routers/web/shared/user" | |||
"code.gitea.io/gitea/services/convert" | |||
"code.gitea.io/gitea/services/forms" | |||
@@ -127,7 +126,7 @@ func TeamsAction(ctx *context.Context) { | |||
ctx.Error(http.StatusNotFound) | |||
return | |||
} | |||
uname := utils.RemoveUsernameParameterSuffix(strings.ToLower(ctx.FormString("uname"))) | |||
uname := strings.ToLower(ctx.FormString("uname")) | |||
var u *user_model.User | |||
u, err = user_model.GetUserByName(ctx, uname) | |||
if err != nil { |
@@ -17,7 +17,6 @@ import ( | |||
"code.gitea.io/gitea/modules/log" | |||
repo_module "code.gitea.io/gitea/modules/repository" | |||
"code.gitea.io/gitea/modules/setting" | |||
"code.gitea.io/gitea/routers/utils" | |||
"code.gitea.io/gitea/services/mailer" | |||
org_service "code.gitea.io/gitea/services/org" | |||
repo_service "code.gitea.io/gitea/services/repository" | |||
@@ -52,7 +51,7 @@ func Collaboration(ctx *context.Context) { | |||
// CollaborationPost response for actions for a collaboration of a repository | |||
func CollaborationPost(ctx *context.Context) { | |||
name := utils.RemoveUsernameParameterSuffix(strings.ToLower(ctx.FormString("collaborator"))) | |||
name := strings.ToLower(ctx.FormString("collaborator")) | |||
if len(name) == 0 || ctx.Repo.Owner.LowerName == name { | |||
ctx.Redirect(setting.AppSubURL + ctx.Req.URL.EscapedPath()) | |||
return | |||
@@ -144,7 +143,7 @@ func AddTeamPost(ctx *context.Context) { | |||
return | |||
} | |||
name := utils.RemoveUsernameParameterSuffix(strings.ToLower(ctx.FormString("team"))) | |||
name := strings.ToLower(ctx.FormString("team")) | |||
if len(name) == 0 { | |||
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration") | |||
return |
@@ -196,10 +196,14 @@ a.label, | |||
.ui.search > .results { | |||
background: var(--color-body); | |||
border-color: var(--color-secondary); | |||
overflow-wrap: anywhere; /* allow text to wrap as fomantic limits this to 18em width */ | |||
} | |||
.ui.search > .results .result { | |||
background: var(--color-body); | |||
border-color: var(--color-secondary); | |||
display: flex; | |||
align-items: center; | |||
} | |||
.ui.search > .results .result .title { |
@@ -2128,14 +2128,16 @@ | |||
} | |||
#search-user-box .results .result .image { | |||
float: left; | |||
margin-right: 8px; | |||
order: 0; | |||
margin-right: 12px; | |||
width: 2em; | |||
height: 2em; | |||
min-width: 2em; | |||
min-height: 2em; | |||
} | |||
#search-user-box .results .result .content { | |||
margin: 6px 0; /* this trick is used to align with the sibling avatar image */ | |||
margin: 0; /* remove margin reserved for avatar because we move it to left via `order: 0` */ | |||
} | |||
.ui.menu .item > img:not(.ui) { |
@@ -17,14 +17,13 @@ export function initCompSearchUserBox() { | |||
const searchQuery = $searchUserBox.find('input').val(); | |||
const searchQueryUppercase = searchQuery.toUpperCase(); | |||
$.each(response.data, (_i, item) => { | |||
let title = item.login; | |||
if (item.full_name && item.full_name.length > 0) { | |||
title += ` (${htmlEscape(item.full_name)})`; | |||
} | |||
const resultItem = { | |||
title, | |||
title: item.login, | |||
image: item.avatar_url | |||
}; | |||
if (item.full_name) { | |||
resultItem.description = htmlEscape(item.full_name); | |||
} | |||
if (searchQueryUppercase === item.login.toUpperCase()) { | |||
items.unshift(resultItem); | |||
} else { |
@@ -52,9 +52,9 @@ export function initRepoSettingSearchTeamBox() { | |||
onResponse(response) { | |||
const items = []; | |||
$.each(response.data, (_i, item) => { | |||
const title = `${item.name} (${item.permission} access)`; | |||
items.push({ | |||
title, | |||
title: item.name, | |||
description: `${item.permission} access` // TODO: translate this string | |||
}); | |||
}); | |||