diff --git a/routers/web/repo/setting/setting.go b/routers/web/repo/setting/setting.go index 5e7e33693d1..392c2e8527b 100644 --- a/routers/web/repo/setting/setting.go +++ b/routers/web/repo/setting/setting.go @@ -790,7 +790,7 @@ func handleSettingsPostConvert(ctx *context.Context) { form := web.GetForm[*forms.RepoSettingForm](ctx) repo := ctx.Repo.Repository - if repo.Name != form.RepoName { + if repo.FullName() != form.RepoName { ctx.JSONError(ctx.Tr("form.enterred_invalid_repo_name")) return } @@ -824,7 +824,7 @@ func handleSettingsPostConvertFork(ctx *context.Context) { ctx.ServerError("Convert Fork", err) return } - if repo.Name != form.RepoName { + if repo.FullName() != form.RepoName { ctx.JSONError(ctx.Tr("form.enterred_invalid_repo_name")) return } @@ -860,7 +860,7 @@ func handleSettingsPostTransfer(ctx *context.Context) { form := web.GetForm[*forms.RepoSettingForm](ctx) repo := ctx.Repo.Repository - if repo.Name != form.RepoName { + if repo.FullName() != form.RepoName { ctx.JSONError(ctx.Tr("form.enterred_invalid_repo_name")) return } @@ -951,7 +951,7 @@ func handleSettingsPostDelete(ctx *context.Context) { form := web.GetForm[*forms.RepoSettingForm](ctx) repo := ctx.Repo.Repository - if repo.Name != form.RepoName { + if repo.FullName() != form.RepoName { ctx.JSONError(ctx.Tr("form.enterred_invalid_repo_name")) return } @@ -977,7 +977,7 @@ func handleSettingsPostDeleteWiki(ctx *context.Context) { } form := web.GetForm[*forms.RepoSettingForm](ctx) repo := ctx.Repo.Repository - if repo.Name != form.RepoName { + if repo.FullName() != form.RepoName { ctx.JSONError(ctx.Tr("form.enterred_invalid_repo_name")) return } diff --git a/services/forms/repo_form.go b/services/forms/repo_form.go index cd7b94b7e2b..6bbdcccda18 100644 --- a/services/forms/repo_form.go +++ b/services/forms/repo_form.go @@ -79,7 +79,7 @@ type MigrateRepoForm struct { // RepoSettingForm form for changing repository settings type RepoSettingForm struct { middleware.FormDefaultValidator - RepoName string `binding:"Required;AlphaDashDot;MaxSize(100)"` + RepoName string `binding:"TrimSpace;Required;AlphaDashDot;MaxSize(100)"` Description string `binding:"MaxSize(2048)"` Website string `binding:"ValidUrl;MaxSize(1024)"` Interval string diff --git a/templates/repo/migrate/migrating.tmpl b/templates/repo/migrate/migrating.tmpl index f3254b97000..9d5f8d247c9 100644 --- a/templates/repo/migrate/migrating.tmpl +++ b/templates/repo/migrate/migrating.tmpl @@ -59,28 +59,13 @@
{{ctx.Locale.Tr "repo.settings.delete_notices_1"}}
{{ctx.Locale.Tr "repo.settings.delete_notices_2" .Repository.FullName}} - {{if .Repository.NumForks}}
- {{ctx.Locale.Tr "repo.settings.delete_notices_fork_1"}} - {{end}}
-
- -
- -
-
- - -
- -
- - -
-
+ {{template "repo/settings/dangerous_operation_form" (dict + "RepoFullName" .Repository.FullName + "RepoOperationLink" (print .Repository.Link "/settings") + "RepoOperationAction" "delete" + "RepoOperationText" (ctx.Locale.Tr "repo.settings.confirm_delete") + )}} diff --git a/templates/repo/settings/dangerous_operation_form.tmpl b/templates/repo/settings/dangerous_operation_form.tmpl new file mode 100644 index 00000000000..f2e8df83edc --- /dev/null +++ b/templates/repo/settings/dangerous_operation_form.tmpl @@ -0,0 +1,22 @@ +{{$repoFullName := .RepoFullName}} +{{$repoOperationLink := .RepoOperationLink}} +{{$repoOperationAction := .RepoOperationAction}} +{{$repoOperationText := .RepoOperationText}} +
+ +
+ +
+
+ + +
+ {{if eq $repoOperationAction "transfer"}} +
+ + +
+ {{end}} + {{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" $repoOperationText)}} +
+ diff --git a/templates/repo/settings/options.tmpl b/templates/repo/settings/options.tmpl index 4b1c013bbb7..f07cb1012b8 100644 --- a/templates/repo/settings/options.tmpl +++ b/templates/repo/settings/options.tmpl @@ -909,11 +909,12 @@
{{ctx.Locale.Tr "repo.settings.convert_notices_1"}}
-
- - {{template "repo/settings/repo_name_confirm_fields" (dict "RepoName" .Repository.Name)}} - {{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" (ctx.Locale.Tr "repo.settings.convert_confirm"))}} -
+ {{template "repo/settings/dangerous_operation_form" (dict + "RepoFullName" .Repository.FullName + "RepoOperationLink" .Link + "RepoOperationAction" "convert" + "RepoOperationText" (ctx.Locale.Tr "repo.settings.convert_confirm") + )}} {{end}} @@ -926,11 +927,12 @@
{{ctx.Locale.Tr "repo.settings.convert_fork_notices_1"}}
-
- - {{template "repo/settings/repo_name_confirm_fields" (dict "RepoName" .Repository.Name)}} - {{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" (ctx.Locale.Tr "repo.settings.convert_fork_confirm"))}} -
+ {{template "repo/settings/dangerous_operation_form" (dict + "RepoFullName" .Repository.FullName + "RepoOperationLink" .Link + "RepoOperationAction" "convert_fork" + "RepoOperationText" (ctx.Locale.Tr "repo.settings.convert_fork_confirm") + )}} {{end}} @@ -945,16 +947,12 @@ {{ctx.Locale.Tr "repo.settings.transfer_notices_3"}}
{{ctx.Locale.Tr "repo.settings.transfer_notices_4"}} -
- - {{template "repo/settings/repo_name_confirm_fields" (dict "RepoName" .Repository.Name)}} -
- - -
- - {{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" (ctx.Locale.Tr "repo.settings.transfer_perform"))}} -
+ {{template "repo/settings/dangerous_operation_form" (dict + "RepoFullName" .Repository.FullName + "RepoOperationLink" .Link + "RepoOperationAction" "transfer" + "RepoOperationText" (ctx.Locale.Tr "repo.settings.transfer_perform") + )}} @@ -970,11 +968,12 @@ {{ctx.Locale.Tr "repo.settings.delete_notices_fork_1"}} {{end}} -
- - {{template "repo/settings/repo_name_confirm_fields" (dict "RepoName" .Repository.Name)}} - {{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" (ctx.Locale.Tr "repo.settings.confirm_delete"))}} -
+ {{template "repo/settings/dangerous_operation_form" (dict + "RepoFullName" .Repository.FullName + "RepoOperationLink" .Link + "RepoOperationAction" "delete" + "RepoOperationText" (ctx.Locale.Tr "repo.settings.confirm_delete") + )}} @@ -1036,11 +1035,12 @@ {{ctx.Locale.Tr "repo.settings.delete_notices_1"}}
{{ctx.Locale.Tr "repo.settings.wiki_delete_notices_1" .Repository.Name}} -
- - {{template "repo/settings/repo_name_confirm_fields" (dict "RepoName" .Repository.Name)}} - {{template "base/modal_actions_confirm" (dict "ModalButtonDangerText" (ctx.Locale.Tr "repo.settings.confirm_wiki_delete"))}} -
+ {{template "repo/settings/dangerous_operation_form" (dict + "RepoFullName" .Repository.FullName + "RepoOperationLink" .Link + "RepoOperationAction" "delete-wiki" + "RepoOperationText" (ctx.Locale.Tr "repo.settings.confirm_wiki_delete") + )}} {{end}} diff --git a/templates/repo/settings/repo_name_confirm_fields.tmpl b/templates/repo/settings/repo_name_confirm_fields.tmpl deleted file mode 100644 index a8f9800e715..00000000000 --- a/templates/repo/settings/repo_name_confirm_fields.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
- -
-
- - -
diff --git a/tests/integration/editor_test.go b/tests/integration/editor_test.go index a3cfa372a09..fdfd9e844cc 100644 --- a/tests/integration/editor_test.go +++ b/tests/integration/editor_test.go @@ -388,7 +388,7 @@ func testForkToEditFile(t *testing.T, session *TestSession, user, owner, repo, b // Archive the repository req := NewRequestWithValues(t, "POST", "/"+path.Join(user, repo, "settings"), map[string]string{ - "repo_name": repo, + "repo_name": user + "/" + repo, "action": "archive", }, ) @@ -402,7 +402,7 @@ func testForkToEditFile(t *testing.T, session *TestSession, user, owner, repo, b // Unfork the repository req = NewRequestWithValues(t, "POST", "/"+path.Join(user, repo, "settings"), map[string]string{ - "repo_name": repo, + "repo_name": user + "/" + repo, "action": "convert_fork", }, ) diff --git a/tests/integration/pull_create_test.go b/tests/integration/pull_create_test.go index 7bc08a2b6dd..2ac677145b9 100644 --- a/tests/integration/pull_create_test.go +++ b/tests/integration/pull_create_test.go @@ -187,7 +187,7 @@ func testUIDeleteBranch(t *testing.T, session *TestSession, ownerName, repoName, func testDeleteRepository(t *testing.T, session *TestSession, ownerName, repoName string) { relURL := "/" + path.Join(ownerName, repoName, "settings") req := NewRequestWithValues(t, "POST", relURL+"?action=delete", map[string]string{ - "repo_name": repoName, + "repo_name": ownerName + "/" + repoName, }) resp := session.MakeRequest(t, req, http.StatusOK) assert.NotNil(t, test.ParseJSONRedirect(resp.Body.Bytes()).Redirect)