Before: ![before](https://github.com/go-gitea/gitea/assets/18380374/383822d5-7d77-4ec3-b49b-4ab1e8b167ce) After: ![after](https://github.com/go-gitea/gitea/assets/18380374/32afa0a3-fa05-4087-b96e-7d067f0ed756) In Github: https://github.com/yp05327/test/blob/main/test.drawio Updated: UI changed ![image](https://github.com/go-gitea/gitea/assets/18380374/41ed07ff-b815-4b4e-9779-5ab36b5f3980) ![image](https://github.com/go-gitea/gitea/assets/18380374/5d7b28d6-a2fc-4d4c-8d6d-d93f9c9a270b) --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>tags/v1.22.0-rc0
@@ -112,6 +112,7 @@ step2 = Step 2: | |||
error = Error | |||
error404 = The page you are trying to reach either <strong>does not exist</strong> or <strong>you are not authorized</strong> to view it. | |||
go_back = Go Back | |||
never = Never | |||
unknown = Unknown | |||
@@ -1014,6 +1015,10 @@ blame.ignore_revs = Ignoring revisions in <a href="%s">.git-blame-ignore-revs</a | |||
blame.ignore_revs.failed = Failed to ignore revisions in <a href="%s">.git-blame-ignore-revs</a>. | |||
author_search_tooltip = Shows a maximum of 30 users | |||
tree_path_not_found_commit = Path %[1]s doesn't exist in commit %[2]s | |||
tree_path_not_found_branch = Path %[1]s doesn't exist in branch %[2]s | |||
tree_path_not_found_tag = Path %[1]s doesn't exist in tag %[2]s | |||
transfer.accept = Accept Transfer | |||
transfer.accept_desc = Transfer to "%s" | |||
transfer.reject = Reject Transfer |
@@ -70,7 +70,7 @@ func RefBlame(ctx *context.Context) { | |||
// Get current entry user currently looking at. | |||
entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath) | |||
if err != nil { | |||
ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err) | |||
return | |||
} | |||
@@ -123,7 +123,7 @@ func editFile(ctx *context.Context, isNewFile bool) { | |||
if !isNewFile { | |||
entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath) | |||
if err != nil { | |||
ctx.NotFoundOrServerError("GetTreeEntryByPath", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err) | |||
return | |||
} | |||
@@ -4,9 +4,12 @@ | |||
package repo | |||
import ( | |||
"net/url" | |||
"sort" | |||
"code.gitea.io/gitea/models/user" | |||
"code.gitea.io/gitea/modules/context" | |||
"code.gitea.io/gitea/modules/git" | |||
) | |||
func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User { | |||
@@ -20,3 +23,22 @@ func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User { | |||
} | |||
return users | |||
} | |||
func HandleGitError(ctx *context.Context, msg string, err error) { | |||
if git.IsErrNotExist(err) { | |||
refType := "" | |||
switch { | |||
case ctx.Repo.IsViewBranch: | |||
refType = "branch" | |||
case ctx.Repo.IsViewTag: | |||
refType = "tag" | |||
case ctx.Repo.IsViewCommit: | |||
refType = "commit" | |||
} | |||
ctx.Data["NotFoundPrompt"] = ctx.Locale.Tr("repo.tree_path_not_found_"+refType, ctx.Repo.TreePath, url.PathEscape(ctx.Repo.RefName)) | |||
ctx.Data["NotFoundGoBackURL"] = ctx.Repo.RepoLink + "/src/" + refType + "/" + url.PathEscape(ctx.Repo.RefName) | |||
ctx.NotFound(msg, err) | |||
} else { | |||
ctx.ServerError(msg, err) | |||
} | |||
} |
@@ -692,7 +692,7 @@ func checkCitationFile(ctx *context.Context, entry *git.TreeEntry) { | |||
} | |||
tree, err := ctx.Repo.Commit.SubTree(ctx.Repo.TreePath) | |||
if err != nil { | |||
ctx.NotFoundOrServerError("Repo.Commit.SubTree", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.SubTree", err) | |||
return | |||
} | |||
allEntries, err := tree.ListEntries() | |||
@@ -783,7 +783,7 @@ func LastCommit(ctx *context.Context) { | |||
func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entries { | |||
tree, err := ctx.Repo.Commit.SubTree(ctx.Repo.TreePath) | |||
if err != nil { | |||
ctx.NotFoundOrServerError("Repo.Commit.SubTree", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.SubTree", err) | |||
return nil | |||
} | |||
@@ -792,12 +792,12 @@ func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entri | |||
// Get current entry user currently looking at. | |||
entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath) | |||
if err != nil { | |||
ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err) | |||
return nil | |||
} | |||
if !entry.IsDir() { | |||
ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err) | |||
return nil | |||
} | |||
@@ -963,7 +963,7 @@ func renderCode(ctx *context.Context) { | |||
// Get current entry user currently looking at. | |||
entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath) | |||
if err != nil { | |||
ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err) | |||
HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err) | |||
return | |||
} | |||
@@ -3,9 +3,11 @@ | |||
{{if .IsRepo}}{{template "repo/header" .}}{{end}} | |||
<div class="ui container center"> | |||
<p style="margin-top: 100px"><img src="{{AssetUrlPrefix}}/img/404.png" alt="404"></p> | |||
<p>{{if .NotFoundPrompt}}{{.NotFoundPrompt}}{{else}}{{ctx.Locale.Tr "error404" | Safe}}{{end}}</p> | |||
{{if .NotFoundGoBackURL}}<a class="ui button green" href="{{.NotFoundGoBackURL}}">{{ctx.Locale.Tr "go_back"}}</a>{{end}} | |||
<div class="divider"></div> | |||
<br> | |||
<p>{{ctx.Locale.Tr "error404" | Safe}}</p> | |||
{{if .ShowFooterVersion}}<p>{{ctx.Locale.Tr "admin.config.app_ver"}}: {{AppVer}}</p>{{end}} | |||
</div> | |||
</div> |