Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <div class="page-content repository projects view-project">
  2. <div class="ui container">
  3. <div class="ui two column stackable grid">
  4. <div class="column">
  5. </div>
  6. <div class="column right aligned">
  7. {{if .CanWriteProjects}}
  8. <a class="ui green button show-modal item" data-modal="#new-board-item">{{.locale.Tr "new_project_board"}}</a>
  9. {{end}}
  10. <div class="ui small modal new-board-modal" id="new-board-item">
  11. <div class="header">
  12. {{$.locale.Tr "repo.projects.board.new"}}
  13. </div>
  14. <div class="content">
  15. <form class="ui form">
  16. <div class="required field">
  17. <label for="new_board">{{$.locale.Tr "repo.projects.board.new_title"}}</label>
  18. <input class="new-board" id="new_board" name="title" required>
  19. </div>
  20. <div class="field color-field">
  21. <label for="new_board_color">{{$.locale.Tr "repo.projects.board.color"}}</label>
  22. <div class="color picker column">
  23. <input class="color-picker" maxlength="7" placeholder="#c320f6" id="new_board_color_picker" name="color">
  24. <div class="column precolors">
  25. {{template "repo/issue/label_precolors"}}
  26. </div>
  27. </div>
  28. </div>
  29. <div class="text right actions">
  30. <div class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</div>
  31. <button data-url="{{$.Link}}" class="ui green button" id="new_board_submit">{{$.locale.Tr "repo.projects.board.new_submit"}}</button>
  32. </div>
  33. </form>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. <div class="ui divider"></div>
  39. <div class="ui two column stackable grid">
  40. <div class="column">
  41. <h2 class="project-title">{{$.Project.Title}}</h2>
  42. <div class="content project-description">{{$.Project.RenderedContent|Str2html}}</div>
  43. </div>
  44. {{if or $.CanWriteIssues $.CanWritePulls}}
  45. <div class="column right aligned">
  46. <div class="ui compact right small menu">
  47. <a class="item" href="{{$.Link}}/edit" data-id={{$.Project.ID}} data-title={{$.Project.Title}}>
  48. {{svg "octicon-pencil"}}
  49. <span class="mx-3">{{$.locale.Tr "repo.issues.label_edit"}}</span>
  50. </a>
  51. {{if .Project.IsClosed}}
  52. <a class="item link-action" href data-url="{{$.Link}}/open">
  53. {{svg "octicon-check"}}
  54. <span class="mx-3">{{$.locale.Tr "repo.projects.open"}}</span>
  55. </a>
  56. {{else}}
  57. <a class="item link-action" href data-url="{{$.Link}}/close">
  58. {{svg "octicon-skip"}}
  59. <span class="mx-3">{{$.locale.Tr "repo.projects.close"}}</span>
  60. </a>
  61. {{end}}
  62. <a class="item delete-button" href="#" data-url="{{$.Link}}/delete" data-id="{{.Project.ID}}">
  63. {{svg "octicon-trash"}}
  64. <span class="mx-3">{{$.locale.Tr "repo.issues.label_delete"}}</span>
  65. </a>
  66. </div>
  67. </div>
  68. {{end}}
  69. </div>
  70. <div class="ui divider"></div>
  71. </div>
  72. <div class="ui container fluid padded" id="project-board">
  73. <div class="board">
  74. {{range $board := .Boards}}
  75. <div class="ui segment board-column" style="background: {{.Color}} !important;" data-id="{{.ID}}" data-sorting="{{.Sorting}}" data-url="{{$.Link}}/{{.ID}}">
  76. <div class="board-column-header df ac sb">
  77. <div class="ui large label board-label py-2">
  78. <div class="ui small circular grey label board-card-cnt">
  79. {{.NumIssues}}
  80. </div>
  81. {{.Title}}
  82. </div>
  83. {{if and $.CanWriteProjects (ne .ID 0)}}
  84. <div class="ui dropdown jump item tooltip">
  85. <div class="not-mobile px-3" tabindex="-1">
  86. {{svg "octicon-kebab-horizontal"}}
  87. </div>
  88. <div class="menu user-menu" tabindex="-1">
  89. <a class="item show-modal button" data-modal="#edit-project-board-modal-{{.ID}}">
  90. {{svg "octicon-pencil"}}
  91. {{$.locale.Tr "repo.projects.board.edit"}}
  92. </a>
  93. {{if not .Default}}
  94. <a class="item show-modal button" data-modal="#set-default-project-board-modal-{{.ID}}">
  95. {{svg "octicon-pin"}}
  96. {{$.locale.Tr "repo.projects.board.set_default"}}
  97. </a>
  98. {{end}}
  99. <a class="item show-modal button" data-modal="#delete-board-modal-{{.ID}}">
  100. {{svg "octicon-trash"}}
  101. {{$.locale.Tr "repo.projects.board.delete"}}
  102. </a>
  103. <div class="ui small modal edit-project-board" id="edit-project-board-modal-{{.ID}}">
  104. <div class="header">
  105. {{$.locale.Tr "repo.projects.board.edit"}}
  106. </div>
  107. <div class="content">
  108. <form class="ui form">
  109. <div class="required field">
  110. <label for="new_board_title">{{$.locale.Tr "repo.projects.board.edit_title"}}</label>
  111. <input class="project-board-title" id="new_board_title" name="title" value="{{.Title}}" required>
  112. </div>
  113. <div class="field color-field">
  114. <label for="new_board_color">{{$.locale.Tr "repo.projects.board.color"}}</label>
  115. <div class="color picker column">
  116. <input class="color-picker" maxlength="7" placeholder="#c320f6" id="new_board_color" name="color" value="{{.Color}}">
  117. <div class="column precolors">
  118. {{template "repo/issue/label_precolors"}}
  119. </div>
  120. </div>
  121. </div>
  122. <div class="text right actions">
  123. <div class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</div>
  124. <button data-url="{{$.Link}}/{{.ID}}" class="ui red button">{{$.locale.Tr "repo.projects.board.edit"}}</button>
  125. </div>
  126. </form>
  127. </div>
  128. </div>
  129. <div class="ui basic modal" id="set-default-project-board-modal-{{.ID}}">
  130. <div class="ui icon header">
  131. {{$.locale.Tr "repo.projects.board.set_default"}}
  132. </div>
  133. <div class="content center">
  134. <label>
  135. {{$.locale.Tr "repo.projects.board.set_default_desc"}}
  136. </label>
  137. </div>
  138. <div class="text right actions">
  139. <div class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</div>
  140. <button class="ui red button set-default-project-board" data-url="{{$.Link}}/{{.ID}}/default">{{$.locale.Tr "repo.projects.board.set_default"}}</button>
  141. </div>
  142. </div>
  143. <div class="ui basic modal" id="delete-board-modal-{{.ID}}">
  144. <div class="ui icon header">
  145. {{$.locale.Tr "repo.projects.board.delete"}}
  146. </div>
  147. <div class="content center">
  148. <label>
  149. {{$.locale.Tr "repo.projects.board.deletion_desc"}}
  150. </label>
  151. </div>
  152. <div class="text right actions">
  153. <div class="ui cancel button">{{$.locale.Tr "settings.cancel"}}</div>
  154. <button class="ui red button delete-project-board" data-url="{{$.Link}}/{{.ID}}">{{$.locale.Tr "repo.projects.board.delete"}}</button>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. {{end}}
  160. </div>
  161. <div class="ui divider"></div>
  162. <div class="ui cards board" data-url="{{$.Link}}/{{.ID}}" data-project="{{$.Project.ID}}" data-board="{{.ID}}" id="board_{{.ID}}">
  163. {{range (index $.IssuesMap .ID)}}
  164. <!-- start issue card -->
  165. <div class="card board-card" data-issue="{{.ID}}">
  166. <div class="content p-0">
  167. <div class="header">
  168. <span class="dif ac vm {{if .IsClosed}}red{{else}}green{{end}}">
  169. {{if .IsPull}}
  170. {{if .PullRequest.HasMerged}}
  171. {{svg "octicon-git-merge" 16 "text purple"}}
  172. {{else}}
  173. {{if .IsClosed}}
  174. {{svg "octicon-git-pull-request" 16 "text red"}}
  175. {{else}}
  176. {{svg "octicon-git-pull-request" 16 "text green"}}
  177. {{end}}
  178. {{end}}
  179. {{else}}
  180. {{if .IsClosed}}
  181. {{svg "octicon-issue-closed" 16 "text red"}}
  182. {{else}}
  183. {{svg "octicon-issue-opened" 16 "text green"}}
  184. {{end}}
  185. {{end}}
  186. </span>
  187. <a class="project-board-title vm" href="{{.Link}}">
  188. {{.Title}}
  189. </a>
  190. </div>
  191. <div class="meta my-2">
  192. <span class="text light grey">
  193. {{.Repo.FullName}}#{{.Index}}
  194. {{$timeStr := TimeSinceUnix .GetLastEventTimestamp $.locale}}
  195. {{if .OriginalAuthor}}
  196. {{$.locale.Tr .GetLastEventLabelFake $timeStr (.OriginalAuthor|Escape) | Safe}}
  197. {{else if gt .Poster.ID 0}}
  198. {{$.locale.Tr .GetLastEventLabel $timeStr (.Poster.HomeLink|Escape) (.Poster.GetDisplayName | Escape) | Safe}}
  199. {{else}}
  200. {{$.locale.Tr .GetLastEventLabelFake $timeStr (.Poster.GetDisplayName | Escape) | Safe}}
  201. {{end}}
  202. </span>
  203. </div>
  204. {{- if .MilestoneID}}
  205. <div class="meta my-2">
  206. <a class="milestone" href="{{$.RepoLink}}/milestone/{{.MilestoneID}}">
  207. {{svg "octicon-milestone" 16 "mr-2 vm"}}
  208. <span class="vm">{{.Milestone.Name}}</span>
  209. </a>
  210. </div>
  211. {{- end}}
  212. {{- range index $.LinkedPRs .ID}}
  213. <div class="meta my-2">
  214. <a href="{{$.RepoLink}}/pulls/{{.Index}}">
  215. <span class="m-0 {{if .PullRequest.HasMerged}}purple{{else if .IsClosed}}red{{else}}green{{end}}">{{svg "octicon-git-merge" 16 "mr-2 vm"}}</span>
  216. <span class="vm">{{.Title}} <span class="text light grey">#{{.Index}}</span></span>
  217. </a>
  218. </div>
  219. {{- end}}
  220. </div>
  221. {{if or .Labels .Assignees}}
  222. <div class="extra content labels-list p-0 pt-2">
  223. {{range .Labels}}
  224. <a class="ui label" target="_blank" href="{{$.RepoLink}}/issues?labels={{.ID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}};" title="{{.Description | RenderEmojiPlain}}">{{.Name | RenderEmoji}}</a>
  225. {{end}}
  226. <div class="right floated">
  227. {{range .Assignees}}
  228. <a class="tooltip" target="_blank" href="{{.HTMLURL}}" data-content="{{$.locale.Tr "repo.projects.board.assigned_to"}} {{.Name}}">{{avatar . 28 "mini mr-3"}}</a>
  229. {{end}}
  230. </div>
  231. </div>
  232. {{end}}
  233. </div>
  234. <!-- stop issue card -->
  235. {{end}}
  236. </div>
  237. </div>
  238. {{end}}
  239. </div>
  240. </div>
  241. </div>
  242. {{if or .CanWriteIssues .CanWritePulls}}
  243. <div class="ui small basic delete modal">
  244. <div class="ui icon header">
  245. {{svg "octicon-trash"}}
  246. {{.locale.Tr "repo.projects.deletion"}}
  247. </div>
  248. <div class="content">
  249. <p>{{.locale.Tr "repo.projects.deletion_desc"}}</p>
  250. </div>
  251. <div class="actions">
  252. <div class="ui red basic inverted cancel button">
  253. <i class="remove icon"></i>
  254. {{.locale.Tr "modal.no"}}
  255. </div>
  256. <div class="ui green basic inverted ok button">
  257. <i class="checkmark icon"></i>
  258. {{.locale.Tr "modal.yes"}}
  259. </div>
  260. </div>
  261. </div>
  262. {{end}}