mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Improve tree not found page (#26570)
Before:  After:  In Github: https://github.com/yp05327/test/blob/main/test.drawio Updated: UI changed   --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		@@ -112,6 +112,7 @@ step2 = Step 2:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
error = Error
 | 
					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.
 | 
					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
 | 
					never = Never
 | 
				
			||||||
unknown = Unknown
 | 
					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>.
 | 
					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
 | 
					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 = Accept Transfer
 | 
				
			||||||
transfer.accept_desc =  Transfer to "%s"
 | 
					transfer.accept_desc =  Transfer to "%s"
 | 
				
			||||||
transfer.reject = Reject Transfer
 | 
					transfer.reject = Reject Transfer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,7 +70,7 @@ func RefBlame(ctx *context.Context) {
 | 
				
			|||||||
	// Get current entry user currently looking at.
 | 
						// Get current entry user currently looking at.
 | 
				
			||||||
	entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
						entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err)
 | 
							HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -123,7 +123,7 @@ func editFile(ctx *context.Context, isNewFile bool) {
 | 
				
			|||||||
	if !isNewFile {
 | 
						if !isNewFile {
 | 
				
			||||||
		entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
							entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.NotFoundOrServerError("GetTreeEntryByPath", git.IsErrNotExist, err)
 | 
								HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,9 +4,12 @@
 | 
				
			|||||||
package repo
 | 
					package repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"net/url"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/user"
 | 
						"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 {
 | 
					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
 | 
						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)
 | 
						tree, err := ctx.Repo.Commit.SubTree(ctx.Repo.TreePath)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.NotFoundOrServerError("Repo.Commit.SubTree", git.IsErrNotExist, err)
 | 
							HandleGitError(ctx, "Repo.Commit.SubTree", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	allEntries, err := tree.ListEntries()
 | 
						allEntries, err := tree.ListEntries()
 | 
				
			||||||
@@ -783,7 +783,7 @@ func LastCommit(ctx *context.Context) {
 | 
				
			|||||||
func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entries {
 | 
					func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entries {
 | 
				
			||||||
	tree, err := ctx.Repo.Commit.SubTree(ctx.Repo.TreePath)
 | 
						tree, err := ctx.Repo.Commit.SubTree(ctx.Repo.TreePath)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.NotFoundOrServerError("Repo.Commit.SubTree", git.IsErrNotExist, err)
 | 
							HandleGitError(ctx, "Repo.Commit.SubTree", err)
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -792,12 +792,12 @@ func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entri
 | 
				
			|||||||
	// Get current entry user currently looking at.
 | 
						// Get current entry user currently looking at.
 | 
				
			||||||
	entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
						entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err)
 | 
							HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err)
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !entry.IsDir() {
 | 
						if !entry.IsDir() {
 | 
				
			||||||
		ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err)
 | 
							HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err)
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -963,7 +963,7 @@ func renderCode(ctx *context.Context) {
 | 
				
			|||||||
	// Get current entry user currently looking at.
 | 
						// Get current entry user currently looking at.
 | 
				
			||||||
	entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
						entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.NotFoundOrServerError("Repo.Commit.GetTreeEntryByPath", git.IsErrNotExist, err)
 | 
							HandleGitError(ctx, "Repo.Commit.GetTreeEntryByPath", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,9 +3,11 @@
 | 
				
			|||||||
	{{if .IsRepo}}{{template "repo/header" .}}{{end}}
 | 
						{{if .IsRepo}}{{template "repo/header" .}}{{end}}
 | 
				
			||||||
	<div class="ui container center">
 | 
						<div class="ui container center">
 | 
				
			||||||
		<p style="margin-top: 100px"><img src="{{AssetUrlPrefix}}/img/404.png" alt="404"></p>
 | 
							<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>
 | 
							<div class="divider"></div>
 | 
				
			||||||
		<br>
 | 
							<br>
 | 
				
			||||||
		<p>{{ctx.Locale.Tr "error404" | Safe}}</p>
 | 
					 | 
				
			||||||
		{{if .ShowFooterVersion}}<p>{{ctx.Locale.Tr "admin.config.app_ver"}}: {{AppVer}}</p>{{end}}
 | 
							{{if .ShowFooterVersion}}<p>{{ctx.Locale.Tr "admin.config.app_ver"}}: {{AppVer}}</p>{{end}}
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user