1{{template "base/head" .}} 2<div class="page-content repository milestones"> 3 {{template "repo/header" .}} 4 <div class="ui container"> 5 <div class="navbar"> 6 {{template "repo/issue/navbar" .}} 7 {{if and (or .CanWriteIssues .CanWritePulls) (not .Repository.IsArchived)}} 8 <div class="ui right"> 9 <a class="ui green button" href="{{$.Link}}/new">{{.i18n.Tr "repo.milestones.new"}}</a> 10 </div> 11 {{end}} 12 </div> 13 <div class="ui divider"></div> 14 {{template "base/alert" .}} 15 16 <div class="ui three column stackable grid"> 17 <div class="column"> 18 <div class="ui compact tiny menu"> 19 <a class="item{{if not .IsShowClosed}} active{{end}}" href="{{.RepoLink}}/milestones?state=open&q={{$.Keyword}}"> 20 {{svg "octicon-milestone" 16 "mr-3"}} 21 {{.i18n.Tr "repo.milestones.open_tab" .OpenCount}} 22 </a> 23 <a class="item{{if .IsShowClosed}} active{{end}}" href="{{.RepoLink}}/milestones?state=closed&q={{$.Keyword}}"> 24 {{svg "octicon-milestone" 16 "mr-3"}} 25 {{.i18n.Tr "repo.milestones.close_tab" .ClosedCount}} 26 </a> 27 </div> 28 </div> 29 30 <!-- Search --> 31 <div class="column center aligned"> 32 <form class="ui form ignore-dirty"> 33 <div class="ui search fluid action input"> 34 <input type="hidden" name="state" value="{{$.State}}"/> 35 <input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..."> 36 <button class="ui blue button" type="submit">{{.i18n.Tr "explore.search"}}</button> 37 </div> 38 </form> 39 </div> 40 41 <div class="column right aligned df ac je"> 42 <!-- Sort --> 43 <div class="ui dropdown type jump item"> 44 <span class="text"> 45 {{.i18n.Tr "repo.issues.filter_sort"}} 46 {{svg "octicon-triangle-down" 14 "dropdown icon"}} 47 </span> 48 <div class="menu"> 49 <a class="{{if or (eq .SortType "closestduedate") (not .SortType)}}active{{end}} item" href="{{$.Link}}?sort=closestduedate&state={{$.State}}&q={{$.Keyword}}">{{.i18n.Tr "repo.milestones.filter_sort.closest_due_date"}}</a> 50 <a class="{{if eq .SortType "furthestduedate"}}active{{end}} item" href="{{$.Link}}?sort=furthestduedate&state={{$.State}}&q={{$.Keyword}}">{{.i18n.Tr "repo.milestones.filter_sort.furthest_due_date"}}</a> 51 <a class="{{if eq .SortType "leastcomplete"}}active{{end}} item" href="{{$.Link}}?sort=leastcomplete&state={{$.State}}&q={{$.Keyword}}">{{.i18n.Tr "repo.milestones.filter_sort.least_complete"}}</a> 52 <a class="{{if eq .SortType "mostcomplete"}}active{{end}} item" href="{{$.Link}}?sort=mostcomplete&state={{$.State}}&q={{$.Keyword}}">{{.i18n.Tr "repo.milestones.filter_sort.most_complete"}}</a> 53 <a class="{{if eq .SortType "mostissues"}}active{{end}} item" href="{{$.Link}}?sort=mostissues&state={{$.State}}&q={{$.Keyword}}">{{.i18n.Tr "repo.milestones.filter_sort.most_issues"}}</a> 54 <a class="{{if eq .SortType "leastissues"}}active{{end}} item" href="{{$.Link}}?sort=leastissues&state={{$.State}}&q={{$.Keyword}}">{{.i18n.Tr "repo.milestones.filter_sort.least_issues"}}</a> 55 </div> 56 </div> 57 </div> 58 </div> 59 60 <!-- milestone list --> 61 <div class="milestone list"> 62 {{range .Milestones}} 63 <li class="item"> 64 {{svg "octicon-milestone" 16 "mr-2"}} <a href="{{$.RepoLink}}/milestone/{{.ID}}">{{.Name}}</a> 65 <div class="ui right green progress" data-percent="{{.Completeness}}"> 66 <div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}> 67 <div class="progress"></div> 68 </div> 69 </div> 70 <div class="meta"> 71 {{ $closedDate:= TimeSinceUnix .ClosedDateUnix $.Lang }} 72 {{if .IsClosed}} 73 {{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}} 74 {{else}} 75 {{svg "octicon-calendar"}} 76 {{if .DeadlineString}} 77 <span {{if .IsOverdue}}class="overdue"{{end}}>{{.DeadlineString}}</span> 78 {{else}} 79 {{$.i18n.Tr "repo.milestones.no_due_date"}} 80 {{end}} 81 {{end}} 82 <span class="issue-stats"> 83 {{svg "octicon-issue-opened"}} {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}} 84 {{svg "octicon-issue-closed"}} {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}} 85 {{if .TotalTrackedTime}}{{svg "octicon-clock"}} {{.TotalTrackedTime|Sec2Time}}{{end}} 86 {{if .UpdatedUnix}}{{svg "octicon-clock"}} {{$.i18n.Tr "repo.milestones.update_ago" (.TimeSinceUpdate|Sec2Time)}}{{end}} 87 </span> 88 </div> 89 {{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}} 90 <div class="ui right operate"> 91 <a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-pencil"}} {{$.i18n.Tr "repo.issues.label_edit"}}</a> 92 {{if .IsClosed}} 93 <a class="link-action" href data-url="{{$.Link}}/{{.ID}}/open">{{svg "octicon-check"}} {{$.i18n.Tr "repo.milestones.open"}}</a> 94 {{else}} 95 <a class="link-action" href data-url="{{$.Link}}/{{.ID}}/close">{{svg "octicon-x"}} {{$.i18n.Tr "repo.milestones.close"}}</a> 96 {{end}} 97 <a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}">{{svg "octicon-trash"}} {{$.i18n.Tr "repo.issues.label_delete"}}</a> 98 </div> 99 {{end}} 100 {{if .Content}} 101 <div class="markup content"> 102 {{.RenderedContent|Str2html}} 103 </div> 104 {{end}} 105 </li> 106 {{end}} 107 108 {{template "base/paginate" .}} 109 </div> 110 </div> 111</div> 112 113{{if or .CanWriteIssues .CanWritePulls}} 114 <div class="ui small basic delete modal"> 115 <div class="ui icon header"> 116 {{svg "octicon-trash"}} 117 {{.i18n.Tr "repo.milestones.deletion"}} 118 </div> 119 <div class="content"> 120 <p>{{.i18n.Tr "repo.milestones.deletion_desc"}}</p> 121 </div> 122 <div class="actions"> 123 <div class="ui red basic inverted cancel button"> 124 <i class="remove icon"></i> 125 {{.i18n.Tr "modal.no"}} 126 </div> 127 <div class="ui green basic inverted ok button"> 128 <i class="checkmark icon"></i> 129 {{.i18n.Tr "modal.yes"}} 130 </div> 131 </div> 132 </div> 133{{end}} 134{{template "base/footer" .}} 135