Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  1. <div class="four wide column">
  2. <div class="ui segment metas">
  3. {{template "repo/issue/branch_selector_field" .}}
  4. {{if .Issue.IsPull}}
  5. <input id="reviewer_id" name="reviewer_id" type="hidden" value="{{.reviewer_id}}">
  6. <div class="ui {{if or (not .Reviewers) (not .CanChooseReviewer) .Repository.IsArchived}}disabled{{end}} floating jump select-reviewers-modify dropdown">
  7. <a class="text gt-df gt-ac muted">
  8. <strong>{{.locale.Tr "repo.issues.review.reviewers"}}</strong>
  9. {{if and .CanChooseReviewer (not .Repository.IsArchived)}}
  10. {{svg "octicon-gear" 16 "gt-ml-2"}}
  11. {{end}}
  12. </a>
  13. <div class="filter menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
  14. <div class="header" style="text-transform: none;font-size:16px;">{{.locale.Tr "repo.issues.new.add_reviewer_title"}}</div>
  15. {{if .Reviewers}}
  16. <div class="ui icon search input">
  17. <i class="icon gt-df gt-ac gt-jc">{{svg "octicon-search" 16}}</i>
  18. <input type="text" placeholder="{{.locale.Tr "repo.issues.filter_reviewers"}}">
  19. </div>
  20. {{end}}
  21. {{if .Reviewers}}
  22. {{range .Reviewers}}
  23. {{if .User}}
  24. <a class="{{if not .CanChange}}ui{{end}} item {{if .Checked}}checked{{end}} {{if not .CanChange}}ban-change{{end}}" href="#" data-id="{{.ItemID}}" data-id-selector="#review_request_{{.ItemID}}" {{if not .CanChange}} data-tooltip-content="{{$.locale.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
  25. <span class="octicon-check {{if not .Checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
  26. <span class="text">
  27. {{avatar $.Context .User 28 "gt-mr-3"}}{{template "repo/search_name" .User}}
  28. </span>
  29. </a>
  30. {{end}}
  31. {{end}}
  32. {{end}}
  33. {{if .TeamReviewers}}
  34. <div class="ui divider"></div>
  35. {{range .TeamReviewers}}
  36. {{if .Team}}
  37. <a class="{{if not .CanChange}}ui{{end}} item {{if .Checked}}checked{{end}} {{if not .CanChange}}ban-change{{end}}" href="#" data-id="{{.ItemID}}" data-id-selector="#review_request_team_{{.Team.ID}}" {{if not .CanChange}} data-tooltip-content="{{$.locale.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
  38. <span class="octicon-check {{if not .Checked}}invisible{{end}}">{{svg "octicon-check" 16}}</span>
  39. <span class="text">
  40. {{svg "octicon-people" 16 "gt-ml-4 gt-mr-2"}}{{$.Issue.Repo.OwnerName}}/{{.Team.Name}}
  41. </span>
  42. </a>
  43. {{end}}
  44. {{end}}
  45. {{end}}
  46. </div>
  47. </div>
  48. <div class="ui assignees list">
  49. <span class="no-select item {{if or .OriginalReviews .PullReviewers}}gt-hidden{{end}}">{{.locale.Tr "repo.issues.new.no_reviewers"}}</span>
  50. <div class="selected">
  51. {{range .PullReviewers}}
  52. <div class="item gt-mb-2">
  53. {{if .User}}
  54. <a class="muted sidebar-item-link" href="{{.User.HomeLink}}">
  55. {{avatar $.Context .User 28 "gt-mr-3"}}
  56. {{.User.GetDisplayName}}
  57. </a>
  58. {{else if .Team}}
  59. <span class="text">{{svg "octicon-people" 16 "teamavatar"}}{{$.Issue.Repo.OwnerName}}/{{.Team.Name}}</span>
  60. {{end}}
  61. <span class="ui right type-icon text {{if eq .Review.Type 1}}green
  62. {{- else if eq .Review.Type 2}}grey
  63. {{- else if eq .Review.Type 3}}red
  64. {{- else if eq .Review.Type 4}}yellow
  65. {{- else}}grey{{end}} right ">
  66. {{if .CanChange}}
  67. <a href="#" class="ui icon re-request-review {{if .Checked}}checked{{end}}" data-tooltip-content="{{if .Checked}} {{$.locale.Tr "repo.issues.remove_request_review"}} {{else}} {{$.locale.Tr "repo.issues.re_request_review"}} {{end}}" data-issue-id="{{$.Issue.ID}}" data-id="{{.ItemID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
  68. {{if .Checked}} {{svg "octicon-trash"}} {{else}} {{svg "octicon-sync"}} {{end}}
  69. </a>
  70. {{end}}
  71. {{svg (printf "octicon-%s" .Review.Type.Icon)}}
  72. </span>
  73. </div>
  74. {{end}}
  75. {{range .OriginalReviews}}
  76. <div class="item" style="margin-bottom: 10px;">
  77. <a href="{{$.Repository.OriginalURL}}" data-tooltip-content="{{$.locale.Tr "repo.migrated_from_fake" ($.Repository.GetOriginalURLHostname|Escape) | Safe}}">
  78. <span class="text black">
  79. {{svg (MigrationIcon $.Repository.GetOriginalURLHostname)}}
  80. {{.OriginalAuthor}}
  81. </span>
  82. </a>
  83. <span class="ui right type-icon text {{if eq .Type 1}}green
  84. {{- else if eq .Type 2}}grey
  85. {{- else if eq .Type 3}}red
  86. {{- else if eq .Type 4}}yellow
  87. {{- else}}grey{{end}} right ">
  88. {{svg (printf "octicon-%s" .Type.Icon)}}
  89. </span>
  90. </div>
  91. {{end}}
  92. </div>
  93. </div>
  94. {{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .HasMerged) (not .Issue.IsClosed) (not .IsPullWorkInProgress)}}
  95. <div class="toggle-wip" data-title="{{.Issue.Title}}" data-wip-prefix="{{(index .PullRequestWorkInProgressPrefixes 0| Escape)}}" data-update-url="{{.Issue.Link}}/title">
  96. <a class="muted">
  97. {{.locale.Tr "repo.pulls.still_in_progress"}} {{.locale.Tr "repo.pulls.add_prefix" (index .PullRequestWorkInProgressPrefixes 0| Escape) | Safe}}
  98. </a>
  99. </div>
  100. {{end}}
  101. <div class="ui divider"></div>
  102. {{end}}
  103. {{template "repo/issue/labels/labels_selector_field" .}}
  104. {{template "repo/issue/labels/labels_sidebar" dict "root" $}}
  105. <div class="ui divider"></div>
  106. <div class="ui {{if or (not .HasIssuesOrPullsWritePermission) .Repository.IsArchived}}disabled{{end}} floating jump select-milestone dropdown">
  107. <a class="text gt-df gt-ac muted">
  108. <strong>{{.locale.Tr "repo.issues.new.milestone"}}</strong>
  109. {{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
  110. {{svg "octicon-gear" 16 "gt-ml-2"}}
  111. {{end}}
  112. </a>
  113. <div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/milestone">
  114. <div class="header" style="text-transform: none;font-size:16px;">{{.locale.Tr "repo.issues.new.add_milestone_title"}}</div>
  115. {{if or .OpenMilestones .ClosedMilestones}}
  116. <div class="ui icon search input">
  117. <i class="icon gt-df gt-ac gt-jc">{{svg "octicon-search" 16}}</i>
  118. <input type="text" placeholder="{{.locale.Tr "repo.issues.filter_milestones"}}">
  119. </div>
  120. {{end}}
  121. <div class="no-select item">{{.locale.Tr "repo.issues.new.clear_milestone"}}</div>
  122. {{if and (not .OpenMilestones) (not .ClosedMilestones)}}
  123. <div class="header" style="text-transform: none;font-size:14px;">
  124. {{.locale.Tr "repo.issues.new.no_items"}}
  125. </div>
  126. {{else}}
  127. {{if .OpenMilestones}}
  128. <div class="divider"></div>
  129. <div class="header">
  130. {{.locale.Tr "repo.issues.new.open_milestone"}}
  131. </div>
  132. {{range .OpenMilestones}}
  133. <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}">
  134. {{svg "octicon-milestone" 16 "gt-mr-2"}}
  135. {{.Name}}
  136. </a>
  137. {{end}}
  138. {{end}}
  139. {{if .ClosedMilestones}}
  140. <div class="divider"></div>
  141. <div class="header">
  142. {{.locale.Tr "repo.issues.new.closed_milestone"}}
  143. </div>
  144. {{range .ClosedMilestones}}
  145. <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}">
  146. {{svg "octicon-milestone" 16 "gt-mr-2"}}
  147. {{.Name}}
  148. </a>
  149. {{end}}
  150. {{end}}
  151. {{end}}
  152. </div>
  153. </div>
  154. <div class="ui select-milestone list">
  155. <span class="no-select item {{if .Issue.Milestone}}gt-hidden{{end}}">{{.locale.Tr "repo.issues.new.no_milestone"}}</span>
  156. <div class="selected">
  157. {{if .Issue.Milestone}}
  158. <a class="item muted sidebar-item-link" href="{{.RepoLink}}/milestone/{{.Issue.Milestone.ID}}">
  159. {{svg "octicon-milestone" 18 "gt-mr-3"}}
  160. {{.Issue.Milestone.Name}}
  161. </a>
  162. {{end}}
  163. </div>
  164. </div>
  165. {{if .IsProjectsEnabled}}
  166. <div class="ui divider"></div>
  167. <div class="ui {{if or (not .HasIssuesOrPullsWritePermission) .Repository.IsArchived}}disabled{{end}} floating jump select-project dropdown">
  168. <a class="text gt-df gt-ac muted">
  169. <strong>{{.locale.Tr "repo.issues.new.projects"}}</strong>
  170. {{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
  171. {{svg "octicon-gear" 16 "gt-ml-2"}}
  172. {{end}}
  173. </a>
  174. <div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/projects">
  175. <div class="header" style="text-transform: none;font-size:16px;">{{.locale.Tr "repo.issues.new.add_project_title"}}</div>
  176. {{if or .OpenProjects .ClosedProjects}}
  177. <div class="ui icon search input">
  178. <i class="icon gt-df gt-ac gt-jc">{{svg "octicon-search" 16}}</i>
  179. <input type="text" placeholder="{{.locale.Tr "repo.issues.filter_projects"}}">
  180. </div>
  181. {{end}}
  182. <div class="no-select item">{{.locale.Tr "repo.issues.new.clear_projects"}}</div>
  183. {{if .OpenProjects}}
  184. <div class="divider"></div>
  185. <div class="header">
  186. {{.locale.Tr "repo.issues.new.open_projects"}}
  187. </div>
  188. {{range .OpenProjects}}
  189. <a class="item muted sidebar-item-link" data-id="{{.ID}}" data-href="{{.Link}}">
  190. {{svg .IconName 18 "gt-mr-3"}}{{.Title}}
  191. </a>
  192. {{end}}
  193. {{end}}
  194. {{if .ClosedProjects}}
  195. <div class="divider"></div>
  196. <div class="header">
  197. {{.locale.Tr "repo.issues.new.closed_projects"}}
  198. </div>
  199. {{range .ClosedProjects}}
  200. <a class="item muted sidebar-item-link" data-id="{{.ID}}" data-href="{{.Link}}">
  201. {{svg .IconName 18 "gt-mr-3"}}{{.Title}}
  202. </a>
  203. {{end}}
  204. {{end}}
  205. </div>
  206. </div>
  207. <div class="ui select-project list">
  208. <span class="no-select item {{if .Issue.ProjectID}}gt-hidden{{end}}">{{.locale.Tr "repo.issues.new.no_projects"}}</span>
  209. <div class="selected">
  210. {{if .Issue.ProjectID}}
  211. <a class="item muted sidebar-item-link" href="{{.Issue.Project.Link}}">
  212. {{svg .Issue.Project.IconName 18 "gt-mr-3"}}{{.Issue.Project.Title}}
  213. </a>
  214. {{end}}
  215. </div>
  216. </div>
  217. {{end}}
  218. <div class="ui divider"></div>
  219. <input id="assignee_id" name="assignee_id" type="hidden" value="{{.assignee_id}}">
  220. <div class="ui {{if or (not .HasIssuesOrPullsWritePermission) .Repository.IsArchived}}disabled{{end}} floating jump select-assignees-modify dropdown">
  221. <a class="text gt-df gt-ac muted">
  222. <strong>{{.locale.Tr "repo.issues.new.assignees"}}</strong>
  223. {{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
  224. {{svg "octicon-gear" 16 "gt-ml-2"}}
  225. {{end}}
  226. </a>
  227. <div class="filter menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/assignee">
  228. <div class="header" style="text-transform: none;font-size:16px;">{{.locale.Tr "repo.issues.new.add_assignees_title"}}</div>
  229. <div class="ui icon search input">
  230. <i class="icon gt-df gt-ac gt-jc">{{svg "octicon-search" 16}}</i>
  231. <input type="text" placeholder="{{.locale.Tr "repo.issues.filter_assignees"}}">
  232. </div>
  233. <div class="no-select item">{{.locale.Tr "repo.issues.new.clear_assignees"}}</div>
  234. {{range .Assignees}}
  235. {{$AssigneeID := .ID}}
  236. <a class="item{{range $.Issue.Assignees}}{{if eq .ID $AssigneeID}} checked{{end}}{{end}}" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
  237. {{$checked := false}}
  238. {{range $.Issue.Assignees}}
  239. {{if eq .ID $AssigneeID}}
  240. {{$checked = true}}
  241. {{end}}
  242. {{end}}
  243. <span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
  244. <span class="text">
  245. {{avatar $.Context . 28 "gt-mr-3"}}{{template "repo/search_name" .}}
  246. </span>
  247. </a>
  248. {{end}}
  249. </div>
  250. </div>
  251. <div class="ui assignees list">
  252. <span class="no-select item {{if .Issue.Assignees}}gt-hidden{{end}}">{{.locale.Tr "repo.issues.new.no_assignees"}}</span>
  253. <div class="selected">
  254. {{range .Issue.Assignees}}
  255. <div class="item">
  256. <a class="muted sidebar-item-link" href="{{$.RepoLink}}/{{if $.Issue.IsPull}}pulls{{else}}issues{{end}}?assignee={{.ID}}">
  257. {{avatar $.Context . 28 "gt-mr-3"}}
  258. {{.GetDisplayName}}
  259. </a>
  260. </div>
  261. {{end}}
  262. </div>
  263. </div>
  264. <div class="ui divider"></div>
  265. {{if .Participants}}
  266. <span class="text"><strong>{{.locale.Tr "repo.issues.num_participants" .NumParticipants}}</strong></span>
  267. <div class="ui list gt-df gt-fw">
  268. {{range .Participants}}
  269. <a {{if gt .ID 0}}href="{{.HomeLink}}"{{end}} data-tooltip-content="{{.GetDisplayName}}">
  270. {{avatar $.Context . 28 "gt-my-1 gt-mr-2"}}
  271. </a>
  272. {{end}}
  273. </div>
  274. {{end}}
  275. {{if and $.IssueWatch (not .Repository.IsArchived)}}
  276. <div class="ui divider"></div>
  277. <div class="ui watching">
  278. <span class="text"><strong>{{.locale.Tr "notification.notifications"}}</strong></span>
  279. <div class="gt-mt-3">
  280. <form method="POST" action="{{.Issue.Link}}/watch">
  281. <input type="hidden" name="watch" value="{{if $.IssueWatch.IsWatching}}0{{else}}1{{end}}">
  282. {{$.CsrfTokenHtml}}
  283. <button class="fluid ui button gt-df gt-jc">
  284. {{if $.IssueWatch.IsWatching}}
  285. {{svg "octicon-mute" 16 "gt-mr-3"}}
  286. {{.locale.Tr "repo.issues.unsubscribe"}}
  287. {{else}}
  288. {{svg "octicon-unmute" 16 "gt-mr-3"}}
  289. {{.locale.Tr "repo.issues.subscribe"}}
  290. {{end}}
  291. </button>
  292. </form>
  293. </div>
  294. </div>
  295. {{end}}
  296. {{if .Repository.IsTimetrackerEnabled $.Context}}
  297. {{if and .CanUseTimetracker (not .Repository.IsArchived)}}
  298. <div class="ui divider"></div>
  299. <div class="ui timetrack">
  300. <span class="text"><strong>{{.locale.Tr "repo.issues.tracker"}}</strong></span>
  301. <div class="gt-mt-3">
  302. <form method="POST" action="{{.Issue.Link}}/times/stopwatch/toggle" id="toggle_stopwatch_form">
  303. {{$.CsrfTokenHtml}}
  304. </form>
  305. <form method="POST" action="{{.Issue.Link}}/times/stopwatch/cancel" id="cancel_stopwatch_form">
  306. {{$.CsrfTokenHtml}}
  307. </form>
  308. {{if $.IsStopwatchRunning}}
  309. <button class="ui fluid button issue-stop-time">{{.locale.Tr "repo.issues.stop_tracking"}}</button>
  310. <button class="ui fluid negative button issue-cancel-time gt-mt-3">{{.locale.Tr "repo.issues.cancel_tracking"}}</button>
  311. {{else}}
  312. {{if .HasUserStopwatch}}
  313. <div class="ui warning message">
  314. {{.locale.Tr "repo.issues.tracking_already_started" (.OtherStopwatchURL|Escape) | Safe}}
  315. </div>
  316. {{end}}
  317. <button class="ui fluid button issue-start-time" data-tooltip-content='{{.locale.Tr "repo.issues.start_tracking"}}'>{{.locale.Tr "repo.issues.start_tracking_short"}}</button>
  318. <div class="ui mini modal issue-start-time-modal">
  319. <div class="header">{{.locale.Tr "repo.issues.add_time"}}</div>
  320. <div class="content">
  321. <form method="POST" id="add_time_manual_form" action="{{.Issue.Link}}/times/add" class="ui action input fluid">
  322. {{$.CsrfTokenHtml}}
  323. <input placeholder='{{.locale.Tr "repo.issues.add_time_hours"}}' type="number" name="hours">
  324. <input placeholder='{{.locale.Tr "repo.issues.add_time_minutes"}}' type="number" name="minutes" class="ui compact">
  325. </form>
  326. </div>
  327. <div class="actions">
  328. <button class="ui green approve button">{{.locale.Tr "repo.issues.add_time_short"}}</button>
  329. <button class="ui red cancel button">{{.locale.Tr "repo.issues.add_time_cancel"}}</button>
  330. </div>
  331. </div>
  332. <button class="ui fluid button green issue-add-time gt-mt-3" data-tooltip-content='{{.locale.Tr "repo.issues.add_time"}}'>{{.locale.Tr "repo.issues.add_time_short"}}</button>
  333. {{end}}
  334. </div>
  335. </div>
  336. {{end}}
  337. {{if gt (len .WorkingUsers) 0}}
  338. <div class="ui divider"></div>
  339. <div class="ui comments">
  340. <span class="text"><strong>{{.locale.Tr "repo.issues.time_spent_from_all_authors" ($.Issue.TotalTrackedTime | Sec2Time) | Safe}}</strong></span>
  341. <div>
  342. {{range $user, $trackedtime := .WorkingUsers}}
  343. <div class="comment gt-mt-3">
  344. <a class="avatar">
  345. {{avatar $.Context $user}}
  346. </a>
  347. <div class="content">
  348. {{template "shared/user/authorlink" $user}}
  349. <div class="text">
  350. {{$trackedtime}}
  351. </div>
  352. </div>
  353. </div>
  354. {{end}}
  355. </div>
  356. </div>
  357. {{end}}
  358. {{end}}
  359. <div class="ui divider"></div>
  360. <span class="text"><strong>{{.locale.Tr "repo.issues.due_date"}}</strong></span>
  361. <div class="ui form" id="deadline-loader">
  362. <div class="ui negative message gt-hidden" id="deadline-err-invalid-date">
  363. {{svg "octicon-x" 16 "close icon"}}
  364. {{.locale.Tr "repo.issues.due_date_invalid"}}
  365. </div>
  366. {{if ne .Issue.DeadlineUnix 0}}
  367. <p>
  368. <div class="gt-df gt-sb gt-ac">
  369. <div class="due-date {{if .Issue.IsOverdue}}text red{{end}}" {{if .Issue.IsOverdue}}data-tooltip-content="{{.locale.Tr "repo.issues.due_date_overdue"}}"{{end}}>
  370. {{svg "octicon-calendar" 16 "gt-mr-3"}}
  371. <time data-format="date" datetime="{{.Issue.DeadlineUnix.FormatDate}}">{{.Issue.DeadlineUnix.FormatDate}}</time>
  372. </div>
  373. <div>
  374. {{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
  375. <a class="issue-due-edit muted" data-tooltip-content="{{$.locale.Tr "repo.issues.due_date_form_edit"}}">{{svg "octicon-pencil" 16 "gt-mr-2"}}</a>
  376. <a class="issue-due-remove muted" data-tooltip-content="{{$.locale.Tr "repo.issues.due_date_form_remove"}}">{{svg "octicon-trash"}}</a>
  377. {{end}}
  378. </div>
  379. </div>
  380. </p>
  381. {{else}}
  382. <p>{{.locale.Tr "repo.issues.due_date_not_set"}}</p>
  383. {{end}}
  384. {{if and .HasIssuesOrPullsWritePermission (not .Repository.IsArchived)}}
  385. <div {{if ne .Issue.DeadlineUnix 0}} class="gt-hidden"{{end}} id="deadlineForm">
  386. <form class="ui fluid action input issue-due-form" action="{{AppSubUrl}}/{{PathEscape .Repository.Owner.Name}}/{{PathEscape .Repository.Name}}/issues/{{.Issue.Index}}/deadline" method="post" id="update-issue-deadline-form">
  387. {{$.CsrfTokenHtml}}
  388. <input required placeholder="{{.locale.Tr "repo.issues.due_date_form"}}" {{if gt .Issue.DeadlineUnix 0}}value="{{.Issue.DeadlineUnix.Format "2006-01-02"}}"{{end}} type="date" name="deadlineDate" id="deadlineDate">
  389. <button class="ui green icon button">
  390. {{if ne .Issue.DeadlineUnix 0}}
  391. {{svg "octicon-pencil"}}
  392. {{else}}
  393. {{svg "octicon-plus"}}
  394. {{end}}
  395. </button>
  396. </form>
  397. </div>
  398. {{end}}
  399. </div>
  400. {{if .Repository.IsDependenciesEnabled $.Context}}
  401. <div class="ui divider"></div>
  402. <div class="ui depending">
  403. {{if (and (not .BlockedByDependencies) (not .BlockingDependencies))}}
  404. <span class="text"><strong>{{.locale.Tr "repo.issues.dependency.title"}}</strong></span>
  405. <br>
  406. <p>
  407. {{if .Issue.IsPull}}
  408. {{.locale.Tr "repo.issues.dependency.pr_no_dependencies"}}
  409. {{else}}
  410. {{.locale.Tr "repo.issues.dependency.issue_no_dependencies"}}
  411. {{end}}
  412. </p>
  413. {{end}}
  414. {{if .BlockingDependencies}}
  415. <span class="text" data-tooltip-content="{{if .Issue.IsPull}}{{.locale.Tr "repo.issues.dependency.pr_close_blocks"}}{{else}}{{.locale.Tr "repo.issues.dependency.issue_close_blocks"}}{{end}}">
  416. <strong>{{.locale.Tr "repo.issues.dependency.blocks_short"}}</strong>
  417. </span>
  418. <div class="ui relaxed divided list">
  419. {{range .BlockingDependencies}}
  420. <div class="item dependency{{if .Issue.IsClosed}} is-closed{{end}} gt-df gt-ac gt-sb">
  421. <div class="item-left gt-df gt-jc gt-fc gt-f1">
  422. <a class="title" href="{{.Issue.Link}}" data-tooltip-content="#{{.Issue.Index}} {{.Issue.Title | RenderEmoji $.Context}}">
  423. #{{.Issue.Index}} {{.Issue.Title | RenderEmoji $.Context}}
  424. </a>
  425. <div class="text small">
  426. {{.Repository.OwnerName}}/{{.Repository.Name}}
  427. </div>
  428. </div>
  429. <div class="item-right gt-df gt-ac">
  430. {{if and $.CanCreateIssueDependencies (not $.Repository.IsArchived)}}
  431. <a class="delete-dependency-button ci muted" data-id="{{.Issue.ID}}" data-type="blocking" data-tooltip-content="{{$.locale.Tr "repo.issues.dependency.remove_info"}}">
  432. {{svg "octicon-trash" 16}}
  433. </a>
  434. {{end}}
  435. </div>
  436. </div>
  437. {{end}}
  438. </div>
  439. {{end}}
  440. {{if .BlockedByDependencies}}
  441. <span class="text" data-tooltip-content="{{if .Issue.IsPull}}{{.locale.Tr "repo.issues.dependency.pr_closing_blockedby"}}{{else}}{{.locale.Tr "repo.issues.dependency.issue_closing_blockedby"}}{{end}}">
  442. <strong>{{.locale.Tr "repo.issues.dependency.blocked_by_short"}}</strong>
  443. </span>
  444. <div class="ui relaxed divided list">
  445. {{range .BlockedByDependencies}}
  446. <div class="item dependency{{if .Issue.IsClosed}} is-closed{{end}} gt-df gt-ac gt-sb">
  447. <div class="item-left gt-df gt-jc gt-fc gt-f1">
  448. <a class="title" href="{{.Issue.Link}}" data-tooltip-content="#{{.Issue.Index}} {{.Issue.Title | RenderEmoji $.Context}}">
  449. #{{.Issue.Index}} {{.Issue.Title | RenderEmoji $.Context}}
  450. </a>
  451. <div class="text small">
  452. {{.Repository.OwnerName}}/{{.Repository.Name}}
  453. </div>
  454. </div>
  455. <div class="item-right gt-df gt-ac">
  456. {{if and $.CanCreateIssueDependencies (not $.Repository.IsArchived)}}
  457. <a class="delete-dependency-button ci muted" data-id="{{.Issue.ID}}" data-type="blockedBy" data-tooltip-content="{{$.locale.Tr "repo.issues.dependency.remove_info"}}">
  458. {{svg "octicon-trash" 16}}
  459. </a>
  460. {{end}}
  461. </div>
  462. </div>
  463. {{end}}
  464. </div>
  465. {{end}}
  466. {{if and .CanCreateIssueDependencies (not .Repository.IsArchived)}}
  467. <div>
  468. <form method="POST" action="{{.Issue.Link}}/dependency/add" id="addDependencyForm">
  469. {{$.CsrfTokenHtml}}
  470. <div class="ui fluid action input">
  471. <div class="ui search selection dropdown" id="new-dependency-drop-list" data-issue-id="{{.Issue.ID}}">
  472. <input name="newDependency" type="hidden">
  473. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  474. <input type="text" class="search">
  475. <div class="default text">{{.locale.Tr "repo.issues.dependency.add"}}</div>
  476. </div>
  477. <button class="ui green icon button">
  478. {{svg "octicon-plus"}}
  479. </button>
  480. </div>
  481. </form>
  482. </div>
  483. {{end}}
  484. </div>
  485. {{if and .CanCreateIssueDependencies (not .Repository.IsArchived)}}
  486. <input type="hidden" id="crossRepoSearch" value="{{.AllowCrossRepositoryDependencies}}">
  487. <div class="ui basic modal remove-dependency">
  488. <div class="ui icon header">
  489. {{svg "octicon-trash"}}
  490. {{.locale.Tr "repo.issues.dependency.remove_header"}}
  491. </div>
  492. <div class="content">
  493. <form method="POST" action="{{.Issue.Link}}/dependency/delete" id="removeDependencyForm">
  494. {{$.CsrfTokenHtml}}
  495. <input type="hidden" value="" name="removeDependencyID" id="removeDependencyID">
  496. <input type="hidden" value="" name="dependencyType" id="dependencyType">
  497. </form>
  498. <p>{{if .Issue.IsPull}}
  499. {{.locale.Tr "repo.issues.dependency.pr_remove_text"}}
  500. {{else}}
  501. {{.locale.Tr "repo.issues.dependency.issue_remove_text"}}
  502. {{end}}</p>
  503. </div>
  504. <div class="actions">
  505. <button class="ui red cancel inverted button">
  506. {{svg "octicon-x"}}
  507. {{.locale.Tr "repo.issues.dependency.cancel"}}
  508. </button>
  509. <button class="ui green ok inverted button">
  510. {{svg "octicon-check"}}
  511. {{.locale.Tr "repo.issues.dependency.remove"}}
  512. </button>
  513. </div>
  514. </div>
  515. {{end}}
  516. {{end}}
  517. <div class="ui divider"></div>
  518. <div class="ui equal width compact grid">
  519. {{$issueReferenceLink := printf "%s#%d" .Issue.Repo.FullName .Issue.Index}}
  520. <div class="row gt-ac" data-tooltip-content="{{$issueReferenceLink}}">
  521. <span class="text column truncate">{{.locale.Tr "repo.issues.reference_link" $issueReferenceLink}}</span>
  522. <button class="ui two wide button column gt-p-3" data-clipboard-text="{{$issueReferenceLink}}">{{svg "octicon-copy" 14}}</button>
  523. </div>
  524. </div>
  525. {{if and .IsRepoAdmin (not .Repository.IsArchived)}}
  526. <div class="ui divider"></div>
  527. <div class="ui watching">
  528. <button class="fluid ui show-modal button {{if .Issue.IsLocked}} negative {{end}}" data-modal="#lock">
  529. {{if .Issue.IsLocked}}
  530. {{svg "octicon-key"}}
  531. {{.locale.Tr "repo.issues.unlock"}}
  532. {{else}}
  533. {{svg "octicon-lock"}}
  534. {{.locale.Tr "repo.issues.lock"}}
  535. {{end}}
  536. </button>
  537. </div>
  538. <div class="ui tiny modal" id="lock">
  539. <div class="header">
  540. {{if .Issue.IsLocked}}
  541. {{.locale.Tr "repo.issues.unlock.title"}}
  542. {{else}}
  543. {{.locale.Tr "repo.issues.lock.title"}}
  544. {{end}}
  545. </div>
  546. <div class="content">
  547. <div class="ui warning message text left">
  548. {{if .Issue.IsLocked}}
  549. {{.locale.Tr "repo.issues.unlock.notice_1"}}<br>
  550. {{.locale.Tr "repo.issues.unlock.notice_2"}}<br>
  551. {{else}}
  552. {{.locale.Tr "repo.issues.lock.notice_1"}}<br>
  553. {{.locale.Tr "repo.issues.lock.notice_2"}}<br>
  554. {{.locale.Tr "repo.issues.lock.notice_3"}}<br>
  555. {{end}}
  556. </div>
  557. <form class="ui form" action="{{.Issue.Link}}{{if .Issue.IsLocked}}/unlock{{else}}/lock{{end}}"
  558. method="post">
  559. {{.CsrfTokenHtml}}
  560. {{if not .Issue.IsLocked}}
  561. <div class="field">
  562. <strong> {{.locale.Tr "repo.issues.lock.reason"}} </strong>
  563. </div>
  564. <div class="field">
  565. <div class="ui fluid dropdown selection" tabindex="0">
  566. <select name="reason">
  567. <option value=""> </option>
  568. {{range .LockReasons}}
  569. <option value="{{.}}">{{.}}</option>
  570. {{end}}
  571. </select>
  572. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  573. <div class="default text"> </div>
  574. <div class="menu">
  575. {{range .LockReasons}}
  576. <div class="item" data-value="{{.}}">{{.}}</div>
  577. {{end}}
  578. </div>
  579. </div>
  580. </div>
  581. {{end}}
  582. <div class="text right actions">
  583. <button class="ui cancel button">{{.locale.Tr "settings.cancel"}}</button>
  584. <button class="ui red button">
  585. {{if .Issue.IsLocked}}
  586. {{.locale.Tr "repo.issues.unlock_confirm"}}
  587. {{else}}
  588. {{.locale.Tr "repo.issues.lock_confirm"}}
  589. {{end}}
  590. </button>
  591. </div>
  592. </form>
  593. </div>
  594. </div>
  595. <button class="fluid ui show-modal button negative gt-mt-3" data-modal="#delete">
  596. {{svg "octicon-trash"}}
  597. {{.locale.Tr "repo.issues.delete"}}
  598. </button>
  599. <div class="ui basic modal" id="delete">
  600. <div class="ui icon header">
  601. {{if .Issue.IsPull}}
  602. {{.locale.Tr "repo.pulls.delete.title"}}
  603. {{else}}
  604. {{.locale.Tr "repo.issues.delete.title"}}
  605. {{end}}
  606. </div>
  607. <div class="content center">
  608. <p>
  609. {{if .Issue.IsPull}}
  610. {{.locale.Tr "repo.pulls.delete.text"}}
  611. {{else}}
  612. {{.locale.Tr "repo.issues.delete.text"}}
  613. {{end}}
  614. </p>
  615. </div>
  616. <form action="{{.Issue.Link}}/delete" method="post">
  617. {{.CsrfTokenHtml}}
  618. <div class="center actions">
  619. <button class="ui basic cancel inverted button">{{.locale.Tr "settings.cancel"}}</button>
  620. <button class="ui basic red inverted button">{{.locale.Tr "modal.yes"}}</button>
  621. </div>
  622. </form>
  623. </div>
  624. {{end}}
  625. {{if and .Issue.IsPull .IsIssuePoster (not .Issue.IsClosed)}}
  626. {{if and (not (eq .Issue.PullRequest.HeadRepo.FullName .Issue.PullRequest.BaseRepo.FullName)) .CanWriteToHeadRepo}}
  627. <div class="ui divider"></div>
  628. <div class="inline field">
  629. <div class="ui checkbox" id="allow-edits-from-maintainers"
  630. data-url="{{.Issue.Link}}"
  631. data-tooltip-content="{{.locale.Tr "repo.pulls.allow_edits_from_maintainers_desc"}}"
  632. data-prompt-error="{{.locale.Tr "repo.pulls.allow_edits_from_maintainers_err"}}"
  633. >
  634. <label><strong>{{.locale.Tr "repo.pulls.allow_edits_from_maintainers"}}</strong></label>
  635. <input type="checkbox" {{if .Issue.PullRequest.AllowMaintainerEdit}}checked{{end}}>
  636. </div>
  637. </div>
  638. {{end}}
  639. {{end}}
  640. </div>
  641. </div>