boardsList.jade 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. template(name="boardList")
  2. .wrapper
  3. .board-list-header
  4. .boards-layout
  5. // Left menu
  6. .boards-left-menu
  7. ul.menu
  8. li(class="menu-item {{#if isSelectedMenu 'starred'}}active{{/if}}")
  9. a.js-select-menu(data-type="starred")
  10. span.menu-label ⭐ {{_ 'allboards.starred'}}
  11. span.menu-count {{menuItemCount 'starred'}}
  12. li(class="menu-item {{#if isSelectedMenu 'templates'}}active{{/if}}")
  13. a.js-select-menu(data-type="templates")
  14. span.menu-label 📋 {{_ 'allboards.templates'}}
  15. span.menu-count {{menuItemCount 'templates'}}
  16. li(class="menu-item {{#if isSelectedMenu 'remaining'}}active{{/if}}")
  17. a.js-select-menu(data-type="remaining")
  18. span.menu-label 📂 {{_ 'allboards.remaining'}}
  19. span.menu-count {{menuItemCount 'remaining'}}
  20. .workspaces-header
  21. span 🗂️ {{_ 'allboards.workspaces'}}
  22. a.js-add-workspace(title="{{_ 'allboards.add-workspace'}}") +
  23. // Workspaces tree
  24. +workspaceTree(nodes=workspacesTree selectedWorkspaceId=selectedWorkspaceId)
  25. // Existing filter by orgs/teams (kept)
  26. ul.AllBoardTeamsOrgs
  27. li.AllBoardTeams
  28. if userHasTeams
  29. select.js-AllBoardTeams#jsAllBoardTeams("multiple")
  30. option(value="-1") {{_ 'teams'}} :
  31. each teamsDatas
  32. option(value="{{teamId}}") {{_ teamDisplayName}}
  33. li.AllBoardOrgs
  34. if userHasOrgs
  35. select.js-AllBoardOrgs#jsAllBoardOrgs("multiple")
  36. option(value="-1") {{_ 'organizations'}} :
  37. each orgsDatas
  38. option(value="{{orgId}}") {{orgDisplayName}}
  39. li.AllBoardBtns
  40. div.AllBoardButtonsContainer
  41. if userHasOrgsOrTeams
  42. span 🔍
  43. input#filterBtn(type="button" value="{{_ 'filter'}}")
  44. button#resetBtn.filter-reset-btn
  45. span.reset-icon ❌
  46. span {{_ 'filter-clear'}}
  47. // Right boards grid
  48. .boards-right-grid
  49. .boards-path-header
  50. .path-left
  51. span.path-icon {{currentMenuPath.icon}}
  52. span.path-text {{currentMenuPath.text}}
  53. if BoardMultiSelection.isActive
  54. span.multiselection-hint 📌 {{_ 'multi-selection-active'}}
  55. .path-right
  56. if canModifyBoards
  57. if hasBoardsSelected
  58. button.js-archive-selected-boards.board-header-btn
  59. span 📦
  60. span {{_ 'archive-board'}}
  61. button.js-duplicate-selected-boards.board-header-btn
  62. span 📋
  63. span {{_ 'duplicate-board'}}
  64. a.board-header-btn.js-multiselection-activate(
  65. title="{{#if BoardMultiSelection.isActive}}{{_ 'multi-selection-on'}}{{else}}{{_ 'multi-selection'}}{{/if}}"
  66. class="{{#if BoardMultiSelection.isActive}}emphasis{{/if}}")
  67. | ☑️
  68. if BoardMultiSelection.isActive
  69. a.board-header-btn-close.js-multiselection-reset(title="{{_ 'filter-clear'}}")
  70. | ✖
  71. ul.board-list.clearfix.js-boards(class="{{#if isMiniScreen}}mobile-view{{/if}} {{#if BoardMultiSelection.isActive}}is-multiselection-active{{/if}}")
  72. li.js-add-board
  73. if isSelectedMenu 'templates'
  74. a.board-list-item.label(title="{{_ 'add-template-container'}}")
  75. | ➕ {{_ 'add-template-container'}}
  76. else
  77. a.board-list-item.label(title="{{_ 'add-board'}}")
  78. | ➕ {{_ 'add-board'}}
  79. each boards
  80. li.js-board(class="{{_id}} {{#if isStarred}}starred{{/if}} {{colorClass}} {{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}", draggable="true")
  81. if isInvited
  82. .board-list-item
  83. if BoardMultiSelection.isActive
  84. .materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
  85. class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
  86. span.details
  87. span.board-list-item-name= title
  88. span.js-star-board(
  89. class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
  90. title="{{_ 'star-board-title'}}")
  91. | {{#if isStarred}}⭐{{else}}☆{{/if}}
  92. p.board-list-item-desc {{_ 'just-invited'}}
  93. button.js-accept-invite.primary {{_ 'accept'}}
  94. button.js-decline-invite {{_ 'decline'}}
  95. else
  96. if $eq type "template-container"
  97. .template-container.board-list-item
  98. if BoardMultiSelection.isActive
  99. .materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
  100. class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
  101. span.board-handle(title="{{_ 'drag-board'}}") ↕️
  102. a.js-open-board(href="{{pathFor 'board' id=_id slug=slug}}")
  103. span.details
  104. span.board-list-item-name(title="{{_ 'template-container'}}")
  105. +viewer
  106. = title
  107. p.board-list-item-desc
  108. +viewer
  109. = description
  110. if hasSpentTimeCards
  111. span.js-has-spenttime-cards(
  112. class="{{#if hasOvertimeCards}}has-overtime-card-active{{else}}no-overtime-card-active{{/if}}"
  113. title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
  114. | ⏱️
  115. span.js-star-board(
  116. class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
  117. title="{{_ 'star-board-title'}}")
  118. | {{#if isStarred}}⭐{{else}}☆{{/if}}
  119. else
  120. .board-list-item
  121. if BoardMultiSelection.isActive
  122. .materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
  123. class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
  124. span.board-handle(title="{{_ 'drag-board'}}") ↕️
  125. a.js-open-board(href="{{pathFor 'board' id=_id slug=slug}}")
  126. span.details
  127. span.board-list-item-name(title="{{_ 'board-drag-drop-reorder-or-click-open'}}")
  128. +viewer
  129. = title
  130. unless currentSetting.hideBoardMemberList
  131. if allowsBoardMemberList
  132. .minicard-members
  133. each member in boardMembers _id
  134. a.name
  135. +userAvatar(userId=member noRemove=true)
  136. unless currentSetting.hideCardCounterList
  137. if allowsCardCounterList
  138. .minicard-lists.flex.flex-wrap
  139. each list in boardLists _id
  140. .item
  141. | {{ list }}
  142. p.board-list-item-desc
  143. +viewer
  144. = description
  145. if hasSpentTimeCards
  146. span.js-has-spenttime-cards(
  147. class="{{#if hasOvertimeCards}}has-overtime-card-active{{else}}no-overtime-card-active{{/if}}"
  148. title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
  149. | ⏱️
  150. a.js-star-board(
  151. class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
  152. title="{{_ 'star-board-title'}}")
  153. | {{#if isStarred}}⭐{{else}}☆{{/if}}
  154. template(name="boardListHeaderBar")
  155. h1 {{_ title }}
  156. //.board-header-btns.right
  157. // a.board-header-btn.js-open-archived-board
  158. // i.fa.fa-archive
  159. // span {{_ 'archives'}}
  160. // a.board-header-btn(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
  161. // i.fa.fa-clone
  162. // span {{_ 'templates'}}
  163. // Recursive template for workspaces tree
  164. template(name="workspaceTree")
  165. if nodes
  166. ul.workspace-tree.js-workspace-tree
  167. each nodes
  168. li.workspace-node(class="{{#if $eq id selectedWorkspaceId}}active{{/if}}" data-workspace-id="{{id}}" draggable="true")
  169. .workspace-node-content
  170. span.workspace-drag-handle ↕️
  171. a.js-select-workspace(data-id="{{id}}")
  172. span.workspace-icon
  173. if icon
  174. +viewer
  175. = icon
  176. else
  177. | 📁
  178. span.workspace-name= name
  179. a.js-edit-workspace(data-id="{{id}}" title="{{_ 'allboards.edit-workspace'}}") ✏️
  180. span.workspace-count {{workspaceCount id}}
  181. a.js-add-subworkspace(data-id="{{id}}" title="{{_ 'allboards.add-subworkspace'}}") +
  182. if children
  183. +workspaceTree(nodes=children selectedWorkspaceId=selectedWorkspaceId)