]> source.dussan.org Git - gitea.git/commitdiff
Add possibility to record branch or tag information in an issue (#780)
authorZsombor <gzsombor@users.noreply.github.com>
Thu, 24 Aug 2017 12:30:27 +0000 (14:30 +0200)
committerLauris BH <lauris@nix.lv>
Thu, 24 Aug 2017 12:30:27 +0000 (15:30 +0300)
models/issue.go
modules/auth/repo_form.go
options/locale/locale_en-US.ini
public/js/index.js
routers/repo/issue.go
templates/repo/issue/branch_selector_field.tmpl [new file with mode: 0644]
templates/repo/issue/list.tmpl
templates/repo/issue/new_form.tmpl
templates/repo/issue/view_content/sidebar.tmpl

index 2c385fd066693ef800b1825f14b8304d9d45a844..32e6a5b66ba8dbb4ec69a9c6770059fd2904f0d0 100644 (file)
@@ -49,6 +49,7 @@ type Issue struct {
        IsPull          bool         `xorm:"INDEX"` // Indicates whether is a pull request or not.
        PullRequest     *PullRequest `xorm:"-"`
        NumComments     int
+       Ref             string
 
        Deadline     time.Time `xorm:"-"`
        DeadlineUnix int64     `xorm:"INDEX"`
index 58dcf468ef6edd91d69b4ac8b841aa1ede6a7232..681a478d3ba97814feaa5efd9808b18bb3428926 100644 (file)
@@ -194,6 +194,7 @@ func (f *NewSlackHookForm) Validate(ctx *macaron.Context, errs binding.Errors) b
 type CreateIssueForm struct {
        Title       string `binding:"Required;MaxSize(255)"`
        LabelIDs    string `form:"label_ids"`
+       Ref         string `form:"ref"`
        MilestoneID int64
        AssigneeID  int64
        Content     string
index 9931d9152b338fb9ac22642f596a0ce04d6cb965..4a8a39963fcb9eba07f5e8bba42e8b24e4be5082 100644 (file)
@@ -612,6 +612,7 @@ issues.new.closed_milestone = Closed Milestones
 issues.new.assignee = Assignee
 issues.new.clear_assignee = Clear assignee
 issues.new.no_assignee = No assignee
+issues.no_ref = No Branch/Tag Specified
 issues.create = Create Issue
 issues.new_label = New Label
 issues.new_label_placeholder = Label name...
index 90a61d752941ace03a83c99545f6c861674636de..1b6f2f601ebf63750ea42da80060d2efd5599dc5 100644 (file)
@@ -86,6 +86,22 @@ function initEditForm() {
     initEditDiffTab($('.edit.form'));
 }
 
+function initBranchSelector() {
+    var $selectBranch = $('.ui.select-branch')
+    var $branchMenu = $selectBranch.find('.reference-list-menu');
+    $branchMenu.find('.item:not(.no-select)').click(function () {
+        var selectedValue = $(this).data('id');
+        $($(this).data('id-selector')).val(selectedValue);
+        $selectBranch.find('.ui .branch-name').text(selectedValue);
+    });
+    $selectBranch.find('.reference.column').click(function () {
+        $selectBranch.find('.scrolling.reference-list-menu').css('display', 'none');
+        $selectBranch.find('.reference .text').removeClass('black');
+        $($(this).data('target')).css('display', 'block');
+        $(this).find('.text').addClass('black');
+        return false;
+    });
+}
 
 function updateIssuesMeta(url, action, issueIds, elementId, afterSuccess) {
     $.ajax({
@@ -106,6 +122,7 @@ function initCommentForm() {
         return
     }
 
+    initBranchSelector();
     initCommentPreviewTab($('.comment.form'));
 
     // Labels
index e4ed10d98068f1d695605ddb1f7e896dc808eb6b..d1c5e1fe719391dec7ccb6a153595edd0328cd7d 100644 (file)
@@ -292,6 +292,13 @@ func RetrieveRepoMetas(ctx *context.Context, repo *models.Repository) []*models.
                return nil
        }
 
+       brs, err := ctx.Repo.GitRepo.GetBranches()
+       if err != nil {
+               ctx.Handle(500, "GetBranches", err)
+               return nil
+       }
+       ctx.Data["Branches"] = brs
+
        return labels
 }
 
@@ -418,6 +425,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) {
        ctx.Data["PageIsIssueList"] = true
        ctx.Data["RequireHighlightJS"] = true
        ctx.Data["RequireSimpleMDE"] = true
+       ctx.Data["ReadOnly"] = false
        renderAttachmentSettings(ctx)
 
        var (
@@ -447,6 +455,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) {
                MilestoneID: milestoneID,
                AssigneeID:  assigneeID,
                Content:     form.Content,
+               Ref:         form.Ref,
        }
        if err := models.NewIssue(repo, issue, labelIDs, attachments); err != nil {
                ctx.Handle(500, "NewIssue", err)
@@ -668,6 +677,7 @@ func ViewIssue(ctx *context.Context) {
        ctx.Data["Participants"] = participants
        ctx.Data["NumParticipants"] = len(participants)
        ctx.Data["Issue"] = issue
+       ctx.Data["ReadOnly"] = true
        ctx.Data["IsIssueOwner"] = ctx.Repo.IsWriter() || (ctx.IsSigned && issue.IsPoster(ctx.User.ID))
        ctx.Data["SignInLink"] = setting.AppSubURL + "/user/login?redirect_to=" + ctx.Data["Link"].(string)
        ctx.HTML(200, tplIssueView)
diff --git a/templates/repo/issue/branch_selector_field.tmpl b/templates/repo/issue/branch_selector_field.tmpl
new file mode 100644 (file)
index 0000000..72b953b
--- /dev/null
@@ -0,0 +1,41 @@
+<input id="ref_selector" name="ref" type="hidden" value="{{.Issue.Ref}}">
+<div class="ui {{if .ReadOnly}}disabled{{end}} floating filter select-branch dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
+       <div class="ui basic small button">
+               <span class="text branch-name">{{if .Issue.Ref}}{{.Issue.Ref}}{{else}}{{.i18n.Tr "repo.issues.no_ref"}}{{end}}</span>
+               <i class="dropdown icon"></i>
+       </div>
+       <div class="menu">
+               <div class="ui icon search input">
+                       <i class="filter icon"></i>
+                       <input name="search" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}...">
+               </div>
+               <div class="header">
+                       <div class="ui grid">
+                               <div class="two column row">
+                                       <a class="reference column" href="#" data-target="#branch-list">
+                                               <span class="text black">
+                                                       <i class="octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}}
+                                               </span>
+                                       </a>
+                                       <a class="reference column" href="#" data-target="#tag-list">
+                                               <span class="text">
+                                                       <i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}}
+                                               </span>
+                                       </a>
+                               </div>
+                       </div>
+               </div>
+               <div id="branch-list" class="scrolling menu reference-list-menu">
+               {{range .Branches}}
+                       <div class="item" data-id="{{.}}" data-id-selector="#ref_selector">{{.}}</div>
+               {{end}}
+               </div>
+               <div id="tag-list" class="scrolling menu reference-list-menu" style="display: none">
+               {{range .Tags}}
+                       <div class="item" data-id="{{.}}" data-id-selector="#ref_selector">{{.}}</div>
+               {{end}}
+               </div>
+       </div>
+</div>
+
+<div class="ui divider"></div>
index 8de52fb23f1f6569eed34a25d0047dc0f35d9492..5c5a5749769008c876dd754b02d340e67f4de466 100644 (file)
                                        <div class="ui {{if .IsRead}}black{{else}}green{{end}} label">#{{.Index}}</div>
                                        <a class="title has-emoji" href="{{$.Link}}/{{.Index}}">{{.Title}}</a>
 
+                                       {{if .Ref}}
+                                               <a class="ui label" href="{{$.RepoLink}}/src/{{.Ref}}">{{.Ref}}</a>
+                                       {{end}}
                                        {{range .Labels}}
                                                <a class="ui label" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name | Sanitize}}</a>
                                        {{end}}
index bfb97da2da0afda90777f17dae6efc428e615972..829f66943bc029a52598343e6ad6024216014f62 100644 (file)
@@ -32,6 +32,8 @@
 
        <div class="four wide column">
                <div class="ui segment metas">
+                       {{template "repo/issue/branch_selector_field" .}}
+
                        <input id="label_ids" name="label_ids" type="hidden" value="{{.label_ids}}">
                        <div class="ui {{if not .Labels}}disabled{{end}} floating jump select-label dropdown">
                                <span class="text">
index cfb6f183b4bfef8bec655a789340b63705463ffc..2c6149ed29375ebb9a5e9063b3a483b694212c86 100644 (file)
@@ -1,5 +1,7 @@
 <div class="four wide column">
        <div class="ui segment metas">
+               {{template "repo/issue/branch_selector_field" .}}
+
                <div class="ui {{if not .IsRepositoryWriter}}disabled{{end}} floating jump select-label dropdown">
                        <span class="text">
                                <strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong>