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.

sidebar.tmpl 8.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <div class="four wide column">
  2. <div class="ui segment metas">
  3. {{template "repo/issue/branch_selector_field" .}}
  4. <div class="ui {{if not .IsRepositoryWriter}}disabled{{end}} floating jump select-label dropdown">
  5. <span class="text">
  6. <strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong>
  7. <span class="octicon octicon-gear"></span>
  8. </span>
  9. <div class="filter menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/labels">
  10. <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>
  11. {{range .Labels}}
  12. <a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
  13. {{if .Description }}<br><small class="desc">{{.Description}}</small>{{end}}</a>
  14. {{end}}
  15. </div>
  16. </div>
  17. <div class="ui labels list">
  18. <span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span>
  19. {{range .Labels}}
  20. <div class="item">
  21. <a class="ui label {{if not .IsChecked}}hide{{end}}" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}" title="{{.Description}}">{{.Name}}</a>
  22. </div>
  23. {{end}}
  24. </div>
  25. <div class="ui divider"></div>
  26. <div class="ui {{if not .IsRepositoryWriter}}disabled{{end}} floating jump select-milestone dropdown">
  27. <span class="text">
  28. <strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong>
  29. <span class="octicon octicon-gear"></span>
  30. </span>
  31. <div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/milestone">
  32. <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div>
  33. {{if .OpenMilestones}}
  34. <div class="divider"></div>
  35. <div class="header">
  36. <i class="octicon octicon-milestone"></i>
  37. {{.i18n.Tr "repo.issues.new.open_milestone"}}
  38. </div>
  39. {{range .OpenMilestones}}
  40. <div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</div>
  41. {{end}}
  42. {{end}}
  43. {{if .ClosedMilestones}}
  44. <div class="divider"></div>
  45. <div class="header">
  46. <i class="octicon octicon-milestone"></i>
  47. {{.i18n.Tr "repo.issues.new.closed_milestone"}}
  48. </div>
  49. {{range .ClosedMilestones}}
  50. <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</a>
  51. {{end}}
  52. {{end}}
  53. </div>
  54. </div>
  55. <div class="ui select-milestone list">
  56. <span class="no-select item {{if .Issue.Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span>
  57. <div class="selected">
  58. {{if .Issue.Milestone}}
  59. <a class="item" href="{{.RepoLink}}/issues?milestone={{.Issue.Milestone.ID}}"> {{.Issue.Milestone.Name}}</a>
  60. {{end}}
  61. </div>
  62. </div>
  63. <div class="ui divider"></div>
  64. <input id="assignee_id" name="assignee_id" type="hidden" value="{{.assignee_id}}">
  65. <div class="ui {{if not .IsRepositoryWriter}}disabled{{end}} floating jump select-assignee dropdown">
  66. <span class="text">
  67. <strong>{{.i18n.Tr "repo.issues.new.assignee"}}</strong>
  68. <span class="octicon octicon-gear"></span>
  69. </span>
  70. <div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/assignee">
  71. <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignee"}}</div>
  72. {{range .Assignees}}
  73. <div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?assignee={{.ID}}" data-avatar="{{.RelAvatarLink}}"><img src="{{.RelAvatarLink}}"> {{.Name}}</div>
  74. {{end}}
  75. </div>
  76. </div>
  77. <div class="ui select-assignee list">
  78. <span class="no-select item {{if .Issue.Assignee}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_assignee"}}</span>
  79. <div class="selected">
  80. {{if .Issue.Assignee}}
  81. <a class="item" href="{{$.RepoLink}}/issues?assignee={{.Issue.Assignee.ID}}"><img class="ui avatar image" src="{{.Issue.Assignee.RelAvatarLink}}"> {{.Issue.Assignee.Name}}</a>
  82. {{end}}
  83. </div>
  84. </div>
  85. <div class="ui divider"></div>
  86. <div class="ui participants">
  87. <span class="text"><strong>{{.i18n.Tr "repo.issues.num_participants" .NumParticipants}}</strong></span>
  88. <div>
  89. {{range .Participants}}
  90. <a href="{{.HomeLink}}">
  91. <img class="ui avatar image poping up" src="{{.RelAvatarLink}}" data-content="{{.DisplayName}}" data-position="top center" data-variation="small inverted">
  92. </a>
  93. {{end}}
  94. </div>
  95. </div>
  96. {{if $.IssueWatch}}
  97. <div class="ui divider"></div>
  98. <div class="ui watching">
  99. <span class="text"><strong>{{.i18n.Tr "notification.notifications"}}</strong></span>
  100. <div>
  101. <form method="POST" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/watch">
  102. <input type="hidden" name="watch" value="{{if $.IssueWatch.IsWatching}}0{{else}}1{{end}}" />
  103. {{$.CsrfTokenHtml}}
  104. <button class="fluid ui button">
  105. {{if $.IssueWatch.IsWatching}}
  106. <i class="octicon octicon-mute"></i>
  107. {{.i18n.Tr "repo.issues.unsubscribe"}}
  108. {{else}}
  109. <i class="octicon octicon-unmute"></i>
  110. {{.i18n.Tr "repo.issues.subscribe"}}
  111. {{end}}
  112. </button>
  113. </form>
  114. </div>
  115. </div>
  116. {{end}}
  117. {{if .Repository.IsTimetrackerEnabled }}
  118. {{if .CanUseTimetracker }}
  119. <div class="ui divider"></div>
  120. <div class="ui timetrack">
  121. <span class="text"><strong>{{.i18n.Tr "repo.issues.tracker"}}</strong></span>
  122. <div>
  123. <form method="POST" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/times/stopwatch/toggle" id="toggle_stopwatch_form">
  124. {{$.CsrfTokenHtml}}
  125. </form>
  126. <form method="POST" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/times/stopwatch/cancel" id="cancel_stopwatch_form">
  127. {{$.CsrfTokenHtml}}
  128. </form>
  129. {{if $.IsStopwatchRunning}}
  130. <div class="ui buttons fluid stop-cancel">
  131. <button onclick="this.disabled=true;toggleStopwatch()" class="ui button stop">{{.i18n.Tr "repo.issues.stop_tracking"}}</button>
  132. <button onclick="this.disabled=true;cancelStopwatch()" class="ui negative button cancel">{{.i18n.Tr "repo.issues.cancel_tracking"}}</button>
  133. </div>
  134. {{else}}
  135. {{if .HasUserStopwatch}}
  136. <div class="ui warning message">
  137. {{.i18n.Tr "repo.issues.tracking_already_started" .OtherStopwatchURL | Safe}}
  138. </div>
  139. {{end}}
  140. <div class="ui buttons two fluid start-add">
  141. <button onclick="this.disabled=true;toggleStopwatch()" class="ui button poping up start" data-content='{{.i18n.Tr "repo.issues.start_tracking"}}' data-position="top center" data-variation="small inverted">{{.i18n.Tr "repo.issues.start_tracking_short"}}</button>
  142. <button onclick="timeAddManual()" class="ui button green poping up add-time" data-content='{{.i18n.Tr "repo.issues.add_time"}}' data-position="top center" data-variation="small inverted">{{.i18n.Tr "repo.issues.add_time_short"}}</button>
  143. <div class="ui mini modal">
  144. <div class="header">{{.i18n.Tr "repo.issues.add_time"}}</div>
  145. <div class="content">
  146. <form method="POST" id="add_time_manual_form" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/times/add" class="ui action input fluid">
  147. {{$.CsrfTokenHtml}}
  148. <input placeholder='{{.i18n.Tr "repo.issues.add_time_hours"}}' type="number" name="hours">
  149. <input placeholder='{{.i18n.Tr "repo.issues.add_time_minutes"}}' type="number" name="minutes" class="ui compact">
  150. </form>
  151. </div>
  152. <div class="actions">
  153. <div class="ui green approve button">{{.i18n.Tr "repo.issues.add_time_short"}}</div>
  154. <div class="ui red cancel button">{{.i18n.Tr "repo.issues.add_time_cancel"}}</div>
  155. </div>
  156. </div>
  157. </div>
  158. {{end}}
  159. </div>
  160. </div>
  161. {{end}}
  162. {{if gt (len .WorkingUsers) 0}}
  163. <div class="ui divider"></div>
  164. <div class="ui participants comments">
  165. <span class="text"><strong>{{.i18n.Tr "repo.issues.time_spent_total"}}</strong></span>
  166. <div>
  167. {{range $user, $trackedtime := .WorkingUsers}}
  168. <div class="comment">
  169. <a class="avatar">
  170. <img src="{{$user.RelAvatarLink}}">
  171. </a>
  172. <div class="content">
  173. <a class="author">{{$user.DisplayName}}</a>
  174. <div class="text">
  175. {{$trackedtime}}
  176. </div>
  177. </div>
  178. </div>
  179. {{end}}
  180. </div>
  181. </div>
  182. {{end}}
  183. {{end}}
  184. </div>
  185. </div>