mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-28 14:43:52 +03:00
e8173c2c33
Co-Author: @wxiaoguang It is more convenient that user just need to enter a new branch name after he selects the branch which he want to rename. So this PR move the function of renaming branch to the page of branches list. This PR also restyle the button of `new branch`, `download`, `delete`.... https://user-images.githubusercontent.com/33891828/235277997-413060bb-759f-430a-b5c4-df5e40ffcd28.mov --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
243 lines
12 KiB
Handlebars
243 lines
12 KiB
Handlebars
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{.Title}}" class="page-content ui repository branches">
|
|
{{template "repo/header" .}}
|
|
<div class="ui container">
|
|
{{template "base/alert" .}}
|
|
{{template "repo/sub_menu" .}}
|
|
{{if .DefaultBranchBranch}}
|
|
<h4 class="ui top attached header">
|
|
{{.locale.Tr "repo.default_branch"}}
|
|
{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}}
|
|
<a role="button" class="right" href="{{.RepoLink}}/settings/branches" data-tooltip-content="{{.locale.Tr "repo.settings.branches.switch_default_branch"}}">
|
|
{{svg "octicon-arrow-switch"}}
|
|
</a>
|
|
{{end}}
|
|
</h4>
|
|
|
|
<div class="ui attached table segment">
|
|
<table class="ui very basic striped fixed table single line">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
{{if .DefaultBranchBranch.IsProtected}}
|
|
{{svg "octicon-shield-lock"}}
|
|
{{end}}
|
|
<a href="{{.RepoLink}}/src/branch/{{PathEscapeSegments .DefaultBranch}}">{{.DefaultBranch}}</a>
|
|
<p class="info gt-df gt-ac gt-my-2">{{svg "octicon-git-commit" 16 "gt-mr-2"}}<a href="{{.RepoLink}}/commit/{{PathEscape .DefaultBranchBranch.Commit.ID.String}}">{{ShortSha .DefaultBranchBranch.Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage $.Context .DefaultBranchBranch.Commit.CommitMessage .RepoLink .Repository.ComposeMetas}}</span> · {{.locale.Tr "org.repo_updated"}} {{TimeSince .DefaultBranchBranch.Commit.Committer.When .locale}}</p>
|
|
</td>
|
|
<td class="right aligned overflow-visible">
|
|
{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}}
|
|
<button class="ui tertiary button show-create-branch-modal gt-mx-3"
|
|
data-modal="#create-branch-modal"
|
|
data-branch-from="{{$.DefaultBranch}}"
|
|
data-branch-from-urlcomponent="{{PathEscapeSegments $.DefaultBranch}}"
|
|
data-tooltip-content="{{$.locale.Tr "repo.branch.new_branch_from" ($.DefaultBranch)}}"
|
|
>
|
|
{{svg "octicon-git-branch"}}
|
|
</button>
|
|
{{end}}
|
|
{{if .EnableFeed}}
|
|
<a role="button" class="ui tertiary button gt-mx-3" href="{{$.FeedURL}}/rss/branch/{{PathEscapeSegments .DefaultBranch}}">
|
|
{{svg "octicon-rss"}}
|
|
</a>
|
|
{{end}}
|
|
{{if not $.DisableDownloadSourceArchives}}
|
|
<div class="ui dropdown tertiary button gt-mx-3" data-tooltip-content="{{$.locale.Tr "repo.branch.download" ($.DefaultBranch)}}">
|
|
{{svg "octicon-download"}}
|
|
<div class="menu">
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranch}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a>
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranch}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted) (not $.IsMirror)}}
|
|
<button class="ui tertiary button show-modal show-rename-branch-modal gt-mx-3"
|
|
data-modal="#rename-branch-modal"
|
|
data-old-branch-name="{{$.DefaultBranch}}"
|
|
data-tooltip-content="{{$.locale.Tr "repo.branch.rename" ($.DefaultBranch)}}"
|
|
>
|
|
{{svg "octicon-pencil"}}
|
|
</button>
|
|
{{end}}
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if gt (len .Branches) 1}}
|
|
<h4 class="ui top attached header">
|
|
{{.locale.Tr "repo.branches"}}
|
|
</h4>
|
|
<div class="ui attached table segment">
|
|
<table class="ui very basic striped fixed table single line">
|
|
<tbody>
|
|
{{range .Branches}}
|
|
{{if ne .Name $.DefaultBranch}}
|
|
<tr>
|
|
<td class="six wide">
|
|
{{if .IsDeleted}}
|
|
<s><a href="{{$.RepoLink}}/src/branch/{{PathEscapeSegments .Name}}">{{.Name}}</a></s>
|
|
<p class="info">{{$.locale.Tr "repo.branch.deleted_by" .DeletedBranch.DeletedBy.Name}} {{TimeSinceUnix .DeletedBranch.DeletedUnix $.locale}}</p>
|
|
{{else}}
|
|
{{if .IsProtected}}
|
|
{{svg "octicon-shield-lock"}}
|
|
{{end}}
|
|
<a href="{{$.RepoLink}}/src/branch/{{PathEscapeSegments .Name}}">{{.Name}}</a>
|
|
<p class="info gt-df gt-ac gt-my-2">{{svg "octicon-git-commit" 16 "gt-mr-2"}}<a href="{{$.RepoLink}}/commit/{{PathEscape .Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage $.Context .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.locale.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.locale}}</p>
|
|
{{end}}
|
|
</td>
|
|
<td class="three wide ui">
|
|
{{if and (not .IsDeleted) $.DefaultBranchBranch}}
|
|
<div class="commit-divergence">
|
|
<div class="bar-group">
|
|
<div class="count count-behind">{{.CommitsBehind}}</div>
|
|
{{/* old code bears 0/0.0 = NaN output, so it might output invalid "width: NaNpx", it just works and doesn't caues any problem. */}}
|
|
<div class="bar bar-behind" style="width: {{Eval 100 "*" .CommitsBehind "/" "(" .CommitsBehind "+" .CommitsAhead "+" 0.0 ")"}}%"></div>
|
|
</div>
|
|
<div class="bar-group">
|
|
<div class="count count-ahead">{{.CommitsAhead}}</div>
|
|
<div class="bar bar-ahead" style="width: {{Eval 100 "*" .CommitsAhead "/" "(" .CommitsBehind "+" .CommitsAhead "+" 0.0 ")"}}%"></div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</td>
|
|
<td class="three wide right aligned">
|
|
{{if not .LatestPullRequest}}
|
|
{{if .IsIncluded}}
|
|
<span class="ui orange large label" data-tooltip-content="{{$.locale.Tr "repo.branch.included_desc"}}">
|
|
{{svg "octicon-git-pull-request"}} {{$.locale.Tr "repo.branch.included"}}
|
|
</span>
|
|
{{else if and (not .IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}}
|
|
<a href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.DefaultBranch}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{PathEscape $.Owner.Name}}:{{end}}{{PathEscapeSegments .Name}}">
|
|
<button id="new-pull-request" class="ui compact basic button gt-mr-0">{{if $.CanPull}}{{$.locale.Tr "repo.pulls.compare_changes"}}{{else}}{{$.locale.Tr "action.compare_branch"}}{{end}}</button>
|
|
</a>
|
|
{{end}}
|
|
{{else if and .LatestPullRequest.HasMerged .MergeMovedOn}}
|
|
{{if and (not .IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}}
|
|
<a href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.DefaultBranch}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{$.Owner.Name}}:{{end}}{{.Name | PathEscapeSegments}}">
|
|
<button id="new-pull-request" class="ui compact basic button gt-mr-0">{{if $.CanPull}}{{$.locale.Tr "repo.pulls.compare_changes"}}{{else}}{{$.locale.Tr "action.compare_branch"}}{{end}}</button>
|
|
</a>
|
|
{{end}}
|
|
{{else}}
|
|
<a href="{{.LatestPullRequest.Issue.Link}}" class="gt-vm ref-issue">{{if not .LatestPullRequest.IsSameRepo}}{{.LatestPullRequest.BaseRepo.FullName}}{{end}}#{{.LatestPullRequest.Issue.Index}}</a>
|
|
{{if .LatestPullRequest.HasMerged}}
|
|
<a href="{{.LatestPullRequest.Issue.Link}}" class="ui text-label purple large label gt-vm">{{svg "octicon-git-merge" 16 "gt-mr-2"}}{{$.locale.Tr "repo.pulls.merged"}}</a>
|
|
{{else if .LatestPullRequest.Issue.IsClosed}}
|
|
<a href="{{.LatestPullRequest.Issue.Link}}" class="ui text-label red large label gt-vm">{{svg "octicon-git-pull-request" 16 "gt-mr-2"}}{{$.locale.Tr "repo.issues.closed_title"}}</a>
|
|
{{else}}
|
|
<a href="{{.LatestPullRequest.Issue.Link}}" class="ui text-label green large label gt-vm">{{svg "octicon-git-pull-request" 16 "gt-mr-2"}}{{$.locale.Tr "repo.issues.open_title"}}</a>
|
|
{{end}}
|
|
{{end}}
|
|
</td>
|
|
<td class="three wide right aligned overflow-visible">
|
|
{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}}
|
|
<button class="ui tertiary button show-modal show-create-branch-modal gt-mx-3"
|
|
data-branch-from="{{.Name}}"
|
|
data-branch-from-urlcomponent="{{PathEscapeSegments .Name}}"
|
|
data-tooltip-content="{{$.locale.Tr "repo.branch.new_branch_from" .Name}}"
|
|
data-modal="#create-branch-modal" data-name="{{.Name}}"
|
|
>
|
|
{{svg "octicon-git-branch"}}
|
|
</button>
|
|
{{end}}
|
|
{{if $.EnableFeed}}
|
|
<a role="button" class="ui tertiary button gt-mx-3" href="{{$.FeedURL}}/rss/branch/{{PathEscapeSegments .Name}}">
|
|
{{svg "octicon-rss"}}
|
|
</a>
|
|
{{end}}
|
|
{{if and (not .IsDeleted) (not $.DisableDownloadSourceArchives)}}
|
|
<div class="ui dropdown tertiary button gt-mx-3" data-tooltip-content="{{$.locale.Tr "repo.branch.download" (.Name)}}">
|
|
{{svg "octicon-download"}}
|
|
<div class="menu">
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments .Name}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a>
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments .Name}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
{{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted) (not $.IsMirror)}}
|
|
<button class="ui tertiary button show-modal show-rename-branch-modal gt-mx-3"
|
|
data-old-branch-name="{{.Name}}"
|
|
data-modal="#rename-branch-modal"
|
|
data-tooltip-content="{{$.locale.Tr "repo.branch.rename" (.Name)}}"
|
|
>
|
|
{{svg "octicon-pencil"}}
|
|
</button>
|
|
{{end}}
|
|
{{if and $.IsWriter (not $.IsMirror) (not $.Repository.IsArchived) (not .IsProtected)}}
|
|
{{if .IsDeleted}}
|
|
<button class="ui tertiary button undo-button gt-mx-3" data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID}}&name={{.DeletedBranch.Name}}&page={{$.Page.Paginater.Current}}" data-tooltip-content="{{$.locale.Tr "repo.branch.restore" (.Name)}}">
|
|
<span class="text blue">
|
|
{{svg "octicon-reply"}}
|
|
</span>
|
|
</button>
|
|
{{else}}
|
|
<button class="ui tertiary button delete-button delete-branch-button gt-mx-3" data-url="{{$.Link}}/delete?name={{.Name}}&page={{$.Page.Paginater.Current}}" data-tooltip-content="{{$.locale.Tr "repo.branch.delete" (.Name)}}" data-name="{{.Name}}">
|
|
{{svg "octicon-trash"}}
|
|
</button>
|
|
{{end}}
|
|
{{end}}
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{template "base/paginate" .}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ui g-modal-confirm delete modal">
|
|
<div class="header">
|
|
{{svg "octicon-trash"}}
|
|
{{.locale.Tr "repo.branch.delete_html"}} <span class="name"></span>
|
|
</div>
|
|
<div class="content">
|
|
<p>{{.locale.Tr "repo.branch.delete_desc" | Str2html}}</p>
|
|
</div>
|
|
{{template "base/modal_actions_confirm" .}}
|
|
</div>
|
|
|
|
<div class="ui mini modal" id="create-branch-modal">
|
|
<div class="header">
|
|
{{.locale.Tr "repo.branch.new_branch"}}
|
|
</div>
|
|
|
|
<form class="ui form" id="create-branch-form" action="" data-base-action="{{.Link}}/_new/branch/" method="post">
|
|
<div class="content">
|
|
{{.CsrfTokenHtml}}
|
|
<div class="field">
|
|
{{.locale.Tr "repo.branch.create_new_branch"}}
|
|
<span id="modal-create-branch-from-span"></span>
|
|
</div>
|
|
<div class="required field">
|
|
<label for="new_branch_name">{{.locale.Tr "repo.branch.name"}}</label>
|
|
<input id="new_branch_name" name="new_branch_name" required>
|
|
</div>
|
|
</div>
|
|
{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
|
|
</form>
|
|
</div>
|
|
|
|
<div class="ui mini modal" id="rename-branch-modal">
|
|
<div class="header">
|
|
{{.locale.Tr "repo.settings.rename_branch"}}
|
|
</div>
|
|
<form class="ui form" action="{{$.Repository.Link}}/settings/rename_branch" method="post">
|
|
<div class="content">
|
|
{{.CsrfTokenHtml}}
|
|
<div class="field">
|
|
<span class="text" data-rename-branch-to="{{.locale.Tr "repo.branch.rename_branch_to"}}"></span>
|
|
</div>
|
|
<input name="from" type="hidden" required>
|
|
<div class="required field">
|
|
<input name="to" required>
|
|
</div>
|
|
</div>
|
|
{{template "base/modal_actions_confirm" (dict "locale" $.locale "ModalButtonTypes" "confirm")}}
|
|
</form>
|
|
</div>
|
|
{{template "base/footer" .}}
|