You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

filters.tmpl 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <div id="issue-filters" class="issue-list-toolbar">
  2. <div class="issue-list-toolbar-left">
  3. {{if and $.CanWriteIssuesOrPulls .Issues}}
  4. <input type="checkbox" autocomplete="off" class="issue-checkbox-all gt-mr-4" title="{{ctx.Locale.Tr "repo.issues.action_check_all"}}">
  5. {{end}}
  6. {{template "repo/issue/openclose" .}}
  7. </div>
  8. <div class="issue-list-toolbar-right">
  9. <div class="ui secondary filter menu labels">
  10. <!-- Label -->
  11. <div class="ui {{if not .Labels}}disabled{{end}} dropdown jump item label-filter">
  12. <span class="text">
  13. {{ctx.Locale.Tr "repo.issues.filter_label"}}
  14. </span>
  15. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  16. <div class="menu">
  17. <div class="ui icon search input">
  18. <i class="icon">{{svg "octicon-search" 16}}</i>
  19. <input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_label"}}">
  20. </div>
  21. <div class="ui checkbox compact archived-label-filter">
  22. <input name="archived" type="checkbox"
  23. id="archived-filter-checkbox"
  24. {{if .ShowArchivedLabels}}checked{{end}}
  25. >
  26. <label for="archived-filter-checkbox">
  27. {{ctx.Locale.Tr "repo.issues.label_archived_filter"}}
  28. <i class="gt-ml-2" data-tooltip-content={{ctx.Locale.Tr "repo.issues.label_archive_tooltip"}}>
  29. {{svg "octicon-info"}}
  30. </i>
  31. </label>
  32. </div>
  33. <span class="info">{{ctx.Locale.Tr "repo.issues.filter_label_exclude" | Safe}}</span>
  34. <div class="divider"></div>
  35. <a class="{{if .AllLabels}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_label_no_select"}}</a>
  36. <a class="{{if .NoLabel}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels=0&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_label_select_no_label"}}</a>
  37. {{$previousExclusiveScope := "_no_scope"}}
  38. {{range .Labels}}
  39. {{$exclusiveScope := .ExclusiveScope}}
  40. {{if and (ne $previousExclusiveScope $exclusiveScope)}}
  41. <div class="divider"></div>
  42. {{end}}
  43. {{$previousExclusiveScope = $exclusiveScope}}
  44. <a class="item label-filter-item gt-df gt-ac" {{if .IsArchived}}data-is-archived{{end}} href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.QueryString}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}" data-label-id="{{.ID}}">
  45. {{if .IsExcluded}}
  46. {{svg "octicon-circle-slash"}}
  47. {{else if .IsSelected}}
  48. {{if $exclusiveScope}}
  49. {{svg "octicon-dot-fill"}}
  50. {{else}}
  51. {{svg "octicon-check"}}
  52. {{end}}
  53. {{end}}
  54. {{RenderLabel $.Context .}}
  55. <p class="gt-ml-auto">{{template "repo/issue/labels/label_archived" .}}</p>
  56. </a>
  57. {{end}}
  58. </div>
  59. </div>
  60. {{if not .Milestone}}
  61. <!-- Milestone -->
  62. <div class="ui {{if not (or .OpenMilestones .ClosedMilestones)}}disabled{{end}} dropdown jump item">
  63. <span class="text">
  64. {{ctx.Locale.Tr "repo.issues.filter_milestone"}}
  65. </span>
  66. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  67. <div class="menu">
  68. <div class="ui icon search input">
  69. <i class="icon">{{svg "octicon-search" 16}}</i>
  70. <input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_milestone"}}">
  71. </div>
  72. <div class="divider"></div>
  73. <a class="{{if not $.MilestoneID}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone=0&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_milestone_all"}}</a>
  74. <a class="{{if $.MilestoneID}}{{if eq $.MilestoneID -1}}active selected {{end}}{{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone=-1&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_milestone_none"}}</a>
  75. {{if .OpenMilestones}}
  76. <div class="divider"></div>
  77. <div class="header">{{ctx.Locale.Tr "repo.issues.filter_milestone_open"}}</div>
  78. {{range .OpenMilestones}}
  79. <a class="{{if $.MilestoneID}}{{if eq $.MilestoneID .ID}}active selected {{end}}{{end}}item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
  80. {{svg "octicon-milestone" 16 "mr-2"}}
  81. {{.Name}}
  82. </a>
  83. {{end}}
  84. {{end}}
  85. {{if .ClosedMilestones}}
  86. <div class="divider"></div>
  87. <div class="header">{{ctx.Locale.Tr "repo.issues.filter_milestone_closed"}}</div>
  88. {{range .ClosedMilestones}}
  89. <a class="{{if $.MilestoneID}}{{if eq $.MilestoneID .ID}}active selected {{end}}{{end}}item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
  90. {{svg "octicon-milestone" 16 "mr-2"}}
  91. {{.Name}}
  92. </a>
  93. {{end}}
  94. {{end}}
  95. </div>
  96. </div>
  97. {{end}}
  98. <!-- Project -->
  99. <div class="ui{{if not (or .OpenProjects .ClosedProjects)}} disabled{{end}} dropdown jump item">
  100. <span class="text">
  101. {{ctx.Locale.Tr "repo.issues.filter_project"}}
  102. </span>
  103. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  104. <div class="menu">
  105. <div class="ui icon search input">
  106. <i class="icon">{{svg "octicon-search" 16}}</i>
  107. <input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_project"}}">
  108. </div>
  109. <a class="{{if not .ProjectID}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_project_all"}}</a>
  110. <a class="{{if eq .ProjectID -1}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&project=-1&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_project_none"}}</a>
  111. {{if .OpenProjects}}
  112. <div class="divider"></div>
  113. <div class="header">
  114. {{ctx.Locale.Tr "repo.issues.new.open_projects"}}
  115. </div>
  116. {{range .OpenProjects}}
  117. <a class="{{if $.ProjectID}}{{if eq $.ProjectID .ID}}active selected{{end}}{{end}} item gt-df" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{.ID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
  118. {{svg .IconName 18 "gt-mr-3 gt-shrink-0"}}<span class="gt-ellipsis">{{.Title}}</span>
  119. </a>
  120. {{end}}
  121. {{end}}
  122. {{if .ClosedProjects}}
  123. <div class="divider"></div>
  124. <div class="header">
  125. {{ctx.Locale.Tr "repo.issues.new.closed_projects"}}
  126. </div>
  127. {{range .ClosedProjects}}
  128. <a class="{{if $.ProjectID}}{{if eq $.ProjectID .ID}}active selected{{end}}{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{.ID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
  129. {{svg .IconName 18 "gt-mr-3"}}{{.Title}}
  130. </a>
  131. {{end}}
  132. {{end}}
  133. </div>
  134. </div>
  135. <!-- Author -->
  136. <div class="ui dropdown jump item user-remote-search" data-tooltip-content="{{ctx.Locale.Tr "repo.author_search_tooltip"}}"
  137. data-search-url="{{if .Milestone}}{{$.RepoLink}}/issues/posters{{else}}{{$.Link}}/posters{{end}}"
  138. data-selected-user-id="{{$.PosterID}}"
  139. data-action-jump-url="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={user_id}{{if $.ShowArchivedLabels}}&archived=true{{end}}"
  140. >
  141. <span class="text">
  142. {{ctx.Locale.Tr "repo.issues.filter_poster"}}
  143. </span>
  144. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  145. <div class="menu">
  146. <div class="ui icon search input">
  147. <i class="icon">{{svg "octicon-search" 16}}</i>
  148. <input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_poster"}}">
  149. </div>
  150. <a class="item" data-value="0">{{ctx.Locale.Tr "repo.issues.filter_poster_no_select"}}</a>
  151. </div>
  152. </div>
  153. <!-- Assignee -->
  154. <div class="ui {{if not .Assignees}}disabled{{end}} dropdown jump item">
  155. <span class="text">
  156. {{ctx.Locale.Tr "repo.issues.filter_assignee"}}
  157. </span>
  158. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  159. <div class="menu">
  160. <div class="ui icon search input">
  161. <i class="icon">{{svg "octicon-search" 16}}</i>
  162. <input type="text" placeholder="{{ctx.Locale.Tr "repo.issues.filter_assignee"}}">
  163. </div>
  164. <a class="{{if not .AssigneeID}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
  165. <a class="{{if eq .AssigneeID -1}}active selected {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee=-1&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_assginee_no_assignee"}}</a>
  166. <div class="divider"></div>
  167. {{range .Assignees}}
  168. <a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item gt-df" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{.ID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">
  169. {{ctx.AvatarUtils.Avatar . 20}}{{template "repo/search_name" .}}
  170. </a>
  171. {{end}}
  172. </div>
  173. </div>
  174. {{if .IsSigned}}
  175. <!-- Type -->
  176. <div class="ui dropdown type jump item">
  177. <span class="text">
  178. {{ctx.Locale.Tr "repo.issues.filter_type"}}
  179. </span>
  180. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  181. <div class="menu">
  182. <a class="{{if eq .ViewType "all"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type=all&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_type.all_issues"}}</a>
  183. <a class="{{if eq .ViewType "assigned"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type=assigned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_type.assigned_to_you"}}</a>
  184. <a class="{{if eq .ViewType "created_by"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type=created_by&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_type.created_by_you"}}</a>
  185. {{if .PageIsPullList}}
  186. <a class="{{if eq .ViewType "review_requested"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type=review_requested&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_type.review_requested"}}</a>
  187. <a class="{{if eq .ViewType "reviewed_by"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type=reviewed_by&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_type.reviewed_by_you"}}</a>
  188. {{end}}
  189. <a class="{{if eq .ViewType "mentioned"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type=mentioned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_type.mentioning_you"}}</a>
  190. </div>
  191. </div>
  192. {{end}}
  193. <!-- Sort -->
  194. <div class="list-header-sort ui small dropdown downward type jump item">
  195. <span class="text">
  196. {{ctx.Locale.Tr "repo.issues.filter_sort"}}
  197. </span>
  198. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  199. <div class="menu">
  200. <a class="{{if or (eq .SortType "latest") (not .SortType)}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=latest&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.latest"}}</a>
  201. <a class="{{if eq .SortType "oldest"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=oldest&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.oldest"}}</a>
  202. <a class="{{if eq .SortType "recentupdate"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=recentupdate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.recentupdate"}}</a>
  203. <a class="{{if eq .SortType "leastupdate"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=leastupdate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.leastupdate"}}</a>
  204. <a class="{{if eq .SortType "mostcomment"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=mostcomment&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.mostcomment"}}</a>
  205. <a class="{{if eq .SortType "leastcomment"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=leastcomment&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.leastcomment"}}</a>
  206. <a class="{{if eq .SortType "nearduedate"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=nearduedate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.nearduedate"}}</a>
  207. <a class="{{if eq .SortType "farduedate"}}active {{end}}item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort=farduedate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{$.PosterID}}{{if $.ShowArchivedLabels}}&archived=true{{end}}">{{ctx.Locale.Tr "repo.issues.filter_sort.farduedate"}}</a>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. </div>