mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 03:14:29 +01:00 
			
		
		
		
	fix
This commit is contained in:
		
						commit
						20198ea5a2
					
				| @ -193,11 +193,11 @@ func CreateBranch(ctx *context.Context) { | |||||||
| 
 | 
 | ||||||
| 	if form.CreateTag { | 	if form.CreateTag { | ||||||
| 		target := ctx.Repo.CommitID | 		target := ctx.Repo.CommitID | ||||||
| 		if ctx.Repo.IsViewBranch { | 		if ctx.Repo.RefFullName.IsBranch() { | ||||||
| 			target = ctx.Repo.BranchName | 			target = ctx.Repo.BranchName | ||||||
| 		} | 		} | ||||||
| 		err = release_service.CreateNewTag(ctx, ctx.Doer, ctx.Repo.Repository, target, form.NewBranchName, "") | 		err = release_service.CreateNewTag(ctx, ctx.Doer, ctx.Repo.Repository, target, form.NewBranchName, "") | ||||||
| 	} else if ctx.Repo.IsViewBranch { | 	} else if ctx.Repo.RefFullName.IsBranch() { | ||||||
| 		err = repo_service.CreateNewBranch(ctx, ctx.Doer, ctx.Repo.Repository, ctx.Repo.GitRepo, ctx.Repo.BranchName, form.NewBranchName) | 		err = repo_service.CreateNewBranch(ctx, ctx.Doer, ctx.Repo.Repository, ctx.Repo.GitRepo, ctx.Repo.BranchName, form.NewBranchName) | ||||||
| 	} else { | 	} else { | ||||||
| 		err = repo_service.CreateNewBranchFromCommit(ctx, ctx.Doer, ctx.Repo.Repository, ctx.Repo.GitRepo, ctx.Repo.CommitID, form.NewBranchName) | 		err = repo_service.CreateNewBranchFromCommit(ctx, ctx.Doer, ctx.Repo.Repository, ctx.Repo.GitRepo, ctx.Repo.CommitID, form.NewBranchName) | ||||||
|  | |||||||
| @ -390,12 +390,6 @@ func Diff(ctx *context.Context) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ctx.Data["BranchName"], err = commit.GetBranchName() |  | ||||||
| 	if err != nil { |  | ||||||
| 		ctx.ServerError("commit.GetBranchName", err) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ctx.HTML(http.StatusOK, tplCommitPage) | 	ctx.HTML(http.StatusOK, tplCommitPage) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -148,8 +148,6 @@ func getReleaseInfos(ctx *context.Context, opts *repo_model.FindReleasesOptions) | |||||||
| func Releases(ctx *context.Context) { | func Releases(ctx *context.Context) { | ||||||
| 	ctx.Data["PageIsReleaseList"] = true | 	ctx.Data["PageIsReleaseList"] = true | ||||||
| 	ctx.Data["Title"] = ctx.Tr("repo.release.releases") | 	ctx.Data["Title"] = ctx.Tr("repo.release.releases") | ||||||
| 	ctx.Data["IsViewBranch"] = false |  | ||||||
| 	ctx.Data["IsViewTag"] = true |  | ||||||
| 
 | 
 | ||||||
| 	listOptions := db.ListOptions{ | 	listOptions := db.ListOptions{ | ||||||
| 		Page:     ctx.FormInt("page"), | 		Page:     ctx.FormInt("page"), | ||||||
| @ -194,8 +192,6 @@ func Releases(ctx *context.Context) { | |||||||
| func TagsList(ctx *context.Context) { | func TagsList(ctx *context.Context) { | ||||||
| 	ctx.Data["PageIsTagList"] = true | 	ctx.Data["PageIsTagList"] = true | ||||||
| 	ctx.Data["Title"] = ctx.Tr("repo.release.tags") | 	ctx.Data["Title"] = ctx.Tr("repo.release.tags") | ||||||
| 	ctx.Data["IsViewBranch"] = false |  | ||||||
| 	ctx.Data["IsViewTag"] = true |  | ||||||
| 	ctx.Data["CanCreateRelease"] = ctx.Repo.CanWrite(unit.TypeReleases) && !ctx.Repo.Repository.IsArchived | 	ctx.Data["CanCreateRelease"] = ctx.Repo.CanWrite(unit.TypeReleases) && !ctx.Repo.Repository.IsArchived | ||||||
| 
 | 
 | ||||||
| 	namePattern := ctx.FormTrim("q") | 	namePattern := ctx.FormTrim("q") | ||||||
|  | |||||||
| @ -232,7 +232,7 @@ func prepareToRenderFile(ctx *context.Context, entry *git.TreeEntry) { | |||||||
| 					ctx.Data["CanEditFile"] = true | 					ctx.Data["CanEditFile"] = true | ||||||
| 					ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.edit_this_file") | 					ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.edit_this_file") | ||||||
| 				} | 				} | ||||||
| 			} else if !ctx.Repo.IsViewBranch { | 			} else if !ctx.Repo.RefFullName.IsBranch() { | ||||||
| 				ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.must_be_on_a_branch") | 				ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.must_be_on_a_branch") | ||||||
| 			} else if !ctx.Repo.CanWriteToBranch(ctx, ctx.Doer, ctx.Repo.BranchName) { | 			} else if !ctx.Repo.CanWriteToBranch(ctx, ctx.Doer, ctx.Repo.BranchName) { | ||||||
| 				ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.fork_before_edit") | 				ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.fork_before_edit") | ||||||
| @ -305,7 +305,7 @@ func prepareToRenderFile(ctx *context.Context, entry *git.TreeEntry) { | |||||||
| 			ctx.Data["CanDeleteFile"] = true | 			ctx.Data["CanDeleteFile"] = true | ||||||
| 			ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.delete_this_file") | 			ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.delete_this_file") | ||||||
| 		} | 		} | ||||||
| 	} else if !ctx.Repo.IsViewBranch { | 	} else if !ctx.Repo.RefFullName.IsBranch() { | ||||||
| 		ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.must_be_on_a_branch") | 		ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.must_be_on_a_branch") | ||||||
| 	} else if !ctx.Repo.CanWriteToBranch(ctx, ctx.Doer, ctx.Repo.BranchName) { | 	} else if !ctx.Repo.CanWriteToBranch(ctx, ctx.Doer, ctx.Repo.BranchName) { | ||||||
| 		ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.must_have_write_access") | 		ctx.Data["DeleteFileTooltip"] = ctx.Tr("repo.editor.must_have_write_access") | ||||||
|  | |||||||
| @ -180,7 +180,7 @@ func prepareHomeSidebarLatestRelease(ctx *context.Context) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func prepareUpstreamDivergingInfo(ctx *context.Context) { | func prepareUpstreamDivergingInfo(ctx *context.Context) { | ||||||
| 	if !ctx.Repo.Repository.IsFork || !ctx.Repo.IsViewBranch || ctx.Repo.TreePath != "" { | 	if !ctx.Repo.Repository.IsFork || !ctx.Repo.RefFullName.IsBranch() || ctx.Repo.TreePath != "" { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	upstreamDivergingInfo, err := repo_service.GetUpstreamDivergingInfo(ctx, ctx.Repo.Repository, ctx.Repo.BranchName) | 	upstreamDivergingInfo, err := repo_service.GetUpstreamDivergingInfo(ctx, ctx.Repo.Repository, ctx.Repo.BranchName) | ||||||
|  | |||||||
| @ -53,20 +53,15 @@ type Repository struct { | |||||||
| 	RepoLink string | 	RepoLink string | ||||||
| 	GitRepo  *git.Repository | 	GitRepo  *git.Repository | ||||||
| 
 | 
 | ||||||
| 	// these fields indicate the current ref type, for example: ".../src/branch/master" means IsViewBranch=true | 	// RefFullName is the full ref name that the user is viewing | ||||||
| 	IsViewBranch bool |  | ||||||
| 	IsViewTag    bool |  | ||||||
| 	IsViewCommit bool |  | ||||||
| 
 |  | ||||||
| 	RefFullName git.RefName | 	RefFullName git.RefName | ||||||
| 	BranchName  string | 	BranchName  string // it is the RefFullName's short name if its type is "branch" | ||||||
| 	TagName     string | 	TagName     string // it is the RefFullName's short name if its type is "tag" | ||||||
| 	TreePath    string | 	TreePath    string | ||||||
| 
 | 
 | ||||||
| 	// Commit it is always set to the commit for the branch or tag | 	// Commit it is always set to the commit for the branch or tag, or just the commit that the user is viewing | ||||||
| 	Commit   *git.Commit | 	Commit       *git.Commit | ||||||
| 	CommitID string | 	CommitID     string | ||||||
| 
 |  | ||||||
| 	CommitsCount int64 | 	CommitsCount int64 | ||||||
| 
 | 
 | ||||||
| 	PullRequest *PullRequest | 	PullRequest *PullRequest | ||||||
| @ -79,7 +74,7 @@ func (r *Repository) CanWriteToBranch(ctx context.Context, user *user_model.User | |||||||
| 
 | 
 | ||||||
| // CanEnableEditor returns true if repository is editable and user has proper access level. | // CanEnableEditor returns true if repository is editable and user has proper access level. | ||||||
| func (r *Repository) CanEnableEditor(ctx context.Context, user *user_model.User) bool { | func (r *Repository) CanEnableEditor(ctx context.Context, user *user_model.User) bool { | ||||||
| 	return r.IsViewBranch && r.CanWriteToBranch(ctx, user, r.BranchName) && r.Repository.CanEnableEditor() && !r.Repository.IsArchived | 	return r.RefFullName.IsBranch() && r.CanWriteToBranch(ctx, user, r.BranchName) && r.Repository.CanEnableEditor() && !r.Repository.IsArchived | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // CanCreateBranch returns true if repository is editable and user has proper access level. | // CanCreateBranch returns true if repository is editable and user has proper access level. | ||||||
| @ -174,15 +169,9 @@ func (r *Repository) GetCommitsCount() (int64, error) { | |||||||
| 	if r.Commit == nil { | 	if r.Commit == nil { | ||||||
| 		return 0, nil | 		return 0, nil | ||||||
| 	} | 	} | ||||||
| 	var contextName string | 	contextName := r.RefFullName.ShortName() | ||||||
| 	if r.IsViewBranch { | 	isRef := r.RefFullName.IsBranch() || r.RefFullName.IsTag() | ||||||
| 		contextName = r.BranchName | 	return cache.GetInt64(r.Repository.GetCommitsCountCacheKey(contextName, isRef), func() (int64, error) { | ||||||
| 	} else if r.IsViewTag { |  | ||||||
| 		contextName = r.TagName |  | ||||||
| 	} else { |  | ||||||
| 		contextName = r.CommitID |  | ||||||
| 	} |  | ||||||
| 	return cache.GetInt64(r.Repository.GetCommitsCountCacheKey(contextName, r.IsViewBranch || r.IsViewTag), func() (int64, error) { |  | ||||||
| 		return r.Commit.CommitsCount() | 		return r.Commit.CommitsCount() | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
| @ -798,7 +787,6 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { | |||||||
| 		// Empty repository does not have reference information. | 		// Empty repository does not have reference information. | ||||||
| 		if ctx.Repo.Repository.IsEmpty { | 		if ctx.Repo.Repository.IsEmpty { | ||||||
| 			// assume the user is viewing the (non-existent) default branch | 			// assume the user is viewing the (non-existent) default branch | ||||||
| 			ctx.Repo.IsViewBranch = true |  | ||||||
| 			ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch | 			ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch | ||||||
| 			ctx.Repo.RefFullName = git.RefNameFromBranch(ctx.Repo.BranchName) | 			ctx.Repo.RefFullName = git.RefNameFromBranch(ctx.Repo.BranchName) | ||||||
| 			// these variables are used by the template to "add/upload" new files | 			// these variables are used by the template to "add/upload" new files | ||||||
| @ -834,7 +822,6 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { | |||||||
| 				ctx.ServerError("GetBranchCommit", err) | 				ctx.ServerError("GetBranchCommit", err) | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 			ctx.Repo.IsViewBranch = true |  | ||||||
| 		} else { // there is a path in request | 		} else { // there is a path in request | ||||||
| 			guessLegacyPath := refType == "" | 			guessLegacyPath := refType == "" | ||||||
| 			if guessLegacyPath { | 			if guessLegacyPath { | ||||||
| @ -853,7 +840,6 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { | |||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			if refType == git.RefTypeBranch && ctx.Repo.GitRepo.IsBranchExist(refShortName) { | 			if refType == git.RefTypeBranch && ctx.Repo.GitRepo.IsBranchExist(refShortName) { | ||||||
| 				ctx.Repo.IsViewBranch = true |  | ||||||
| 				ctx.Repo.BranchName = refShortName | 				ctx.Repo.BranchName = refShortName | ||||||
| 				ctx.Repo.RefFullName = git.RefNameFromBranch(refShortName) | 				ctx.Repo.RefFullName = git.RefNameFromBranch(refShortName) | ||||||
| 
 | 
 | ||||||
| @ -864,7 +850,6 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { | |||||||
| 				} | 				} | ||||||
| 				ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() | 				ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() | ||||||
| 			} else if refType == git.RefTypeTag && ctx.Repo.GitRepo.IsTagExist(refShortName) { | 			} else if refType == git.RefTypeTag && ctx.Repo.GitRepo.IsTagExist(refShortName) { | ||||||
| 				ctx.Repo.IsViewTag = true |  | ||||||
| 				ctx.Repo.RefFullName = git.RefNameFromTag(refShortName) | 				ctx.Repo.RefFullName = git.RefNameFromTag(refShortName) | ||||||
| 				ctx.Repo.TagName = refShortName | 				ctx.Repo.TagName = refShortName | ||||||
| 
 | 
 | ||||||
| @ -879,7 +864,6 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { | |||||||
| 				} | 				} | ||||||
| 				ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() | 				ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() | ||||||
| 			} else if git.IsStringLikelyCommitID(ctx.Repo.GetObjectFormat(), refShortName, 7) { | 			} else if git.IsStringLikelyCommitID(ctx.Repo.GetObjectFormat(), refShortName, 7) { | ||||||
| 				ctx.Repo.IsViewCommit = true |  | ||||||
| 				ctx.Repo.RefFullName = git.RefNameFromCommit(refShortName) | 				ctx.Repo.RefFullName = git.RefNameFromCommit(refShortName) | ||||||
| 				ctx.Repo.CommitID = refShortName | 				ctx.Repo.CommitID = refShortName | ||||||
| 
 | 
 | ||||||
| @ -915,13 +899,10 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { | |||||||
| 		ctx.Data["RefTypeNameSubURL"] = ctx.Repo.RefTypeNameSubURL() | 		ctx.Data["RefTypeNameSubURL"] = ctx.Repo.RefTypeNameSubURL() | ||||||
| 		ctx.Data["TreePath"] = ctx.Repo.TreePath | 		ctx.Data["TreePath"] = ctx.Repo.TreePath | ||||||
| 
 | 
 | ||||||
| 		ctx.Data["IsViewBranch"] = ctx.Repo.IsViewBranch |  | ||||||
| 		ctx.Data["BranchName"] = ctx.Repo.BranchName | 		ctx.Data["BranchName"] = ctx.Repo.BranchName | ||||||
| 
 | 
 | ||||||
| 		ctx.Data["IsViewTag"] = ctx.Repo.IsViewTag |  | ||||||
| 		ctx.Data["TagName"] = ctx.Repo.TagName | 		ctx.Data["TagName"] = ctx.Repo.TagName | ||||||
| 
 | 
 | ||||||
| 		ctx.Data["IsViewCommit"] = ctx.Repo.IsViewCommit |  | ||||||
| 		ctx.Data["CommitID"] = ctx.Repo.CommitID | 		ctx.Data["CommitID"] = ctx.Repo.CommitID | ||||||
| 
 | 
 | ||||||
| 		ctx.Data["CanCreateBranch"] = ctx.Repo.CanCreateBranch() // only used by the branch selector dropdown: AllowCreateNewRef | 		ctx.Data["CanCreateBranch"] = ctx.Repo.CanCreateBranch() // only used by the branch selector dropdown: AllowCreateNewRef | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ | |||||||
| 		<div class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap"> | 		<div class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap"> | ||||||
| 			<div class="ui buttons"> | 			<div class="ui buttons"> | ||||||
| 				<a class="ui tiny button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a> | 				<a class="ui tiny button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a> | ||||||
| 				{{if not .IsViewCommit}} | 				{{if or .RefFullName.IsBranch .RefFullName.IsTag}} | ||||||
| 					<a class="ui tiny button" href="{{.RepoLink}}/src/commit/{{.CommitID | PathEscape}}/{{.TreePath | PathEscapeSegments}}">{{ctx.Locale.Tr "repo.file_permalink"}}</a> | 					<a class="ui tiny button" href="{{.RepoLink}}/src/commit/{{.CommitID | PathEscape}}/{{.TreePath | PathEscapeSegments}}">{{ctx.Locale.Tr "repo.file_permalink"}}</a> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 				<a class="ui tiny button" href="{{.RepoLink}}/src/{{.RefTypeNameSubURL}}/{{.TreePath | PathEscapeSegments}}">{{ctx.Locale.Tr "repo.normal_view"}}</a> | 				<a class="ui tiny button" href="{{.RepoLink}}/src/{{.RefTypeNameSubURL}}/{{.TreePath | PathEscapeSegments}}">{{ctx.Locale.Tr "repo.normal_view"}}</a> | ||||||
|  | |||||||
| @ -54,13 +54,11 @@ | |||||||
| 											<p id="cherry-pick-content" class="branch-dropdown"></p> | 											<p id="cherry-pick-content" class="branch-dropdown"></p> | ||||||
| 
 | 
 | ||||||
| 											<form method="get"> | 											<form method="get"> | ||||||
| 												{{/*FIXME: CurrentRefShortName seems not making sense here (old code), |  | ||||||
| 												because the "commit page" has no "$.BranchName" info, so only using DefaultBranch should be enough */}} |  | ||||||
| 												{{template "repo/branch_dropdown" dict | 												{{template "repo/branch_dropdown" dict | ||||||
| 													"Repository" .Repository | 													"Repository" .Repository | ||||||
| 													"ShowTabBranches" true | 													"ShowTabBranches" true | ||||||
| 													"CurrentRefType" "branch" | 													"CurrentRefType" "branch" | ||||||
| 													"CurrentRefShortName" (or $.BranchName $.Repository.DefaultBranch) | 													"CurrentRefShortName" $.Repository.DefaultBranch | ||||||
| 													"RefFormActionTemplate" (print "{RepoLink}/_cherrypick/" .CommitID "/{RefShortName}") | 													"RefFormActionTemplate" (print "{RepoLink}/_cherrypick/" .CommitID "/{RefShortName}") | ||||||
| 												}} | 												}} | ||||||
| 												<input type="hidden" id="cherry-pick-type" name="cherry-pick-type"><br> | 												<input type="hidden" id="cherry-pick-type" name="cherry-pick-type"><br> | ||||||
|  | |||||||
| @ -5,24 +5,13 @@ | |||||||
| 		{{template "repo/sub_menu" .}} | 		{{template "repo/sub_menu" .}} | ||||||
| 		<div class="repo-button-row"> | 		<div class="repo-button-row"> | ||||||
| 			<div class="repo-button-row-left"> | 			<div class="repo-button-row-left"> | ||||||
| 				{{- /* for /owner/repo/commits/branch/the-name */ -}} | 				{{- /* for /owner/repo/commits/{RefType}/{RefShortName} */ -}} | ||||||
| 				{{- $branchDropdownCurrentRefType := "branch" -}} |  | ||||||
| 				{{- $branchDropdownCurrentRefShortName := .BranchName -}} |  | ||||||
| 				{{- if .IsViewTag -}} |  | ||||||
| 					{{- /* for /owner/repo/commits/tag/the-name */ -}} |  | ||||||
| 					{{- $branchDropdownCurrentRefType = "tag" -}} |  | ||||||
| 					{{- $branchDropdownCurrentRefShortName = .TagName -}} |  | ||||||
| 				{{- else if .IsViewCommit -}} |  | ||||||
| 					{{- /* for /owner/repo/commits/commit/000000 */ -}} |  | ||||||
| 					{{- $branchDropdownCurrentRefType = "commit" -}} |  | ||||||
| 					{{- $branchDropdownCurrentRefShortName = ShortSha .CommitID -}} |  | ||||||
| 				{{- end -}} |  | ||||||
| 				{{- template "repo/branch_dropdown" dict | 				{{- template "repo/branch_dropdown" dict | ||||||
| 					"Repository" .Repository | 					"Repository" .Repository | ||||||
| 					"ShowTabBranches" true | 					"ShowTabBranches" true | ||||||
| 					"ShowTabTags" true | 					"ShowTabTags" true | ||||||
| 					"CurrentRefType" $branchDropdownCurrentRefType | 					"CurrentRefType" .RefFullName.RefType | ||||||
| 					"CurrentRefShortName" $branchDropdownCurrentRefShortName | 					"CurrentRefShortName" .RefFullName.ShortName | ||||||
| 					"CurrentTreePath" .TreePath | 					"CurrentTreePath" .TreePath | ||||||
| 					"RefLinkTemplate" "{RepoLink}/commits/{RefType}/{RefShortName}/{TreePath}" | 					"RefLinkTemplate" "{RepoLink}/commits/{RefType}/{RefShortName}/{TreePath}" | ||||||
| 					"AllowCreateNewRef" .CanCreateBranch | 					"AllowCreateNewRef" .CanCreateBranch | ||||||
|  | |||||||
| @ -13,65 +13,65 @@ | |||||||
| 			</button> | 			</button> | ||||||
| 		{{end}} | 		{{end}} | ||||||
| 		{{template "repo/home_branch_dropdown" (dict "ctxData" .)}} | 		{{template "repo/home_branch_dropdown" (dict "ctxData" .)}} | ||||||
| 		{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}} | 		{{if and .CanCompareOrPull .RefFullName.IsBranch (not .Repository.IsArchived)}} | ||||||
| 			{{$cmpBranch := ""}} | 		{{$cmpBranch := ""}} | ||||||
| 			{{if ne .Repository.ID .BaseRepo.ID}} | 		{{if ne .Repository.ID .BaseRepo.ID}} | ||||||
| 				{{$cmpBranch = printf "%s/%s:" (.Repository.OwnerName|PathEscape) (.Repository.Name|PathEscape)}} | 			{{$cmpBranch = printf "%s/%s:" (.Repository.OwnerName|PathEscape) (.Repository.Name|PathEscape)}} | ||||||
| 			{{end}} |  | ||||||
| 			{{$cmpBranch = print $cmpBranch (.BranchName|PathEscapeSegments)}} |  | ||||||
| 			{{$compareLink := printf "%s/compare/%s...%s" .BaseRepo.Link (.BaseRepo.DefaultBranch|PathEscapeSegments) $cmpBranch}} |  | ||||||
| 			<a id="new-pull-request" role="button" class="ui compact basic button" href="{{$compareLink}}" |  | ||||||
| 				data-tooltip-content="{{if .PullRequestCtx.Allowed}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}"> |  | ||||||
| 				{{svg "octicon-git-pull-request"}} |  | ||||||
| 			</a> |  | ||||||
| 		{{end}} | 		{{end}} | ||||||
|  | 		{{$cmpBranch = print $cmpBranch (.BranchName|PathEscapeSegments)}} | ||||||
|  | 		{{$compareLink := printf "%s/compare/%s...%s" .BaseRepo.Link (.BaseRepo.DefaultBranch|PathEscapeSegments) $cmpBranch}} | ||||||
|  | 		<a id="new-pull-request" role="button" class="ui compact basic button" href="{{$compareLink}}" | ||||||
|  | 			data-tooltip-content="{{if .PullRequestCtx.Allowed}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}"> | ||||||
|  | 			{{svg "octicon-git-pull-request"}} | ||||||
|  | 		</a> | ||||||
|  | 	{{end}} | ||||||
| 
 | 
 | ||||||
| 		<!-- Show go to file if on home page --> | 	<!-- Show go to file if on home page --> | ||||||
| 		{{if $isTreePathRoot}} | 	{{if $isTreePathRoot}} | ||||||
| 			<a href="{{.Repository.Link}}/find/{{.RefTypeNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a> | 		<a href="{{.Repository.Link}}/find/{{.RefTypeNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a> | ||||||
| 		{{end}} | 	{{end}} | ||||||
| 
 | 
 | ||||||
| 		{{if and .CanWriteCode .IsViewBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}} | 	{{if and .CanWriteCode .RefFullName.IsBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}} | ||||||
| 			<button class="ui dropdown basic compact jump button"{{if not .Repository.CanEnableEditor}} disabled{{end}}> | 		<button class="ui dropdown basic compact jump button"{{if not .Repository.CanEnableEditor}} disabled{{end}}> | ||||||
| 				{{ctx.Locale.Tr "repo.editor.add_file"}} | 			{{ctx.Locale.Tr "repo.editor.add_file"}} | ||||||
| 				{{svg "octicon-triangle-down" 14 "dropdown icon"}} | 			{{svg "octicon-triangle-down" 14 "dropdown icon"}} | ||||||
| 				<div class="menu"> | 			<div class="menu"> | ||||||
| 					<a class="item" href="{{.RepoLink}}/_new/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}"> | 				<a class="item" href="{{.RepoLink}}/_new/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}"> | ||||||
| 						{{ctx.Locale.Tr "repo.editor.new_file"}} | 					{{ctx.Locale.Tr "repo.editor.new_file"}} | ||||||
| 					</a> | 				</a> | ||||||
| 					{{if .RepositoryUploadEnabled}} | 				{{if .RepositoryUploadEnabled}} | ||||||
| 					<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}"> | 				<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}"> | ||||||
| 						{{ctx.Locale.Tr "repo.editor.upload_file"}} | 					{{ctx.Locale.Tr "repo.editor.upload_file"}} | ||||||
| 					</a> | 				</a> | ||||||
| 					{{end}} | 				{{end}} | ||||||
| 					<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}"> | 				<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}"> | ||||||
| 						{{ctx.Locale.Tr "repo.editor.patch"}} | 					{{ctx.Locale.Tr "repo.editor.patch"}} | ||||||
| 					</a> | 				</a> | ||||||
| 				</div> | 			</div> | ||||||
| 			</button> | 		</button> | ||||||
| 		{{end}} | 	{{end}} | ||||||
| 
 | 
 | ||||||
| 		{{if and $isTreePathRoot .Repository.IsTemplate}} | 	{{if and $isTreePathRoot .Repository.IsTemplate}} | ||||||
| 			<a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}"> | 		<a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}"> | ||||||
| 				{{ctx.Locale.Tr "repo.use_template"}} | 			{{ctx.Locale.Tr "repo.use_template"}} | ||||||
| 			</a> | 		</a> | ||||||
| 		{{end}} | 	{{end}} | ||||||
| 
 | 
 | ||||||
| 		{{if not $isTreePathRoot}} | 	{{if not $isTreePathRoot}} | ||||||
| 			{{$treeNameIdxLast := Eval $treeNamesLen "-" 1}} | 		{{$treeNameIdxLast := Eval $treeNamesLen "-" 1}} | ||||||
| 			<span class="breadcrumb repo-path tw-ml-1"> | 		<span class="breadcrumb repo-path tw-ml-1"> | ||||||
| 				<a class="section" href="{{.RepoLink}}/src/{{.RefTypeNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a> | 			<a class="section" href="{{.RepoLink}}/src/{{.RefTypeNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a> | ||||||
| 				{{- range $i, $v := .TreeNames -}} | 			{{- range $i, $v := .TreeNames -}} | ||||||
| 					<span class="breadcrumb-divider">/</span> | 				<span class="breadcrumb-divider">/</span> | ||||||
| 					{{- if eq $i $treeNameIdxLast -}} | 				{{- if eq $i $treeNameIdxLast -}} | ||||||
| 						<span class="active section" title="{{$v}}">{{$v}}</span> | 					<span class="active section" title="{{$v}}">{{$v}}</span> | ||||||
| 						<button class="btn interact-fg tw-mx-1" data-clipboard-text="{{$.TreePath}}" data-tooltip-content="{{ctx.Locale.Tr "copy_path"}}">{{svg "octicon-copy" 14}}</button> | 					<button class="btn interact-fg tw-mx-1" data-clipboard-text="{{$.TreePath}}" data-tooltip-content="{{ctx.Locale.Tr "copy_path"}}">{{svg "octicon-copy" 14}}</button> | ||||||
| 					{{- else -}} | 				{{- else -}} | ||||||
| 						{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{$v}}</a></span> | 					{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{$v}}</a></span> | ||||||
| 					{{- end -}} |  | ||||||
| 				{{- end -}} | 				{{- end -}} | ||||||
| 			</span> | 			{{- end -}} | ||||||
| 		{{end}} | 		</span> | ||||||
|  | 	{{end}} | ||||||
| 	</div> | 	</div> | ||||||
| 
 | 
 | ||||||
| 	<div class="repo-button-row-right"> | 	<div class="repo-button-row-right"> | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ | |||||||
| 								"Repository" $.Repository | 								"Repository" $.Repository | ||||||
| 								"ShowTabTags" true | 								"ShowTabTags" true | ||||||
| 								"DropdownFixedText" (ctx.Locale.Tr "repo.release.compare") | 								"DropdownFixedText" (ctx.Locale.Tr "repo.release.compare") | ||||||
| 								"RefLinkTemplate" (print "{RepoLink}/compare/{RefShortName}..." (PathEscapeSegments $compareTarget)) | 								"RefLinkTemplate" (print "{RepoLink}/compare/{RefShortName}" "..." (PathEscapeSegments $compareTarget)) | ||||||
| 							}} | 							}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 					</div> | 					</div> | ||||||
|  | |||||||
| @ -42,7 +42,7 @@ | |||||||
| 			{{if not .ReadmeInList}} | 			{{if not .ReadmeInList}} | ||||||
| 				<div class="ui buttons tw-mr-1"> | 				<div class="ui buttons tw-mr-1"> | ||||||
| 					<a class="ui mini basic button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a> | 					<a class="ui mini basic button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a> | ||||||
| 					{{if not .IsViewCommit}} | 					{{if or .RefFullName.IsBranch .RefFullName.IsTag}} | ||||||
| 						<a class="ui mini basic button" href="{{.RepoLink}}/src/commit/{{PathEscape .CommitID}}/{{PathEscapeSegments .TreePath}}">{{ctx.Locale.Tr "repo.file_permalink"}}</a> | 						<a class="ui mini basic button" href="{{.RepoLink}}/src/commit/{{PathEscape .CommitID}}/{{PathEscapeSegments .TreePath}}">{{ctx.Locale.Tr "repo.file_permalink"}}</a> | ||||||
| 					{{end}} | 					{{end}} | ||||||
| 					{{if .IsRepresentableAsText}} | 					{{if .IsRepresentableAsText}} | ||||||
|  | |||||||
| @ -5,7 +5,6 @@ import {ref} from 'vue'; | |||||||
| type Item = { | type Item = { | ||||||
|   name: string; |   name: string; | ||||||
|   path: string; |   path: string; | ||||||
|   htmlUrl: string; |  | ||||||
|   sub_module_url?: string; |   sub_module_url?: string; | ||||||
|   type: string; |   type: string; | ||||||
|   children?: Item[]; |   children?: Item[]; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user