"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>")
"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 {
"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"
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 {
"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"
// 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
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
.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 {
}
#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) {
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 {
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
});
});