diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-06-22 23:30:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-22 23:30:47 +0800 |
commit | 228247511a165213f782487ad483ace9c0427657 (patch) | |
tree | 8fa8516b4e6e0a9f5572d5f6d16bd8799f2301bd | |
parent | 75b5be236a556822e053d3858b2564876c3c0e79 (diff) | |
download | gitea-228247511a165213f782487ad483ace9c0427657.tar.gz gitea-228247511a165213f782487ad483ace9c0427657.zip |
repo/editor: fix breadcrumb path cuts parent dirs (#3859) (#2032)
-rw-r--r-- | routers/repo/editor.go | 47 | ||||
-rw-r--r-- | templates/repo/editor/edit.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/editor/upload.tmpl | 2 |
3 files changed, 31 insertions, 20 deletions
diff --git a/routers/repo/editor.go b/routers/repo/editor.go index e84039064d..bb0475338d 100644 --- a/routers/repo/editor.go +++ b/routers/repo/editor.go @@ -40,6 +40,21 @@ func renderCommitRights(ctx *context.Context) bool { return canCommit } +// getParentTreeFields returns list of parent tree names and corresponding tree paths +// based on given tree path. +func getParentTreeFields(treePath string) (treeNames []string, treePaths []string) { + if len(treePath) == 0 { + return treeNames, treePaths + } + + treeNames = strings.Split(treePath, "/") + treePaths = make([]string, len(treeNames)) + for i := range treeNames { + treePaths[i] = strings.Join(treeNames[:i+1], "/") + } + return treeNames, treePaths +} + func editFile(ctx *context.Context, isNewFile bool) { ctx.Data["PageIsEdit"] = true ctx.Data["IsNewFile"] = isNewFile @@ -47,10 +62,7 @@ func editFile(ctx *context.Context, isNewFile bool) { ctx.Data["RequireSimpleMDE"] = true canCommit := renderCommitRights(ctx) - var treeNames []string - if len(ctx.Repo.TreePath) > 0 { - treeNames = strings.Split(ctx.Repo.TreePath, "/") - } + treeNames, treePaths := getParentTreeFields(ctx.Repo.TreePath) if !isNewFile { entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath) @@ -100,6 +112,7 @@ func editFile(ctx *context.Context, isNewFile bool) { } ctx.Data["TreeNames"] = treeNames + ctx.Data["TreePaths"] = treePaths ctx.Data["BranchLink"] = ctx.Repo.RepoLink + "/src/" + ctx.Repo.BranchName ctx.Data["commit_summary"] = "" ctx.Data["commit_message"] = "" @@ -146,14 +159,11 @@ func editFilePost(ctx *context.Context, form auth.EditRepoFileForm, isNewFile bo } form.TreePath = strings.Trim(form.TreePath, " /") - - var treeNames []string - if len(form.TreePath) > 0 { - treeNames = strings.Split(form.TreePath, "/") - } + treeNames, treePaths := getParentTreeFields(form.TreePath) ctx.Data["TreePath"] = form.TreePath ctx.Data["TreeNames"] = treeNames + ctx.Data["TreePaths"] = treePaths ctx.Data["BranchLink"] = ctx.Repo.RepoLink + "/src/" + branchName ctx.Data["FileContent"] = form.Content ctx.Data["commit_summary"] = form.CommitSummary @@ -428,13 +438,14 @@ func UploadFile(ctx *context.Context) { renderUploadSettings(ctx) canCommit := renderCommitRights(ctx) - // We must at least have one element for user to input. - treeNames := []string{""} - if len(ctx.Repo.TreePath) > 0 { - treeNames = strings.Split(ctx.Repo.TreePath, "/") + treeNames, treePaths := getParentTreeFields(ctx.Repo.TreePath) + if len(treeNames) == 0 { + // We must at least have one element for user to input. + treeNames = []string{""} } ctx.Data["TreeNames"] = treeNames + ctx.Data["TreePaths"] = treePaths ctx.Data["BranchLink"] = ctx.Repo.RepoLink + "/src/" + ctx.Repo.BranchName ctx.Data["commit_summary"] = "" ctx.Data["commit_message"] = "" @@ -462,15 +473,15 @@ func UploadFilePost(ctx *context.Context, form auth.UploadRepoFileForm) { } form.TreePath = strings.Trim(form.TreePath, " /") - - // We must at least have one element for user to input. - treeNames := []string{""} - if len(form.TreePath) > 0 { - treeNames = strings.Split(form.TreePath, "/") + treeNames, treePaths := getParentTreeFields(form.TreePath) + if len(treeNames) == 0 { + // We must at least have one element for user to input. + treeNames = []string{""} } ctx.Data["TreePath"] = form.TreePath ctx.Data["TreeNames"] = treeNames + ctx.Data["TreePaths"] = treePaths ctx.Data["BranchLink"] = ctx.Repo.RepoLink + "/src/" + branchName ctx.Data["commit_summary"] = form.CommitSummary ctx.Data["commit_message"] = form.CommitMessage diff --git a/templates/repo/editor/edit.tmpl b/templates/repo/editor/edit.tmpl index b189d4f299..64b09c3741 100644 --- a/templates/repo/editor/edit.tmpl +++ b/templates/repo/editor/edit.tmpl @@ -18,7 +18,7 @@ <input id="file-name" value="{{$v}}" placeholder="{{$.i18n.Tr "repo.editor.name_your_file"}}" data-ec-url-prefix="{{$.EditorconfigURLPrefix}}" required autofocus> <span class="octicon octicon-info poping up" data-content="{{$.i18n.Tr "repo.editor.filename_help"}}" data-position="bottom center" data-variation="tiny inverted"></span> {{else}} - <span class="section"><a href="{{EscapePound $.BranchLink}}/{{EscapePound $v}}">{{$v}}</a></span> + <span class="section"><a href="{{EscapePound $.BranchLink}}/{{index $.TreePaths $i | EscapePound}}">{{$v}}</a></span> {{end}} {{end}} <span>{{.i18n.Tr "repo.editor.or"}} <a href="{{EscapePound $.BranchLink}}{{if not .IsNewFile}}/{{EscapePound .TreePath}}{{end}}">{{.i18n.Tr "repo.editor.cancel_lower"}}</a></span> diff --git a/templates/repo/editor/upload.tmpl b/templates/repo/editor/upload.tmpl index e1192ef026..23fdc8bafc 100644 --- a/templates/repo/editor/upload.tmpl +++ b/templates/repo/editor/upload.tmpl @@ -17,7 +17,7 @@ <input type="text" id="file-name" value="{{$v}}" placeholder="{{$.i18n.Tr "repo.editor.add_subdir"}}" autofocus> <span class="octicon octicon-info poping up" data-content="{{$.i18n.Tr "repo.editor.filename_help"}}" data-position="bottom center" data-variation="tiny inverted"></span> {{else}} - <span class="section"><a href="{{EscapePound $.BranchLink}}/{{EscapePound $v}}">{{$v}}</a></span> + <span class="section"><a href="{{EscapePound $.BranchLink}}/{{index $.TreePaths $i | EscapePound}}">{{$v}}</a></span> {{end}} {{end}} <span>{{.i18n.Tr "repo.editor.or"}} <a href="{{EscapePound $.BranchLink}}{{if not .IsNewFile}}/{{EscapePound .TreePath}}{{end}}">{{.i18n.Tr "repo.editor.cancel_lower"}}</a></span> |