]> source.dussan.org Git - gitea.git/commitdiff
Add compare tag dropdown to releases page (#15695)
authorJonathan Tran <jonnytran@gmail.com>
Mon, 3 May 2021 17:27:48 +0000 (13:27 -0400)
committerGitHub <noreply@github.com>
Mon, 3 May 2021 17:27:48 +0000 (13:27 -0400)
* 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>
options/locale/locale_en-US.ini
routers/repo/release.go
templates/repo/branch_dropdown.tmpl
templates/repo/commits.tmpl
templates/repo/home.tmpl
templates/repo/release/list.tmpl
web_src/js/index.js
web_src/less/_repository.less

index 25b0a1b0bd33fcc43be3f829b7f7a282f5f3d6e8..69923ebb83750c337dc3168b41c0b8235beb4769 100644 (file)
@@ -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
index abce3e9ac1a2875c3402139c591c722399613f89..6b0b92743d44b30b28aebacc68e8d9048ab18f0f 100644 (file)
@@ -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
 
index ca805fa5877d6ad9cb3db51a339fc3c6856060b0..3fd461c64f2fa01c2f147a0d7c7d57922763fcbc 100644 (file)
@@ -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>
index 5a8a89fe147c8b6c8ebae47b7c51162302871b9f..1e2b0f7d90c1d97297649bd1719010c0b1c49fa6 100644 (file)
@@ -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">
index ed31398355eaec496377bf1eb0f6075067e840d9..254bbb7380bcbf37c968a539068a6a7ce8d4e820 100644 (file)
@@ -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 -->
index ce4de3ddfa182cf0ad7fbeb16edd6f89fdac3053..6829e3e8e2a13e302f73d487a3471ff899cbd224 100644 (file)
@@ -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">
index 1716df9e7fa64e020da2bddef50c32d2c90a677d..89cc0aa11c13a57e5f09dea46f359e088e6b0c05 100644 (file)
@@ -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');
   }
 
index 70ad8dd730868ade6780dcc412acadf064bf9314..5ff51b1d6df6b4f9b2fc1c8bb296dad4085770c7 100644 (file)
           text-align: right;
           position: relative;
 
+          .label {
+            margin-right: 0;
+          }
+
           .tag:not(.icon) {
             display: block;
             margin-top: 15px;
             display: block;
             margin-top: 10px;
           }
+
+          .choose {
+            margin-top: 15px;
+
+            .button {
+              margin-right: 0;
+            }
+          }
         }
 
         .detail {
             width: 9px;
             height: 9px;
             background-color: #ddd;
-            z-index: 999;
+            z-index: 9;
             position: absolute;
             display: block;
             left: -5px;