gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. {{$canWriteProject := and .CanWriteProjects (or (not .Repository) (not .Repository.IsArchived))}}
  2. <div class="ui container fluid padded projects-view">
  3. <div class="ui container flex-text-block project-header">
  4. <h2>{{.Project.Title}}</h2>
  5. <div class="tw-flex-1"></div>
  6. <div class="ui secondary menu tw-m-0">
  7. {{$queryLink := QueryBuild "?" "labels" .SelectLabels "assignee" $.AssigneeID "archived_labels" (Iif $.ShowArchivedLabels "true")}}
  8. {{template "repo/issue/filter_item_label" dict "Labels" .Labels "QueryLink" $queryLink "SupportArchivedLabel" true}}
  9. {{template "repo/issue/filter_item_user_assign" dict
  10. "QueryParamKey" "assignee"
  11. "QueryLink" $queryLink
  12. "UserSearchList" $.Assignees
  13. "SelectedUserId" $.AssigneeID
  14. "TextFilterTitle" (ctx.Locale.Tr "repo.issues.filter_assignee")
  15. "TextFilterMatchNone" (ctx.Locale.Tr "repo.issues.filter_assignee_no_assignee")
  16. "TextFilterMatchAny" (ctx.Locale.Tr "repo.issues.filter_assignee_any_assignee")
  17. }}
  18. </div>
  19. {{if $canWriteProject}}
  20. <div class="ui compact mini menu">
  21. <a class="item screen-full">
  22. {{svg "octicon-screen-full"}}
  23. {{ctx.Locale.Tr "projects.enter_fullscreen"}}
  24. </a>
  25. <a class="item screen-normal tw-hidden">
  26. {{svg "octicon-screen-normal"}}
  27. {{ctx.Locale.Tr "projects.exit_fullscreen"}}
  28. </a>
  29. <a class="item" href="{{.Link}}/edit?redirect=project">
  30. {{svg "octicon-pencil"}}
  31. {{ctx.Locale.Tr "repo.issues.label_edit"}}
  32. </a>
  33. {{if .Project.IsClosed}}
  34. <button class="item btn link-action" data-url="{{.Link}}/open">
  35. {{svg "octicon-check"}}
  36. {{ctx.Locale.Tr "repo.projects.open"}}
  37. </button>
  38. {{else}}
  39. <button class="item btn link-action" data-url="{{.Link}}/close">
  40. {{svg "octicon-skip"}}
  41. {{ctx.Locale.Tr "repo.projects.close"}}
  42. </button>
  43. {{end}}
  44. <button class="item btn link-action" data-url="{{.Link}}/delete?id={{.Project.ID}}"
  45. data-modal-confirm-header="{{ctx.Locale.Tr "repo.projects.deletion"}}"
  46. data-modal-confirm-content="{{ctx.Locale.Tr "repo.projects.deletion_desc"}}"
  47. >
  48. {{svg "octicon-trash"}}
  49. {{ctx.Locale.Tr "repo.issues.label_delete"}}
  50. </button>
  51. <button class="item btn show-modal show-project-column-modal-edit" data-modal="#project-column-modal-edit"
  52. data-modal-header="{{ctx.Locale.Tr "repo.projects.column.new"}}"
  53. data-modal-project-column-title-label="{{ctx.Locale.Tr "repo.projects.column.new_title"}}"
  54. data-modal-project-column-button-save="{{ctx.Locale.Tr "repo.projects.column.new_submit"}}"
  55. data-modal-project-column-id=""
  56. data-modal-project-column-title-input=""
  57. data-modal-project-column-color-input=""
  58. >
  59. {{svg "octicon-plus"}}
  60. {{ctx.Locale.Tr "new_project_column"}}
  61. </button>
  62. </div>
  63. {{end}}
  64. </div>
  65. <div class="ui container project-description">
  66. {{$.Project.RenderedContent}}
  67. <div class="divider"></div>
  68. </div>
  69. <div id="project-board" class="board {{if $canWriteProject}}sortable{{end}}" data-project-borad-writable="{{$canWriteProject}}" {{if $canWriteProject}}data-url="{{$.Link}}/move"{{end}}>
  70. {{range .Columns}}
  71. <div class="project-column" {{if .Color}}style="background: {{.Color}} !important; color: {{ContrastColor .Color}} !important"{{end}} data-id="{{.ID}}" data-sorting="{{.Sorting}}" data-url="{{$.Link}}/{{.ID}}">
  72. <div class="project-column-header{{if $canWriteProject}} tw-cursor-grab{{end}}">
  73. <div class="ui circular label project-column-issue-count">
  74. {{.NumIssues}}
  75. </div>
  76. <div class="project-column-title-text gt-ellipsis">{{.Title}}</div>
  77. {{if $canWriteProject}}
  78. <div class="ui dropdown tw-p-1">
  79. {{svg "octicon-kebab-horizontal"}}
  80. <div class="menu">
  81. <a class="item button show-modal show-project-column-modal-edit" data-modal="#project-column-modal-edit"
  82. data-modal-header="{{ctx.Locale.Tr "repo.projects.column.edit"}}"
  83. data-modal-project-column-title-label="{{ctx.Locale.Tr "repo.projects.column.edit_title"}}"
  84. data-modal-project-column-button-save="{{ctx.Locale.Tr "repo.projects.column.edit"}}"
  85. data-modal-project-column-id="{{.ID}}"
  86. data-modal-project-column-title-input="{{.Title}}"
  87. data-modal-project-column-color-input="{{.Color}}"
  88. >
  89. {{svg "octicon-pencil"}} {{ctx.Locale.Tr "repo.projects.column.edit"}}
  90. </a>
  91. {{if not .Default}}
  92. <a class="item button link-action" data-url="{{$.Link}}/{{.ID}}/default"
  93. data-modal-confirm-header="{{ctx.Locale.Tr "repo.projects.column.set_default"}}"
  94. data-modal-confirm-content="{{ctx.Locale.Tr "repo.projects.column.set_default_desc"}}"
  95. >
  96. {{svg "octicon-pin"}} {{ctx.Locale.Tr "repo.projects.column.set_default"}}
  97. </a>
  98. <a class="item button link-action" data-url="{{$.Link}}/{{.ID}}" data-link-action-method="DELETE"
  99. data-modal-confirm-header="{{ctx.Locale.Tr "repo.projects.column.delete"}}"
  100. data-modal-confirm-content="{{ctx.Locale.Tr "repo.projects.column.deletion_desc"}}"
  101. >
  102. {{svg "octicon-trash"}} {{ctx.Locale.Tr "repo.projects.column.delete"}}
  103. </a>
  104. {{end}}
  105. </div>
  106. </div>
  107. {{end}}
  108. </div>
  109. <div class="divider"{{if .Color}} style="color: {{ContrastColor .Color}} !important"{{end}}></div>
  110. <div class="ui cards" data-url="{{$.Link}}/{{.ID}}" data-project="{{$.Project.ID}}" data-board="{{.ID}}" id="board_{{.ID}}">
  111. {{range (index $.IssuesMap .ID)}}
  112. <div class="issue-card tw-break-anywhere {{if $canWriteProject}}tw-cursor-grab{{end}}" data-issue="{{.ID}}">
  113. {{template "repo/issue/card" (dict "Issue" . "Page" $)}}
  114. </div>
  115. {{end}}
  116. </div>
  117. </div>
  118. {{end}}
  119. </div>
  120. </div>
  121. {{if $canWriteProject}}
  122. <div class="ui small modal" id="project-column-modal-edit">
  123. <div class="header">edit</div>
  124. <div class="content">
  125. <form class="ui form ignore-dirty" method="post" data-action-base-link="{{$.Link}}">
  126. <input class="project-column-id" type="hidden" name="id">
  127. <div class="required field">
  128. <label class="project-column-title-label" for="project-column-title-input">title</label>
  129. <input id="project-column-title-input" name="title" required>
  130. </div>
  131. <div class="field">
  132. <label class="project-column-color-label" for="project-column-color-input">color</label>
  133. <div class="color-picker-combo" data-global-init="initColorPicker">
  134. <input maxlength="7" placeholder="#c320f6" id="project-column-color-input" name="color">
  135. {{template "repo/issue/label_precolors"}}
  136. </div>
  137. </div>
  138. <div class="actions">
  139. <button class="ui cancel button">{{ctx.Locale.Tr "settings.cancel"}}</button>
  140. <button type="submit" class="ui primary button project-column-button-save">save</button>
  141. </div>
  142. </form>
  143. </div>
  144. </div>
  145. {{end}}