Skip to content

Commit edf1420

Browse files
author
Gusted
authored
Unify repo settings & show better error (#19828)
* Unify context data * Actually show invalid url in error
1 parent 3898fc5 commit edf1420

File tree

7 files changed

+18
-14
lines changed

7 files changed

+18
-14
lines changed

modules/web/middleware/binding.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func Validate(errs binding.Errors, data map[string]interface{}, f Form, l transl
128128
case binding.ERR_EMAIL:
129129
data["ErrorMsg"] = trName + l.Tr("form.email_error")
130130
case binding.ERR_URL:
131-
data["ErrorMsg"] = trName + l.Tr("form.url_error")
131+
data["ErrorMsg"] = trName + l.Tr("form.url_error", errs[0].Message)
132132
case binding.ERR_INCLUDE:
133133
data["ErrorMsg"] = trName + l.Tr("form.include_error", GetInclude(field))
134134
case validation.ErrGlobPattern:

options/locale/locale_en-US.ini

+1-1
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ size_error = ` must be size %s.`
443443
min_size_error = ` must contain at least %s characters.`
444444
max_size_error = ` must contain at most %s characters.`
445445
email_error = ` is not a valid email address.`
446-
url_error = ` is not a valid URL.`
446+
url_error = `'%s' is not a valid URL.`
447447
include_error = ` must contain substring '%s'.`
448448
glob_pattern_error = ` glob pattern is invalid: %s.`
449449
regex_pattern_error = ` regex pattern is invalid: %s.`

routers/web/repo/migrate.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func handleMigrateRemoteAddrError(ctx *context.Context, err error, tpl base.TplN
128128
case addrErr.IsProtocolInvalid:
129129
ctx.RenderWithErr(ctx.Tr("repo.mirror_address_protocol_invalid"), tpl, form)
130130
case addrErr.IsURLError:
131-
ctx.RenderWithErr(ctx.Tr("form.url_error"), tpl, form)
131+
ctx.RenderWithErr(ctx.Tr("form.url_error", addrErr.Host), tpl, form)
132132
case addrErr.IsPermissionDenied:
133133
if addrErr.LocalPath {
134134
ctx.RenderWithErr(ctx.Tr("repo.migrate.permission_denied"), tpl, form)
@@ -139,11 +139,11 @@ func handleMigrateRemoteAddrError(ctx *context.Context, err error, tpl base.TplN
139139
ctx.RenderWithErr(ctx.Tr("repo.migrate.invalid_local_path"), tpl, form)
140140
default:
141141
log.Error("Error whilst updating url: %v", err)
142-
ctx.RenderWithErr(ctx.Tr("form.url_error"), tpl, form)
142+
ctx.RenderWithErr(ctx.Tr("form.url_error", "unknown"), tpl, form)
143143
}
144144
} else {
145145
log.Error("Error whilst updating url: %v", err)
146-
ctx.RenderWithErr(ctx.Tr("form.url_error"), tpl, form)
146+
ctx.RenderWithErr(ctx.Tr("form.url_error", "unknown"), tpl, form)
147147
}
148148
}
149149

routers/web/repo/setting.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ const (
5757
tplProtectedBranch base.TplName = "repo/settings/protected_branch"
5858
)
5959

60-
// Settings show a repository's settings page
61-
func Settings(ctx *context.Context) {
60+
// SettingsCtxData is a middleware that sets all the general context data for the
61+
// settings template.
62+
func SettingsCtxData(ctx *context.Context) {
6263
ctx.Data["Title"] = ctx.Tr("repo.settings")
6364
ctx.Data["PageIsSettingsOptions"] = true
6465
ctx.Data["ForcePrivate"] = setting.Repository.ForcePrivate
@@ -94,15 +95,16 @@ func Settings(ctx *context.Context) {
9495
return
9596
}
9697
ctx.Data["PushMirrors"] = pushMirrors
98+
}
9799

100+
// Settings show a repository's settings page
101+
func Settings(ctx *context.Context) {
98102
ctx.HTML(http.StatusOK, tplSettingsOptions)
99103
}
100104

101105
// SettingsPost response for changes of a repository
102106
func SettingsPost(ctx *context.Context) {
103107
form := web.GetForm(ctx).(*forms.RepoSettingForm)
104-
ctx.Data["Title"] = ctx.Tr("repo.settings")
105-
ctx.Data["PageIsSettingsOptions"] = true
106108

107109
ctx.Data["ForcePrivate"] = setting.Repository.ForcePrivate
108110
ctx.Data["MirrorsEnabled"] = setting.Mirror.Enabled
@@ -827,7 +829,7 @@ func handleSettingRemoteAddrError(ctx *context.Context, err error, form *forms.R
827829
case addrErr.IsProtocolInvalid:
828830
ctx.RenderWithErr(ctx.Tr("repo.mirror_address_protocol_invalid"), tplSettingsOptions, form)
829831
case addrErr.IsURLError:
830-
ctx.RenderWithErr(ctx.Tr("form.url_error"), tplSettingsOptions, form)
832+
ctx.RenderWithErr(ctx.Tr("form.url_error", addrErr.Host), tplSettingsOptions, form)
831833
case addrErr.IsPermissionDenied:
832834
if addrErr.LocalPath {
833835
ctx.RenderWithErr(ctx.Tr("repo.migrate.permission_denied"), tplSettingsOptions, form)

routers/web/web.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -730,8 +730,10 @@ func RegisterRoutes(m *web.Route) {
730730

731731
m.Group("/{username}/{reponame}", func() {
732732
m.Group("/settings", func() {
733-
m.Combo("").Get(repo.Settings).
734-
Post(bindIgnErr(forms.RepoSettingForm{}), repo.SettingsPost)
733+
m.Group("", func() {
734+
m.Combo("").Get(repo.Settings).
735+
Post(bindIgnErr(forms.RepoSettingForm{}), repo.SettingsPost)
736+
}, repo.SettingsCtxData)
735737
m.Post("/avatar", bindIgnErr(forms.AvatarForm{}), repo.SettingsAvatar)
736738
m.Post("/avatar/delete", repo.SettingsDeleteAvatar)
737739

services/forms/repo_form.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func ParseRemoteAddr(remoteAddr, authUsername, authPassword string) (string, err
101101
strings.HasPrefix(remoteAddr, "git://") {
102102
u, err := url.Parse(remoteAddr)
103103
if err != nil {
104-
return "", &models.ErrInvalidCloneAddr{IsURLError: true}
104+
return "", &models.ErrInvalidCloneAddr{IsURLError: true, Host: remoteAddr}
105105
}
106106
if len(authUsername)+len(authPassword) > 0 {
107107
u.User = url.UserPassword(authUsername, authPassword)

services/migrations/migrate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func IsMigrateURLAllowed(remoteURL string, doer *user_model.User) error {
4444
// Remote address can be HTTP/HTTPS/Git URL or local path.
4545
u, err := url.Parse(remoteURL)
4646
if err != nil {
47-
return &models.ErrInvalidCloneAddr{IsURLError: true}
47+
return &models.ErrInvalidCloneAddr{IsURLError: true, Host: remoteURL}
4848
}
4949

5050
if u.Scheme == "file" || u.Scheme == "" {

0 commit comments

Comments
 (0)