2018-11-29 02:46:30 +01:00
{{ template "base/head" . }}
< div class = "repository" >
{{ template "repo/header" . }}
< div class = "ui container" >
< div class = "ui three column stackable grid" >
< div class = "column" >
< h3 > {{ .Milestone.Name }} </ h3 >
< / div >
< div class = "column center aligned" >
< / div >
2019-01-23 19:58:38 +01:00
{{ if not .Repository.IsArchived }}
< div class = "column right aligned" >
2019-03-15 16:50:27 +01:00
{{ if or .CanWriteIssues .CanWritePulls }}
2019-01-23 19:58:38 +01:00
< a class = "ui grey button" href = " {{ .RepoLink }} /milestones/ {{ .MilestoneID }} /edit" > {{ .i18n.Tr "repo.milestones.edit" }} </ a >
2019-03-15 16:50:27 +01:00
{{ end }}
2019-01-23 19:58:38 +01:00
< a class = "ui green button" href = " {{ .RepoLink }} /issues/new?milestone= {{ .MilestoneID }} " > {{ .i18n.Tr "repo.issues.new" }} </ a >
< / div >
{{ end }}
2018-11-29 02:46:30 +01:00
< / div >
< div class = "ui one column stackable grid" >
< div class = "column" >
{{ $closedDate := TimeSinceUnix .Milestone.ClosedDateUnix $.Lang }}
{{ if .IsClosed }}
< span class = "octicon octicon-clock" ></ span > {{ $.i18n.Tr "repo.milestones.closed" $closedDate | Str2html }}
{{ else }}
< span class = "octicon octicon-calendar" > < / span >
{{ if .Milestone.DeadlineString }}
< span {{ if .IsOverdue }} class = "overdue" {{ end }} > {{ .Milestone.DeadlineString }} </ span >
{{ else }}
{{ $.i18n.Tr "repo.milestones.no_due_date" }}
{{ end }}
{{ end }}
< b > {{ .i18n.Tr "repo.milestones.completeness" .Milestone.Completeness }} </ b >
< / div >
< / div >
< div class = "ui divider" > < / div >
< div id = "issue-filters" class = "ui stackable grid" >
< div class = "six wide column" >
< div class = "ui tiny basic status buttons" >
< a class = "ui {{ if not .IsShowClosed }} green active {{ end }} basic button" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort= {{ $.SortType }} &state=open&labels= {{ .SelectLabels }} &assignee= {{ .AssigneeID }} " >
< i class = "octicon octicon-issue-opened" > < / i >
{{ .i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount }}
< / a >
< a class = "ui {{ if .IsShowClosed }} red active {{ end }} basic button" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ .ViewType }} &sort= {{ $.SortType }} &state=closed&labels= {{ .SelectLabels }} &assignee= {{ .AssigneeID }} " >
< i class = "octicon octicon-issue-closed" > < / i >
{{ .i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount }}
< / a >
< / div >
< / div >
< div class = "ten wide right aligned column" >
2019-10-29 21:50:38 +01:00
< div class = "ui secondary filter stackable menu labels" >
2018-11-29 02:46:30 +01:00
<!-- Label -->
2019-10-29 21:50:38 +01:00
< div class = "ui {{ if not .Labels }} disabled {{ end }} dropdown jump item label-filter" style = "margin-left: auto" >
2018-11-29 02:46:30 +01:00
< span class = "text" >
{{ .i18n.Tr "repo.issues.filter_label" }}
< i class = "dropdown icon" > < / i >
< / span >
< div class = "menu" >
2019-10-29 21:50:38 +01:00
< span class = "info" > {{ .i18n.Tr "repo.issues.filter_label_exclude" | Safe }} </ span >
2018-11-29 02:46:30 +01:00
< a class = "item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort= {{ $.SortType }} &state= {{ $.State }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_label_no_select" }} </ a >
{{ range .Labels }}
2019-10-29 21:50:38 +01:00
< a class = "item has-emoji label-filter-item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ .ID }} &assignee= {{ $.AssigneeID }} " data-label-id = " {{ .ID }} " >< span class = "octicon {{ if .IsExcluded }} octicon-circle-slash {{ else if eq $.SelectLabels .ID }} octicon-check {{ end }} " ></ span >< span class = "label color" style = "background-color: {{ .Color }} " ></ span > {{ .Name }} </ a >
2018-11-29 02:46:30 +01:00
{{ end }}
< / div >
< / div >
<!-- Assignee -->
< div class = "ui {{ if not .Assignees }} disabled {{ end }} dropdown jump item" >
< span class = "text" >
{{ .i18n.Tr "repo.issues.filter_assignee" }}
< i class = "dropdown icon" > < / i >
< / span >
< div class = "menu" >
< a class = "item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ .SelectLabels }} " > {{ .i18n.Tr "repo.issues.filter_assginee_no_select" }} </ a >
{{ range .Assignees }}
2019-05-08 10:41:35 +02:00
< a class = " {{ if eq $.AssigneeID .ID }} active selected {{ end }} item" href = " {{ $.Link }} ?type= {{ $.ViewType }} &sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ $.SelectLabels }} &assignee= {{ .ID }} " >< img src = " {{ .RelAvatarLink }} " > {{ .GetDisplayName }} </ a >
2018-11-29 02:46:30 +01:00
{{ end }}
< / div >
< / div >
{{ if .IsSigned }}
<!-- Type -->
< div class = "ui dropdown type jump item" >
< span class = "text" >
{{ .i18n.Tr "repo.issues.filter_type" }}
< i class = "dropdown icon" > < / i >
< / span >
< div class = "menu" >
< a class = " {{ if eq .ViewType "all" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type=all&sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_type.all_issues" }} </ a >
< a class = " {{ if eq .ViewType "assigned" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type=assigned&sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ .SignedUser.ID }} " > {{ .i18n.Tr "repo.issues.filter_type.assigned_to_you" }} </ a >
< a class = " {{ if eq .ViewType "created_by" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type=created_by&sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_type.created_by_you" }} </ a >
< a class = " {{ if eq .ViewType "mentioned" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type=mentioned&sort= {{ $.SortType }} &state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_type.mentioning_you" }} </ a >
< / div >
< / div >
{{ end }}
<!-- Sort -->
< div class = "ui dropdown type jump item" >
< span class = "text" >
{{ .i18n.Tr "repo.issues.filter_sort" }}
< i class = "dropdown icon" > < / i >
< / span >
< div class = "menu" >
< a class = " {{ if or ( eq .SortType "latest" ) ( not .SortType ) }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort=latest&state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_sort.latest" }} </ a >
< a class = " {{ if eq .SortType "oldest" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort=oldest&state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_sort.oldest" }} </ a >
< a class = " {{ if eq .SortType "recentupdate" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort=recentupdate&state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_sort.recentupdate" }} </ a >
< a class = " {{ if eq .SortType "leastupdate" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort=leastupdate&state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_sort.leastupdate" }} </ a >
< a class = " {{ if eq .SortType "mostcomment" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort=mostcomment&state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_sort.mostcomment" }} </ a >
< a class = " {{ if eq .SortType "leastcomment" }} active {{ end }} item" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort=leastcomment&state= {{ $.State }} &labels= {{ .SelectLabels }} &assignee= {{ $.AssigneeID }} " > {{ .i18n.Tr "repo.issues.filter_sort.leastcomment" }} </ a >
< / div >
< / div >
< / div >
< / div >
< / div >
2019-03-15 16:50:27 +01:00
< div id = "issue-actions" class = "ui stackable grid hide" >
2018-11-29 02:46:30 +01:00
< div class = "six wide column" >
2019-03-15 16:50:27 +01:00
< div class = "ui tiny basic status buttons" >
< a class = "ui {{ if not .IsShowClosed }} green active {{ end }} basic button" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &sort= {{ $.SortType }} &state=open&labels= {{ .SelectLabels }} &assignee= {{ .AssigneeID }} " >
< i class = "octicon octicon-issue-opened" > < / i >
{{ .i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount }}
< / a >
< a class = "ui {{ if .IsShowClosed }} red active {{ end }} basic button" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ .ViewType }} &sort= {{ $.SortType }} &state=closed&labels= {{ .SelectLabels }} &assignee= {{ .AssigneeID }} " >
< i class = "octicon octicon-issue-closed" > < / i >
{{ .i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount }}
< / a >
2018-11-29 02:46:30 +01:00
< / div >
< / div >
{{ /* Ten wide does not cope well and makes the columns stack .
This seems to be related to jQuery's hide/show: in fact, switching
issue-actions and issue-filters and having this ten wide will show
this one correctly, but not the other one. */}}
< div class = "nine wide right aligned right floated column" >
< div class = "ui secondary filter stackable menu" >
2019-03-15 16:50:27 +01:00
<!-- Action Button -->
{{ if .IsShowClosed }}
< div class = "ui green active basic button issue-action" data-action = "open" data-url = " {{ $.RepoLink }} /issues/status" style = "margin-left: auto" > {{ .i18n.Tr "repo.issues.action_open" }} </ div >
{{ else }}
< div class = "ui red active basic button issue-action" data-action = "close" data-url = " {{ $.RepoLink }} /issues/status" style = "margin-left: auto" > {{ .i18n.Tr "repo.issues.action_close" }} </ div >
{{ end }}
2018-11-29 02:46:30 +01:00
<!-- Labels -->
2019-03-15 16:50:27 +01:00
< div class = "ui {{ if not .Labels }} disabled {{ end }} dropdown jump item" >
2018-11-29 02:46:30 +01:00
< span class = "text" >
{{ .i18n.Tr "repo.issues.action_label" }}
< i class = "dropdown icon" > < / i >
< / span >
< div class = "menu" >
{{ range .Labels }}
2019-03-15 16:50:27 +01:00
< div class = "item issue-action has-emoji" data-action = "toggle" data-element-id = " {{ .ID }} " data-url = " {{ $.RepoLink }} /issues/labels" >
2018-11-29 02:46:30 +01:00
< span class = "octicon {{ if eq $.SelectLabels .ID }} octicon-check {{ end }} " ></ span >< span class = "label color" style = "background-color: {{ .Color }} " ></ span > {{ .Name }}
< / div >
{{ end }}
< / div >
< / div >
<!-- Assignees -->
< div class = "ui {{ if not .Assignees }} disabled {{ end }} dropdown jump item" >
< span class = "text" >
{{ .i18n.Tr "repo.issues.action_assignee" }}
< i class = "dropdown icon" > < / i >
< / span >
< div class = "menu" >
< div class = "item issue-action" data-element-id = "0" data-url = " {{ $.Link }} /assignee" >
{{ .i18n.Tr "repo.issues.action_assignee_no_select" }}
< / div >
{{ range .Assignees }}
< div class = "item issue-action" data-element-id = " {{ .ID }} " data-url = " {{ $.RepoLink }} /issues/assignee" >
2019-05-08 10:41:35 +02:00
< img src = " {{ .RelAvatarLink }} " > {{ .GetDisplayName }}
2018-11-29 02:46:30 +01:00
< / div >
{{ end }}
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "issue list" >
{{ range .Issues }}
{{ $timeStr := TimeSinceUnix .CreatedUnix $.Lang }}
< li class = "item" >
2019-03-15 16:50:27 +01:00
{{ if or ( and $.CanWriteIssues ( not .IsPull )) ( and $.CanWritePulls .IsPull ) }}
2018-11-29 02:46:30 +01:00
< div class = "ui checkbox issue-checkbox" >
< input type = "checkbox" data-issue-id = {{ .ID }} > </input >
< / div >
2019-03-15 16:50:27 +01:00
{{ end }}
2019-12-04 02:39:58 +01:00
< div class = "ui {{ if .IsRead }} gray {{ else }} green {{ end }} label" > #{{ .Index }} </ div >
2018-11-29 02:46:30 +01:00
< a class = "title has-emoji" href = " {{ $.RepoLink }} /issues/ {{ .Index }} " > {{ .Title }} </ a >
{{ range .Labels }}
2019-03-15 16:50:27 +01:00
< a class = "ui label has-emoji" href = " {{ $.Link }} ?q= {{ $.Keyword }} &type= {{ $.ViewType }} &state= {{ $.State }} &labels= {{ .ID }} &assignee= {{ $.AssigneeID }} " style = "color: {{ .ForegroundColor }} ; background-color: {{ .Color }} " title = " {{ .Description }} " > {{ .Name }} </ a >
2018-11-29 02:46:30 +01:00
{{ end }}
{{ if .NumComments }}
< span class = "comment ui right" >< i class = "octicon octicon-comment" ></ i > {{ .NumComments }} </ span >
{{ end }}
{{ if .TotalTrackedTime }}
< span class = "comment ui right" >< i class = "octicon octicon-clock" ></ i > {{ .TotalTrackedTime | Sec2Time }} </ span >
{{ end }}
< p class = "desc" >
2019-03-27 23:22:39 +01:00
{{ if gt .Poster.ID 0 }}
2019-05-08 10:41:35 +02:00
{{ $.i18n.Tr .GetLastEventLabel $timeStr .Poster.HomeLink ( .Poster.GetDisplayName | Escape ) | Safe }}
2019-03-27 23:22:39 +01:00
{{ else }}
2019-05-08 10:41:35 +02:00
{{ $.i18n.Tr .GetLastEventLabelFake $timeStr ( .Poster.GetDisplayName | Escape ) | Safe }}
2019-03-27 23:22:39 +01:00
{{ end }}
2019-09-12 11:31:36 +02:00
{{ if .Ref }}
< a class = "ref" href = " {{ $.RepoLink }} /src/branch/ {{ .Ref }} " >
< span class = "octicon octicon-git-branch" ></ span > {{ .Ref }}
< / a >
{{ end }}
2018-11-29 02:46:30 +01:00
{{ $tasks := .GetTasks }}
{{ if gt $tasks 0 }}
{{ $tasksDone := .GetTasksDone }}
< span class = "checklist" >
< span class = "octicon octicon-checklist" ></ span > {{ $tasksDone }} / {{ $tasks }} < span class = "progress-bar" >< span class = "progress" style = "width:calc(100% * {{ $tasksDone }} / {{ $tasks }} );" ></ span ></ span >
< / span >
{{ end }}
{{ if ne .DeadlineUnix 0 }}
< span class = "octicon octicon-calendar" > < / span >
< span {{ if .IsOverdue }} class = "overdue" {{ end }} > {{ .DeadlineUnix.FormatShort }} </ span >
{{ end }}
{{ range .Assignees }}
< a class = "ui right assignee poping up" href = " {{ .HomeLink }} " data-content = " {{ .Name }} " data-variation = "inverted" data-position = "left center" >
< img class = "ui avatar image" src = " {{ .RelAvatarLink }} " >
< / a >
{{ end }}
< / p >
< / li >
{{ end }}
2019-04-20 06:15:19 +02:00
{{ template "base/paginate" . }}
2018-11-29 02:46:30 +01:00
< / div >
< / div >
< / div >
{{ template "base/footer" . }}