diff options
author | Jonathan Tran <jonnytran@gmail.com> | 2021-05-03 13:27:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-03 13:27:48 -0400 |
commit | 5e047b9bd7ba4bfa1c1ae3683eabe7e290de5728 (patch) | |
tree | 4f677454d6184de0ba06fed197a478ec6ce8dfe7 | |
parent | 1b017fe7ca9df5a8c7d7823a1ded897fc324f9d3 (diff) | |
download | gitea-5e047b9bd7ba4bfa1c1ae3683eabe7e290de5728.tar.gz gitea-5e047b9bd7ba4bfa1c1ae3683eabe7e290de5728.zip |
Add compare tag dropdown to releases page (#15695)
* Add compare tag dropdown to releases page
* Change defaults to be more intuitive and remove unneeded option
* Fix to select branch on releases page
Co-authored-by: Jonathan Tran <jon@allspice.io>
Co-authored-by: Kyle D <kdumontnu@gmail.com>
-rw-r--r-- | options/locale/locale_en-US.ini | 2 | ||||
-rw-r--r-- | routers/repo/release.go | 12 | ||||
-rw-r--r-- | templates/repo/branch_dropdown.tmpl | 78 | ||||
-rw-r--r-- | templates/repo/commits.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/home.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/release/list.tmpl | 1 | ||||
-rw-r--r-- | web_src/js/index.js | 3 | ||||
-rw-r--r-- | web_src/less/_repository.less | 14 |
8 files changed, 78 insertions, 36 deletions
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 25b0a1b0bd..69923ebb83 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -855,6 +855,7 @@ branch = Branch tree = Tree clear_ref = `Clear current reference` filter_branch_and_tag = Filter branch or tag +find_tag = Find tag branches = Branches tags = Tags issues = Issues @@ -1913,6 +1914,7 @@ release.new_release = New Release release.draft = Draft release.prerelease = Pre-Release release.stable = Stable +release.compare = Compare release.edit = edit release.ahead.commits = <strong>%d</strong> commits release.ahead.target = to %s since this release diff --git a/routers/repo/release.go b/routers/repo/release.go index abce3e9ac1..6b0b92743d 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -70,6 +70,11 @@ func TagsList(ctx *context.Context) { func releasesOrTags(ctx *context.Context, isTagList bool) { ctx.Data["PageIsReleaseList"] = true ctx.Data["DefaultBranch"] = ctx.Repo.Repository.DefaultBranch + ctx.Data["IsViewBranch"] = false + ctx.Data["IsViewTag"] = true + // Disable the showCreateNewBranch form in the dropdown on this page. + ctx.Data["CanCreateBranch"] = false + ctx.Data["HideBranchesInDropdown"] = true if isTagList { ctx.Data["Title"] = ctx.Tr("repo.release.tags") @@ -79,6 +84,13 @@ func releasesOrTags(ctx *context.Context, isTagList bool) { ctx.Data["PageIsTagList"] = false } + tags, err := ctx.Repo.GitRepo.GetTags() + if err != nil { + ctx.ServerError("GetTags", err) + return + } + ctx.Data["Tags"] = tags + writeAccess := ctx.Repo.CanWrite(models.UnitTypeReleases) ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived diff --git a/templates/repo/branch_dropdown.tmpl b/templates/repo/branch_dropdown.tmpl index ca805fa587..3fd461c64f 100644 --- a/templates/repo/branch_dropdown.tmpl +++ b/templates/repo/branch_dropdown.tmpl @@ -1,64 +1,78 @@ -<div class="fitted item choose reference mr-1"> - <div class="ui floating filter dropdown custom" data-can-create-branch="{{.CanCreateBranch}}" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}"> +{{$release := .release}} +{{$showBranchesInDropdown := not .root.HideBranchesInDropdown}} +<div class="fitted item choose reference{{if not $release}} mr-1{{end}}"> + <div class="ui floating filter dropdown custom" data-can-create-branch="{{.root.CanCreateBranch}}" data-no-results="{{.root.i18n.Tr "repo.pulls.no_results"}}"> <div class="ui basic small compact button" @click="menuVisible = !menuVisible" @keyup.enter="menuVisible = !menuVisible"> <span class="text"> - {{svg "octicon-git-branch"}} - {{if .IsViewBranch}}{{.i18n.Tr "repo.branch"}}{{else}}{{.i18n.Tr "repo.tree"}}{{end}}: - <strong>{{if .IsViewBranch}}{{.BranchName}}{{else}}{{ShortSha .BranchName}}{{end}}</strong> + {{if $release}} + {{.root.i18n.Tr "repo.release.compare"}} + {{else}} + {{svg "octicon-git-branch"}} + {{if .root.IsViewBranch}}{{.root.i18n.Tr "repo.branch"}}{{else}}{{.root.i18n.Tr "repo.tree"}}{{end}}: + <strong>{{if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.BranchName}}{{end}}</strong> + {{end}} </span> {{svg "octicon-triangle-down" 14 "dropdown icon"}} </div> - <div class="data" style="display: none" data-mode="{{if .IsViewTag}}tags{{else}}branches{{end}}"> - {{range .Branches}} - <div class="item branch {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/{{if $.PageIsCommits}}commits{{else}}src{{end}}/branch/{{EscapePound .}}{{if $.TreePath}}/{{EscapePound $.TreePath}}{{end}}">{{.}}</div> + <div class="data" style="display: none" data-mode="{{if .root.IsViewTag}}tags{{else}}branches{{end}}"> + {{if $showBranchesInDropdown}} + {{range .root.Branches}} + <div class="item branch {{if eq $.root.BranchName .}}selected{{end}}" data-url="{{$.root.RepoLink}}/{{if $.root.PageIsCommits}}commits{{else}}src{{end}}/branch/{{EscapePound .}}{{if $.root.TreePath}}/{{EscapePound $.root.TreePath}}{{end}}">{{.}}</div> + {{end}} {{end}} - {{range .Tags}} - <div class="item tag {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/{{if $.PageIsCommits}}commits{{else}}src{{end}}/tag/{{EscapePound .}}{{if $.TreePath}}/{{EscapePound $.TreePath}}{{end}}">{{.}}</div> + {{range .root.Tags}} + {{if $release}} + <div class="item tag {{if eq $release.TagName .}}selected{{end}}" data-url="{{$.root.RepoLink}}/compare/{{EscapePound .}}...{{if $release.TagName}}{{EscapePound $release.TagName}}{{else}}{{EscapePound $release.Sha1}}{{end}}">{{.}}</div> + {{else}} + <div class="item tag {{if eq $.root.BranchName .}}selected{{end}}" data-url="{{$.root.RepoLink}}/{{if $.root.PageIsCommits}}commits{{else}}src{{end}}/tag/{{EscapePound .}}{{if $.root.TreePath}}/{{EscapePound $.root.TreePath}}{{end}}">{{.}}</div> + {{end}} {{end}} </div> <div class="menu transition" :class="{visible: menuVisible}" v-if="menuVisible" v-cloak> <div class="ui icon search input"> <i class="icon df ac jc m-0">{{svg "octicon-filter" 16}}</i> - <input name="search" ref="searchField" v-model="searchTerm" @keydown="keydown($event)" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}..."> + <input name="search" ref="searchField" v-model="searchTerm" @keydown="keydown($event)" placeholder="{{if $showBranchesInDropdown}}{{.root.i18n.Tr "repo.filter_branch_and_tag"}}{{else}}{{.root.i18n.Tr "repo.find_tag"}}{{end}}..."> </div> - <div class="header branch-tag-choice"> - <div class="ui grid"> - <div class="two column row"> - <a class="reference column" href="#" @click="createTag = false; mode = 'branches'; focusSearchField()"> - <span class="text" :class="{black: mode == 'branches'}"> - {{svg "octicon-git-branch" 16 "mr-2"}}{{.i18n.Tr "repo.branches"}} - </span> - </a> - <a class="reference column" href="#" @click="createTag = true; mode = 'tags'; focusSearchField()"> - <span class="text" :class="{black: mode == 'tags'}"> - {{svg "octicon-tag" 16 "mr-2"}}{{.i18n.Tr "repo.tags"}} - </span> - </a> + {{if $showBranchesInDropdown}} + <div class="header branch-tag-choice"> + <div class="ui grid"> + <div class="two column row"> + <a class="reference column" href="#" @click="createTag = false; mode = 'branches'; focusSearchField()"> + <span class="text" :class="{black: mode == 'branches'}"> + {{svg "octicon-git-branch" 16 "mr-2"}}{{.root.i18n.Tr "repo.branches"}} + </span> + </a> + <a class="reference column" href="#" @click="createTag = true; mode = 'tags'; focusSearchField()"> + <span class="text" :class="{black: mode == 'tags'}"> + {{svg "octicon-tag" 16 "mr-2"}}{{.root.i18n.Tr "repo.tags"}} + </span> + </a> + </div> </div> </div> - </div> + {{end}} <div class="scrolling menu" ref="scrollContainer"> <div v-for="(item, index) in filteredItems" :key="item.name" class="item" :class="{selected: item.selected, active: active == index}" @click="selectItem(item)" :ref="'listItem' + index">${ item.name }</div> <div class="item" v-if="showCreateNewBranch" :class="{active: active == filteredItems.length}" :ref="'listItem' + filteredItems.length"> <a href="#" @click="createNewBranch()"> <div v-show="createTag"> <i class="reference tags icon"></i> - {{.i18n.Tr "repo.tag.create_tag" `${ searchTerm }` | Safe}} + {{.root.i18n.Tr "repo.tag.create_tag" `${ searchTerm }` | Safe}} </div> <div v-show="!createTag"> {{svg "octicon-git-branch"}} - {{.i18n.Tr "repo.branch.create_branch" `${ searchTerm }` | Safe}} + {{.root.i18n.Tr "repo.branch.create_branch" `${ searchTerm }` | Safe}} </div> <div class="text small"> - {{if .IsViewBranch}} - {{.i18n.Tr "repo.branch.create_from" .BranchName}} + {{if or .root.IsViewBranch $release}} + {{.root.i18n.Tr "repo.branch.create_from" .root.BranchName}} {{else}} - {{.i18n.Tr "repo.branch.create_from" (ShortSha .BranchName)}} + {{.root.i18n.Tr "repo.branch.create_from" (ShortSha .root.BranchName)}} {{end}} </div> </a> - <form ref="newBranchForm" action="{{.RepoLink}}/branches/_new/{{EscapePound .BranchNameSubURL}}" method="post"> - {{.CsrfTokenHtml}} + <form ref="newBranchForm" action="{{.root.RepoLink}}/branches/_new/{{EscapePound .root.BranchNameSubURL}}" method="post"> + {{.root.CsrfTokenHtml}} <input type="hidden" name="new_branch_name" v-model="searchTerm"> <input type="hidden" name="create_tag" v-model="createTag"> </form> diff --git a/templates/repo/commits.tmpl b/templates/repo/commits.tmpl index 5a8a89fe14..1e2b0f7d90 100644 --- a/templates/repo/commits.tmpl +++ b/templates/repo/commits.tmpl @@ -4,7 +4,7 @@ <div class="ui container"> {{template "repo/sub_menu" .}} <div class="ui secondary stackable menu mobile--margin-between-items"> - {{template "repo/branch_dropdown" .}} + {{template "repo/branch_dropdown" dict "root" .}} <div class="fitted item"> <a href="{{.RepoLink}}/graph" class="ui basic small compact button"> <span class="text"> diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index ed31398355..254bbb7380 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -57,7 +57,7 @@ {{end}} {{template "repo/sub_menu" .}} <div class="ui stackable secondary menu mobile--margin-between-items mobile--no-negative-margins"> - {{template "repo/branch_dropdown" .}} + {{template "repo/branch_dropdown" dict "root" .}} {{ $n := len .TreeNames}} {{ $l := Subtract $n 1}} <!-- If home page, show new PR. If not, show breadcrumb --> diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl index ce4de3ddfa..6829e3e8e2 100644 --- a/templates/repo/release/list.tmpl +++ b/templates/repo/release/list.tmpl @@ -80,6 +80,7 @@ <span class="commit"> <a class="mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a> </span> + {{template "repo/branch_dropdown" dict "root" $ "release" .}} {{end}} </div> <div class="ui twelve wide column detail"> diff --git a/web_src/js/index.js b/web_src/js/index.js index 1716df9e7f..89cc0aa11c 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -781,7 +781,8 @@ async function initRepository() { }); // File list and commits - if ($('.repository.file.list').length > 0 || ('.repository.commits').length > 0) { + if ($('.repository.file.list').length > 0 || + $('.repository.commits').length > 0 || $('.repository.release').length > 0) { initFilterBranchTagDropdown('.choose.reference .dropdown'); } diff --git a/web_src/less/_repository.less b/web_src/less/_repository.less index 70ad8dd730..5ff51b1d6d 100644 --- a/web_src/less/_repository.less +++ b/web_src/less/_repository.less @@ -1803,6 +1803,10 @@ text-align: right; position: relative; + .label { + margin-right: 0; + } + .tag:not(.icon) { display: block; margin-top: 15px; @@ -1812,6 +1816,14 @@ display: block; margin-top: 10px; } + + .choose { + margin-top: 15px; + + .button { + margin-right: 0; + } + } } .detail { @@ -1855,7 +1867,7 @@ width: 9px; height: 9px; background-color: #ddd; - z-index: 999; + z-index: 9; position: absolute; display: block; left: -5px; |